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