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