還為模擬流量測試發(fā)愁嗎?!滴滴開源RDebug流量回放工具!
我們經(jīng)常在性能測試和壓力測試的時候發(fā)愁,如何模擬線上真實(shí)流量還原現(xiàn)場使用情況對于我們來說是個大挑戰(zhàn)。通常情況下,我們會從數(shù)據(jù)庫中找出用戶訪問的數(shù)據(jù)和請求來模擬歷史訪問,這樣做需要做大量的腳本和數(shù)據(jù)分析工作。現(xiàn)在好了滴滴開源RDebug工具可以錄制線上的真實(shí)流量,并且可以通過回放的方式對系統(tǒng)進(jìn)行測試。幫助我們實(shí)現(xiàn)性能測試和壓力測試,并且可以快速的對高峰訪問情況進(jìn)行復(fù)盤。我們一起來看看吧。
GitHub開源
地址:https://github.com/didi/rdebug/blob/master/README_zh_CN.md
目前有700左右的星星了。

鑒于微服務(wù)具有易于擴(kuò)展、部署簡單、技術(shù)異構(gòu)性等優(yōu)點(diǎn),越來越多的服務(wù)都在采用微服務(wù)的架構(gòu)模式。一個復(fù)雜的單體服務(wù)通常會被拆分成多個小的微服務(wù),當(dāng)然在享受微服務(wù)帶來的一系列便利的同時也要接受因?yàn)槲⒎?wù)改造帶來的問題:需要維護(hù)的服務(wù)數(shù)變多、服務(wù)之間 RPC 調(diào)用次數(shù)增加……
在服務(wù)化改造完成之后,原來的單體服務(wù)演化成一堆微服務(wù),這就造成線下開發(fā)測試環(huán)境維護(hù)成本大大增加,其次線下環(huán)境涉及到的部門較多,維護(hù)一個長期穩(wěn)定的線下環(huán)境也是一個挑戰(zhàn);業(yè)務(wù)快速發(fā)展、需求不斷迭代,手寫單測又因復(fù)雜的業(yè)務(wù)邏輯以及復(fù)雜的服務(wù)調(diào)用需要 mock 多個下游服務(wù),導(dǎo)致手寫單測成本特別的高;手動構(gòu)造數(shù)據(jù),又不夠全面真實(shí)。以上問題都嚴(yán)重影響 RD 的研發(fā)效率,并且增加線上發(fā)生事故的隱患。
主要功能
流量錄制: 即錄制線上服務(wù)的真實(shí)請求,包括調(diào)用下游服務(wù)的 RPC 請求。流量錄制的難點(diǎn)在于如何將上下游請求以及每次 RPC 的請求/響應(yīng)一一對應(yīng)。
流量回放: 即用線上錄制的流量,對線下測試代碼進(jìn)行回放,通過流量匹配 mock 掉下游 RPC 請求。因此,流量回放的難點(diǎn)在于請求的攔截和匹配。三種方式的回放:下載源碼回放、midi.phar 包回放、composer bin 回放。
架構(gòu)

通過Koala和Koala-libc 作為核心代碼,實(shí)現(xiàn)底層庫
Koala是Go編寫的,Libc用了部分C++完成
https://github.com/didi/rdebug/blob/master/koala/README.md
生成報(bào)告


