Memcache、Codeception、Keepalived+LVS、AWVS

一、Memcache

  • Memcache就是一個數(shù)據(jù)庫、數(shù)據(jù)存在內(nèi)存中。常用來做緩存服務(wù)器。將從數(shù)據(jù)庫查詢的數(shù)據(jù)緩存起來,減少數(shù)據(jù)庫查詢、加快查詢速度。
  • 明確使用場景:緩存服務(wù)器
  • 適合存儲的數(shù)據(jù):
  1. 訪問比較頻繁的數(shù)據(jù),安全性差的數(shù)據(jù),丟失無所謂的數(shù)據(jù)。
  2. 數(shù)據(jù)更新,比較頻繁的數(shù)據(jù),比如用戶的在線狀態(tài)。
  3. 數(shù)據(jù)的單個鍵值不能太大,不要超過1Mb數(shù)據(jù)。

Memcache跟Redis區(qū)別

  1. 【持久化能力】Redis支持持久化可以存到磁盤,memcache也支持但一般不做持久化(重啟丟失數(shù)據(jù))

  2. 【數(shù)據(jù)類型支持】Redis類型較多(5種數(shù)據(jù)類型,string、list、hash、set、sorted set),memcache只能是字符串

  3. 【線程模型】Redis是單線程+多路IO復(fù)用,雖然沒有鎖沖突,但很難利用多核特性提升整體吞吐量。memecache是多線程+鎖的方式,主線程監(jiān)聽,work子線程接收請求,執(zhí)行讀寫,有鎖沖突。

  4. 【數(shù)據(jù)庫特征】Redis不是所有的數(shù)據(jù)都存儲在內(nèi)存,在很多方面具備數(shù)據(jù)庫的特征,memcache只是簡單的kv緩存;相當(dāng)于memchache更像是redis在功能上的一個子集。

  5. 【內(nèi)容大小比較】redis存儲的內(nèi)容比較大(memcache的value存儲最大是1M,如果存儲value很大,只能選擇redis)

  6. 【內(nèi)存分配】memchache使用預(yù)分配內(nèi)存池的方式管理內(nèi)存,能夠省區(qū)內(nèi)存分配的時間,這個節(jié)省的時間在數(shù)據(jù)量很大的時候還是很可觀的。而redis則是臨時申請空間,可能導(dǎo)致碎片。Redis和Memcache在寫入性能上面差別不大的,讀取性能上面尤其是批量讀取性能上面Memcache更強的。

  7. 【高可用支持】高可用(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)點
  1. 任何網(wǎng)站都能做
  2. 能測試JavaScript和ajax請求
  3. 可以拿給你的客戶和經(jīng)理看
  4. 大部分的支持都是穩(wěn)定的:源代碼或技術(shù)改動影響很小
缺點
  1. 非常慢:包括運行瀏覽器和數(shù)據(jù)庫填充
  2. 檢查少了可能會導(dǎo)致不靠譜(false-positive)的結(jié)果
  3. 執(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)點
  1. 像驗收測試,但是更快
  2. 可以提供更詳細的報告
  3. 足夠穩(wěn)定:只有大版本修改,或者移動到其它框架才會影響到他們
缺點
  1. JavaScript和Ajax不受影響
  2. 需要一個事先準備的測試環(huán)境

3、單元測試(Unit Tests)

  • Codeception是在PHPUnit上創(chuàng)建的,兼容PHPUnit,同事提供了一些精心打造的功能使你的單元測試更加簡單更整潔。
優(yōu)點
  1. 最快
  2. 可覆蓋到很少用到的特性
  3. 可以測試出應(yīng)用程序核心的穩(wěn)定性
缺點
  1. 沒有測試單元之間的連接
  2. 支持不穩(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 對比?
  1. 負載度 lvs 優(yōu)于 nginx
  2. 穩(wěn)定度 lvs 優(yōu)于 nginx
  3. 服務(wù)器性能要求 lvs 優(yōu)于 nginx
  4. 網(wǎng)絡(luò)層數(shù)的效率 lvs 優(yōu)于 nginx
  5. 功能多少 nginx 優(yōu)于 lvs

應(yīng)用場景

四、AWVS

  • Acunetix Web Vulnerability Scanner(簡稱AWVS)是一款知名的Web網(wǎng)絡(luò)漏洞掃描工具,它通過網(wǎng)絡(luò)爬蟲測試你的網(wǎng)站安全,檢測流行安全漏洞。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容