一幔欧、Memcache
- Memcache就是一個(gè)數(shù)據(jù)庫(kù)、數(shù)據(jù)存在內(nèi)存中丽声。常用來(lái)做緩存服務(wù)器礁蔗。將從數(shù)據(jù)庫(kù)查詢的數(shù)據(jù)緩存起來(lái),減少數(shù)據(jù)庫(kù)查詢雁社、加快查詢速度浴井。
- 明確使用場(chǎng)景:緩存服務(wù)器
- 適合存儲(chǔ)的數(shù)據(jù):
- 訪問(wèn)比較頻繁的數(shù)據(jù),安全性差的數(shù)據(jù)霉撵,丟失無(wú)所謂的數(shù)據(jù)磺浙。
- 數(shù)據(jù)更新洪囤,比較頻繁的數(shù)據(jù),比如用戶的在線狀態(tài)撕氧。
- 數(shù)據(jù)的單個(gè)鍵值不能太大瘤缩,不要超過(guò)1Mb數(shù)據(jù)。
Memcache跟Redis區(qū)別
【持久化能力】Redis支持持久化可以存到磁盤伦泥,memcache也支持但一般不做持久化(重啟丟失數(shù)據(jù))
【數(shù)據(jù)類型支持】Redis類型較多(5種數(shù)據(jù)類型款咖,string、list奄喂、hash、set海洼、sorted set)跨新,memcache只能是字符串
【線程模型】Redis是單線程+多路IO復(fù)用,雖然沒(méi)有鎖沖突坏逢,但很難利用多核特性提升整體吞吐量域帐。memecache是多線程+鎖的方式,主線程監(jiān)聽是整,work子線程接收請(qǐng)求肖揣,執(zhí)行讀寫,有鎖沖突浮入。
【數(shù)據(jù)庫(kù)特征】Redis不是所有的數(shù)據(jù)都存儲(chǔ)在內(nèi)存龙优,在很多方面具備數(shù)據(jù)庫(kù)的特征,memcache只是簡(jiǎn)單的kv緩存事秀;相當(dāng)于memchache更像是redis在功能上的一個(gè)子集彤断。
【內(nèi)容大小比較】redis存儲(chǔ)的內(nèi)容比較大(memcache的value存儲(chǔ)最大是1M,如果存儲(chǔ)value很大易迹,只能選擇redis)
【內(nèi)存分配】memchache使用預(yù)分配內(nèi)存池的方式管理內(nèi)存宰衙,能夠省區(qū)內(nèi)存分配的時(shí)間,這個(gè)節(jié)省的時(shí)間在數(shù)據(jù)量很大的時(shí)候還是很可觀的睹欲。而redis則是臨時(shí)申請(qǐng)空間供炼,可能導(dǎo)致碎片。Redis和Memcache在寫入性能上面差別不大的窘疮,讀取性能上面尤其是批量讀取性能上面Memcache更強(qiáng)的袋哼。
【高可用支持】高可用(redis原生支持高可用功能,可以實(shí)現(xiàn)主從復(fù)制考余,哨兵模式先嬉,redis集群模式,而memcache要實(shí)現(xiàn)高可用楚堤,需要進(jìn)行二次開發(fā)疫蔓,例如客戶端的雙讀雙寫含懊,或者服務(wù)端的集群同步)
(延伸:雖然數(shù)據(jù)類型單一,但是memcache的內(nèi)存管理機(jī)制導(dǎo)致無(wú)碎片衅胀,這讓memcache工作更加穩(wěn)定岔乔,而redis本身也考慮到自己功能復(fù)雜,會(huì)產(chǎn)生碎片滚躯,并且容易崩潰)
二雏门、PHP測(cè)試框架Codeception
- Codeception是PHP全棧測(cè)試框架,在這個(gè)框架中分別提供了編寫單元測(cè)試掸掏、功能測(cè)試茁影、驗(yàn)收測(cè)試的工具。
1丧凤、驗(yàn)收測(cè)試(Acceptance Tests)
- 驗(yàn)收測(cè)試能以用戶標(biāo)準(zhǔn)和復(fù)雜的場(chǎng)景角度下通過(guò)所有定義的驗(yàn)收測(cè)試場(chǎng)景募闲,任何網(wǎng)站都可以被驗(yàn)收測(cè)試(acceptance tests)所覆蓋。
優(yōu)點(diǎn)
- 任何網(wǎng)站都能做
- 能測(cè)試JavaScript和ajax請(qǐng)求
- 可以拿給你的客戶和經(jīng)理看
- 大部分的支持都是穩(wěn)定的:源代碼或技術(shù)改動(dòng)影響很小
缺點(diǎn)
- 非常慢:包括運(yùn)行瀏覽器和數(shù)據(jù)庫(kù)填充
- 檢查少了可能會(huì)導(dǎo)致不靠譜(false-positive)的結(jié)果
- 執(zhí)行不穩(wěn)定:渲染和JavaScript的問(wèn)題可能會(huì)導(dǎo)致不可預(yù)知的結(jié)果
2愿待、功能測(cè)試(Functional Tests)
- 功能測(cè)試要求你模仿一個(gè)web請(qǐng)求($_GET 和 $_POST 變量)發(fā)送到你的應(yīng)用程序并且返回一個(gè)HTML響應(yīng)浩螺,在一個(gè)測(cè)試?yán)锩婺憧梢詫?duì)響應(yīng)做出斷言,以及檢查數(shù)據(jù)是否正確存儲(chǔ)到數(shù)據(jù)庫(kù)中了仍侥。
為了做功能測(cè)試要出,你的應(yīng)用程序需要運(yùn)行在一個(gè)事先準(zhǔn)備的測(cè)試環(huán)境中,Codeception提供了幾種流行的PHP框架的連接器农渊,但是沒(méi)有ThinkPHP的患蹂,需要單獨(dú)寫。
優(yōu)點(diǎn)
- 像驗(yàn)收測(cè)試砸紊,但是更快
- 可以提供更詳細(xì)的報(bào)告
- 足夠穩(wěn)定:只有大版本修改况脆,或者移動(dòng)到其它框架才會(huì)影響到他們
缺點(diǎn)
- JavaScript和Ajax不受影響
- 需要一個(gè)事先準(zhǔn)備的測(cè)試環(huán)境
3、單元測(cè)試(Unit Tests)
- Codeception是在PHPUnit上創(chuàng)建的批糟,兼容PHPUnit格了,同事提供了一些精心打造的功能使你的單元測(cè)試更加簡(jiǎn)單更整潔。
優(yōu)點(diǎn)
- 最快
- 可覆蓋到很少用到的特性
- 可以測(cè)試出應(yīng)用程序核心的穩(wěn)定性
缺點(diǎn)
- 沒(méi)有測(cè)試單元之間的連接
- 支持不穩(wěn)定徽鼎,代碼如果修改了盛末,測(cè)試用例也要改
三、Keepalived+LVS+MySQL雙主復(fù)制實(shí)現(xiàn)讀寫負(fù)載均衡及高可用
Keepalived(防止單點(diǎn)故障)
- Keepalived的作用是檢測(cè)服務(wù)器的狀態(tài)否淤,如果有一臺(tái)服務(wù)器宕機(jī)悄但,或工作出現(xiàn)故障,Keepalived將檢測(cè)到石抡,并將有故障的服務(wù)器從系統(tǒng)中剔除檐嚣,同時(shí)使用其它服務(wù)器代替該服務(wù)器的工作,當(dāng)服務(wù)器工作正常后Keepalived自動(dòng)將服務(wù)器加入到服務(wù)器群中啰扛,這些工作全部自動(dòng)完成嚎京,不需要人工干涉嗡贺,需要人工做的只是修復(fù)故障的服務(wù)器。
- Keepalived原理:使用的是VRRP協(xié)議鞍帝。
LVS(負(fù)載均衡)
- LVS:(Linux Virtual Server)是一個(gè)高可用性虛擬的服務(wù)器集群系統(tǒng)诫睬。LVS主要用于多服務(wù)器的負(fù)載均衡,作用于網(wǎng)絡(luò)層帕涌。LVS構(gòu)建的服務(wù)器集群系統(tǒng)中摄凡,前端的負(fù)載均衡層被稱為Director Server,后端提供服務(wù)的服務(wù)器組層被稱為Real Server蚓曼。
lvs 與 nginx 對(duì)比亲澡?
- 負(fù)載度 lvs 優(yōu)于 nginx
- 穩(wěn)定度 lvs 優(yōu)于 nginx
- 服務(wù)器性能要求 lvs 優(yōu)于 nginx
- 網(wǎng)絡(luò)層數(shù)的效率 lvs 優(yōu)于 nginx
- 功能多少 nginx 優(yōu)于 lvs
應(yīng)用場(chǎng)景
- 大型網(wǎng)站負(fù)載均衡
- 詳細(xì)安裝配置教程
四、AWVS
- Acunetix Web Vulnerability Scanner(簡(jiǎn)稱AWVS)是一款知名的Web網(wǎng)絡(luò)漏洞掃描工具纫版,它通過(guò)網(wǎng)絡(luò)爬蟲測(cè)試你的網(wǎng)站安全谷扣,檢測(cè)流行安全漏洞。