一、Memcache
- Memcache就是一個數(shù)據(jù)庫、數(shù)據(jù)存在內(nèi)存中。常用來做緩存服務(wù)器。將從數(shù)據(jù)庫查詢的數(shù)據(jù)緩存起來,減少數(shù)據(jù)庫查詢、加快查詢速度。
- 明確使用場景:緩存服務(wù)器
- 適合存儲的數(shù)據(jù):
- 訪問比較頻繁的數(shù)據(jù),安全性差的數(shù)據(jù),丟失無所謂的數(shù)據(jù)。
- 數(shù)據(jù)更新,比較頻繁的數(shù)據(jù),比如用戶的在線狀態(tài)。
- 數(shù)據(jù)的單個鍵值不能太大,不要超過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ù)用,雖然沒有鎖沖突,但很難利用多核特性提升整體吞吐量。memecache是多線程+鎖的方式,主線程監(jiān)聽,work子線程接收請求,執(zhí)行讀寫,有鎖沖突。
【數(shù)據(jù)庫特征】Redis不是所有的數(shù)據(jù)都存儲在內(nèi)存,在很多方面具備數(shù)據(jù)庫的特征,memcache只是簡單的kv緩存;相當(dāng)于memchache更像是redis在功能上的一個子集。
【內(nèi)容大小比較】redis存儲的內(nèi)容比較大(memcache的value存儲最大是1M,如果存儲value很大,只能選擇redis)
【內(nèi)存分配】memchache使用預(yù)分配內(nèi)存池的方式管理內(nèi)存,能夠省區(qū)內(nèi)存分配的時間,這個節(jié)省的時間在數(shù)據(jù)量很大的時候還是很可觀的。而redis則是臨時申請空間,可能導(dǎo)致碎片。Redis和Memcache在寫入性能上面差別不大的,讀取性能上面尤其是批量讀取性能上面Memcache更強的。
【高可用支持】高可用(redis原生支持高可用功能,可以實現(xiàn)主從復(fù)制,哨兵模式,redis集群模式,而memcache要實現(xiàn)高可用,需要進行二次開發(fā),例如客戶端的雙讀雙寫,或者服務(wù)端的集群同步)
(延伸:雖然數(shù)據(jù)類型單一,但是memcache的內(nèi)存管理機制導(dǎo)致無碎片,這讓memcache工作更加穩(wěn)定,而redis本身也考慮到自己功能復(fù)雜,會產(chǎn)生碎片,并且容易崩潰)
二、PHP測試框架Codeception
- Codeception是PHP全棧測試框架,在這個框架中分別提供了編寫單元測試、功能測試、驗收測試的工具。
1、驗收測試(Acceptance Tests)
- 驗收測試能以用戶標準和復(fù)雜的場景角度下通過所有定義的驗收測試場景,任何網(wǎng)站都可以被驗收測試(acceptance tests)所覆蓋。
優(yōu)點
- 任何網(wǎng)站都能做
- 能測試JavaScript和ajax請求
- 可以拿給你的客戶和經(jīng)理看
- 大部分的支持都是穩(wěn)定的:源代碼或技術(shù)改動影響很小
缺點
- 非常慢:包括運行瀏覽器和數(shù)據(jù)庫填充
- 檢查少了可能會導(dǎo)致不靠譜(false-positive)的結(jié)果
- 執(zhí)行不穩(wěn)定:渲染和JavaScript的問題可能會導(dǎo)致不可預(yù)知的結(jié)果
2、功能測試(Functional Tests)
- 功能測試要求你模仿一個web請求($_GET 和 $_POST 變量)發(fā)送到你的應(yīng)用程序并且返回一個HTML響應(yīng),在一個測試里面你可以對響應(yīng)做出斷言,以及檢查數(shù)據(jù)是否正確存儲到數(shù)據(jù)庫中了。
為了做功能測試,你的應(yīng)用程序需要運行在一個事先準備的測試環(huán)境中,Codeception提供了幾種流行的PHP框架的連接器,但是沒有ThinkPHP的,需要單獨寫。
優(yōu)點
- 像驗收測試,但是更快
- 可以提供更詳細的報告
- 足夠穩(wěn)定:只有大版本修改,或者移動到其它框架才會影響到他們
缺點
- JavaScript和Ajax不受影響
- 需要一個事先準備的測試環(huán)境
3、單元測試(Unit Tests)
- Codeception是在PHPUnit上創(chuàng)建的,兼容PHPUnit,同事提供了一些精心打造的功能使你的單元測試更加簡單更整潔。
優(yōu)點
- 最快
- 可覆蓋到很少用到的特性
- 可以測試出應(yīng)用程序核心的穩(wěn)定性
缺點
- 沒有測試單元之間的連接
- 支持不穩(wěn)定,代碼如果修改了,測試用例也要改
三、Keepalived+LVS+MySQL雙主復(fù)制實現(xiàn)讀寫負載均衡及高可用
Keepalived(防止單點故障)
- Keepalived的作用是檢測服務(wù)器的狀態(tài),如果有一臺服務(wù)器宕機,或工作出現(xiàn)故障,Keepalived將檢測到,并將有故障的服務(wù)器從系統(tǒng)中剔除,同時使用其它服務(wù)器代替該服務(wù)器的工作,當(dāng)服務(wù)器工作正常后Keepalived自動將服務(wù)器加入到服務(wù)器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復(fù)故障的服務(wù)器。
- Keepalived原理:使用的是VRRP協(xié)議。
LVS(負載均衡)
- LVS:(Linux Virtual Server)是一個高可用性虛擬的服務(wù)器集群系統(tǒng)。LVS主要用于多服務(wù)器的負載均衡,作用于網(wǎng)絡(luò)層。LVS構(gòu)建的服務(wù)器集群系統(tǒng)中,前端的負載均衡層被稱為Director Server,后端提供服務(wù)的服務(wù)器組層被稱為Real Server。
lvs 與 nginx 對比?
- 負載度 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)用場景
- 大型網(wǎng)站負載均衡
- 詳細安裝配置教程
四、AWVS
- Acunetix Web Vulnerability Scanner(簡稱AWVS)是一款知名的Web網(wǎng)絡(luò)漏洞掃描工具,它通過網(wǎng)絡(luò)爬蟲測試你的網(wǎng)站安全,檢測流行安全漏洞。