1.壓測體系
壓測體系是測試時(shí)發(fā)現問(wèn)題的重要手段。壓測除了能幫助發(fā)現功能異常外,還能發(fā)現一些平時(shí)不容易發(fā)現的問(wèn)題,如當系統壓力大時(shí)系統的表現情況、線(xiàn)上系統的容量配比是否合理、系統的容災保護是否到位等。壓測一般分為單系統壓測和全鏈路壓測,我們所說(shuō)的壓測是線(xiàn)上真實(shí)生產(chǎn)環(huán)境的壓力測試。

(1)單系統壓測
比較容易實(shí)現,有多種實(shí)現手段。
種是引流的方式,就是將線(xiàn)上集群中的流量集中到少部分的機器上,當這些機器流量變大時(shí)就會(huì )達到瓶頸,就能得出單機的極限性能,根據單機的性能就能推算出整個(gè)集群的性能。由于是線(xiàn)上的真實(shí)用戶(hù)的訪(fǎng)問(wèn)請求,這種引流的方式不會(huì )產(chǎn)生額外的測試數據,所以對讀、寫(xiě)系統都合適。
另外一種是放大流量的方式。例如通過(guò) Tcpcopy工具可以把一個(gè)請求copy出多個(gè)重復的請求;還有一個(gè)方式是針對頁(yè)面類(lèi)型這種系統,可以在頁(yè)面中注入一些
JavascriptnewImage.r-htp://item.beta.taobao.com/tem.htm?id-fitemld)
在請求這個(gè)頁(yè)面時(shí),會(huì )自動(dòng)向服務(wù)端額外發(fā)送一個(gè)請求,這樣可以讓用戶(hù)幫我們制造流量達到壓測的目的。當然這種方式會(huì )產(chǎn)生壓測數據,所以只適合讀系統而不適合寫(xiě)系統。
(2)全鏈路壓測
全鏈路壓測是目前比較好的、可以制造出線(xiàn)上大流量的手段。它的優(yōu)點(diǎn)在于能串聯(lián)線(xiàn)上全部系統,并讓每個(gè)系統同時(shí)達到流量峰值(尤其是公共系統),所以適用的場(chǎng)景更多,但實(shí)施成本相對較高。
全鏈路壓測的技術(shù)難度并不大,技術(shù)手段主要有流量的制造、流量的標記、測試數據的處理,全鏈路壓測的架構。
流量的制造除了要能夠控制流量大小外,還要注意流量發(fā)起所在的物理網(wǎng)絡(luò )位置最好能保證流量是從不同的地理位置發(fā)起的,流量發(fā)起端可以部署在各地的CDN節點(diǎn)中,并把不同的網(wǎng)絡(luò )運營(yíng)商也考慮進(jìn)來(lái),這樣能更好地模擬真實(shí)的用戶(hù)請求。流量的標記
流量制造出來(lái)以后,需要做標記,因為它們屬于測試流量,它們的數據是測試數據,不能和線(xiàn)上的真實(shí)數據混同。
標記流量有多種方式:一種是設計不同的數據,例如商品數據的商品ID都以999開(kāi)頭、把訂單ID設置在某個(gè)特殊的區段內;第二種是給每個(gè)請求貼上一個(gè)tace標簽,每個(gè)系統調用的地方都能識別出這個(gè)標簽,一方面可以做一些特殊處理,如取消 token驗證,另外一方面也可以把它路由到特殊的數據表中。
tace的傳遞是一個(gè)難題,最好的方式是通過(guò)中間件來(lái)完成:從最外面的HTP協(xié)議將tace添加在 Header中,到應用的RPC調用中也可以加到協(xié)議頭中,再到數據層中也一樣,最重要的是要保證race標簽不能被丟掉否則將出現臟數據。
測試數據的處理
對測試數據的處理是最關(guān)鍵的環(huán)節,因為是線(xiàn)上真實(shí)生產(chǎn)環(huán)境的壓測,所以對產(chǎn)生的數據的處理不能影響線(xiàn)上的真實(shí)數據。對此,我們提出影子表的概念,它和線(xiàn)上的真實(shí)表完全一樣,甚至和真實(shí)表一樣用在同一個(gè)數據庫實(shí)例中,通過(guò)傳遞下來(lái)的tace標記把這個(gè)請求需要寫(xiě)的數據路由到影子表中,這樣測試流量的讀寫(xiě)都在影子表中完成,不會(huì )影響線(xiàn)上的真實(shí)數據。將測試數據通過(guò)影子表來(lái)隔離是非常關(guān)鍵的,如果放在一起會(huì )引起很多麻煩,也不好清理,即使能夠清理也會(huì )影響正式表的主鍵生成規則,影響下游BI對數據的分析和一些監控指標的展示等。
2.管控體系
管控體系主要是在遇到一些異常情況時(shí)提供保護系統的措施,包括開(kāi)關(guān)系統、預案系統、限流降級系統等。
1)開(kāi)關(guān)系統
開(kāi)關(guān)系統主要是管理一些線(xiàn)上常用的操作,尤其是一些帶有聯(lián)動(dòng)性的操作,通過(guò)統一管理可以減少出錯的概率。網(wǎng)站建設開(kāi)關(guān)系統既要支持基于內存和持久化的操作方式,也要支持單機和集群的靈活操作方式。
本文地址:http://havencoinwallet.com//article/4548.html