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