推薦一款國內(nèi)首個開源全鏈路壓測平臺

前不久國內(nèi)知名的系統(tǒng)高可用專家數(shù)列科技宣布開源旗下核心產(chǎn)品能力,對外開放生產(chǎn)全鏈路壓測平臺產(chǎn)品的源代碼熬尺,并正式命名為:Takin夺欲。

目前诸典,該項目已在Github上發(fā)布開源描函,作為國內(nèi)首款開源的全鏈路壓測平臺,Takin的開源將為更多企業(yè)提供超低門檻狐粱、超低成本舀寓、超高效率的性能保障能力。

1. 什么是生產(chǎn)環(huán)境全鏈路壓測?

全鏈路壓測簡單來說肌蜻,就是基于實際的生產(chǎn)業(yè)務(wù)場景互墓、系統(tǒng)環(huán)境,模擬海量的用戶請求和數(shù)據(jù)對整個業(yè)務(wù)鏈進行壓力測試蒋搜,并持續(xù)調(diào)優(yōu)的過程篡撵,本質(zhì)上也是性能測試的一種手段。

通過生產(chǎn)環(huán)境全鏈路壓測豆挽,真實模擬“風(fēng)險”業(yè)務(wù)行為場景育谬,實時監(jiān)控系統(tǒng)表現(xiàn),提前識別和快速定位系統(tǒng)的中的不確定因素帮哈,并對不確定因素進行處理膛檀,優(yōu)化系統(tǒng)資源配比,使用最低硬件成本娘侍,使系統(tǒng)從容面對各種“風(fēng)險”場景咖刃,達到預(yù)期的系統(tǒng)性能目標。通過這種方法憾筏,在生產(chǎn)環(huán)境上落地常態(tài)化穩(wěn)定壓測體系嚎杨,實現(xiàn)IT系統(tǒng)的長期性能穩(wěn)定治理。

全鏈路壓測系統(tǒng)架構(gòu)設(shè)計大體類似如下

image

2. 我們?yōu)槭裁葱枰錾a(chǎn)環(huán)境的性能測試

可能會有人想氧腰,性能測試不應(yīng)該是在測試環(huán)境進行嗎枫浙,為什么需要在生產(chǎn)環(huán)境 上面做性能測試呢?

特別是微服務(wù)架構(gòu)在現(xiàn)代系統(tǒng)架構(gòu)中已被普遍使用容贝,與此同時自脯,隨著業(yè)務(wù)的擴張和微服務(wù)數(shù)量的增加,它使系統(tǒng)變得非常復(fù)雜以至于人無法理解斤富,而且膏潮,很多業(yè)務(wù)邏輯本身也非常復(fù)雜。業(yè)務(wù)復(fù)雜性和系統(tǒng)復(fù)雜性使保證和維持整個系統(tǒng)的高可用性非常困難满力,同時焕参,它對研發(fā)效率也產(chǎn)生負面影響轻纪。

為了保證系統(tǒng)的高可用性,我們通常對測試環(huán)境或生產(chǎn)環(huán)境的單一服務(wù)進行性能測試叠纷,但是刻帚,測試環(huán)境與在生產(chǎn)環(huán)境區(qū)別很大,單個服務(wù)也不能代表整個服務(wù)鏈路涩嚣,因此崇众,它們都不能保證系統(tǒng)的高可用,通常也無法給出準確的容量評估結(jié)果航厚。

歸結(jié)起來顷歌,主要原因有三:

1. 微服務(wù)很復(fù)雜
和單體架構(gòu)相比,微服務(wù)架構(gòu)增加了業(yè)務(wù)系統(tǒng)的復(fù)雜性幔睬,因為它的子服務(wù)數(shù)量更多眯漩,并且涉及更多的不同技術(shù)棧和框架。

2. 業(yè)務(wù)系統(tǒng)也很復(fù)雜
很多業(yè)務(wù)本身的業(yè)務(wù)邏輯也很復(fù)雜麻顶,其中很多業(yè)務(wù)涉及比較長的業(yè)務(wù)流程赦抖,例如電商業(yè)務(wù)。

3. 服務(wù)與服務(wù)之間的調(diào)用關(guān)系也很復(fù)雜
在微服務(wù)架構(gòu)的系統(tǒng)中辅肾,服務(wù)之間的調(diào)用關(guān)系非常復(fù)雜队萤,每次服務(wù)的發(fā)布和更新都可能影響整個系統(tǒng)的可用性,并使開發(fā)人員難以頻繁發(fā)布新版本宛瞄。

如下這張圖中是一張典型微服務(wù)調(diào)用鏈路浮禾,如果服務(wù)數(shù)量再擴大幾十倍,想象一下份汗,調(diào)用關(guān)系圖又會變成何種樣子:

image

2. 性能測試演變的四個階段

性能測試不同公司的實踐程度皆有差異盈电,但整的來說,演進過程主要分為從線下到線上四個階段:

image

1.需求驅(qū)動壓測階段

需求驅(qū)動壓測杯活,大多采用簡單的工具進行單接口或者單系統(tǒng)壓測匆帚,也能進行一些簡單的性能問題分析,但很多時候都沒有專門的測試團隊旁钧,需要開發(fā)進行自主壓測吸重。這個階段,雖然有需求驅(qū)動歪今,但大多數(shù)都是憑靠經(jīng)驗法+人為拍腦袋來決定如何做嚎幸,做什么。

2.性能回歸體系階段

組建專門的性能測試團隊搭建線下性能測試平臺寄猩,且會結(jié)合研發(fā)流程形成一些規(guī)范化體系嫉晶,并會利用一些開源工具、商業(yè)工具,甚至自主開發(fā)性能測試平臺替废。

前兩個階段箍铭,主要性能測試開展都是集中在線下環(huán)境,如此同時椎镣,引出了一些問題诈火,其中比較有代表性:

image
  • 很多公司線下做了性能測試,但到了線上還是存在很多問題状答,以測試環(huán)境的壓測結(jié)果來評估線上環(huán)境冷守,效果不佳。

  • 業(yè)務(wù)增長剪况、營銷活動增加使測試工程師對活動保障心里沒底教沾,每逢營銷活動問題頻發(fā)影響公司形象。

  • 性能壓測效率無法滿足增長的性能壓測需求译断,導(dǎo)致部分項目沒有性能壓測直接上線,線上故障頻發(fā)或悲。

為了解決測試環(huán)境性能壓測的不確定性孙咪,性能壓測開始向生產(chǎn)環(huán)境進行演變,進入生產(chǎn)環(huán)境性能壓測階段巡语。

3.生產(chǎn)只讀業(yè)務(wù)壓測階段

在測試環(huán)境回歸體系階段上增加了生產(chǎn)只讀業(yè)務(wù)的性能壓測翎蹈,對生產(chǎn)環(huán)境壓測進行實踐,搭建生產(chǎn)環(huán)境性能壓測回歸體系男公,具備只讀業(yè)務(wù)生產(chǎn)壓測的性能問題分析能力荤堪。

4.全業(yè)務(wù)全鏈路壓測階段

在上一個階段的基礎(chǔ)上增加寫入業(yè)務(wù)的性能壓測,進而開展對全業(yè)務(wù)實行全鏈路壓測枢赔,具備全業(yè)務(wù)的性能壓測能力澄阳、問題定位能力,做的更好一些還會增加系統(tǒng)防護能力踏拜,比如降級碎赢、限流、故障演練等速梗。

3. Takin介紹

Takin是一款基于Java的開源系統(tǒng)肮塞,可嵌入到各個服務(wù)節(jié)點,實現(xiàn)生產(chǎn)環(huán)境的全鏈路性能測試姻锁,尤其適合面向微服務(wù)架構(gòu)系統(tǒng)枕赵。通過Takin,系統(tǒng)中的中間件和應(yīng)用可以在生產(chǎn)環(huán)境識別真實流量和測試流量位隶,保證它們進入不同的數(shù)據(jù)庫拷窜,實現(xiàn)真實和測試流量的現(xiàn)網(wǎng)隔離。

image

Takin具備以下4個特點:

  • 業(yè)務(wù)代碼0侵入:在接入、采集和實現(xiàn)邏輯控制時装黑,不需要修改任何業(yè)務(wù)代碼副瀑;

  • 數(shù)據(jù)安全隔離:可以在不污染生產(chǎn)環(huán)境業(yè)務(wù)數(shù)據(jù)情況下進行全鏈路性能測試,可以在生產(chǎn)環(huán)境對寫類型接口進行直接的性能測試恋谭;

  • 安全性能壓測:在生產(chǎn)環(huán)境進行性能壓測糠睡,對業(yè)務(wù)不會造成影響;

  • 性能瓶頸快速定位:性能測試結(jié)果直接展現(xiàn)業(yè)務(wù)鏈路中性能瓶頸的節(jié)點疚颊。

Takin結(jié)構(gòu)

image

項目地址:

https://github.com/shulieTech/Takin
或者
https://gitee.com/mirrors/Takin.git

4. Takin安裝及使用

1?準備一臺裝有docker的服務(wù)器狈孔,配置盡量要高些。

2?修改 Docker 鏡像地址為阿里云:vim /etc/docker/daemon.json,更新為:

{
  "registry-mirrors": ["<https://q2gr04ke.mirror.aliyuncs.com>"]
}

配置生效:systemctl daemon-reload

3? 下載拉取鏡像

docker pull registry.cn-hangzhou.aliyuncs.com/forcecop/forcecop:v1.0.0
image

4材义、啟動鏡像

docker run -d -p 80:80 -p 2181:2181 -p 3306:3306 -p 6379:6379 -p 8086:8086 -p 9000:9000 -p 10032:10032 -p 6628:6628 -p 8000:8000 -p 6627:6627 -p 8888:8888 -p 29900-29999:29900-29999 registry.cn-hangzhou.aliyuncs.com/forcecop/forcecop:v1.0.0

-d是后臺啟動均抽,-p是需要開放的端口,容器運行初始化的時候需要安裝一些必要的組件需要十分鐘的樣子其掂,-d可以忽略后臺組件的安裝信息油挥,如果想要查看安裝信息可以去除-d參數(shù)。

image

5款熬、進入容器深寥,更改配置:docker exec -it 9754b1ff1491 bash

image

6、修改serverUrl:vi /data/apps/dist/tro/index.html贤牛,惋鹅,將serverUrl配置成服務(wù)器本機IP地址。

7殉簸、重啟Nginx服務(wù):nginx -s reload闰集。

8、配置sugre-deploy啟動命令般卑,其中說明一下武鲁,sugre-deploy為大數(shù)據(jù)平臺模塊。

[root@30e961d36c91 data]# ps -ef | grep surge
root      4336     1 66 17:48 ?        00:03:20 java -jar surge-deploy-1.0-jar-with-dependencies.jar {"172.17.0.2":"192.168.1.138"}
root      4574    18  0 17:53 ?        00:00:00 grep --color=auto surge
[root@30e961d36c91 data]# kill -9 4336
[root@30e961d36c91 data]# ps -ef | grep surge
root      4582    18  0 17:54 ?        00:00:00 grep --color=auto surge
image

9椭微、更改sugre-deploy的啟動命令:vi /data/install.sh,將sugre-deploy的啟動命令參數(shù)“172.17.0.2”對應(yīng)的value(192.168.1.138這個)更改為宿主機的IP洞坑,保存。

image

10蝇率、重啟sugre-deploy

nohup java -jar surge-deploy-1.0-jar-with-dependencies.jar '{"172.17.0.2":"192.168.1.220"}' > surge.out  2>&1 &

11迟杂、進入壓測控制臺

輸入壓測控制臺地址:http://docker宿主機IP/tro/#/login
示例: http://192.168.1.220/tro/#/login

image

默認賬號密碼:賬號:admin 密碼:pamirs@2020

image

如果能看見如上圖,恭喜您本慕,成功安裝了Takin排拷,接下來就可以開啟壓測之旅啦~

利用Takin在壓測結(jié)束后,系統(tǒng)會自動生成一份壓測報告锅尘,將本次壓測所產(chǎn)生的數(shù)據(jù)進行記錄和存檔监氢,可隨時通過查看報告來回溯壓測時的性能指標變化情況布蔗,分析性能瓶頸與定位定能問題。

如下圖所示:

image

可查看壓測全局或單個業(yè)務(wù)活動的TPS浪腐、RT纵揍、成功率、SA的指標趨勢议街。

image

請求流量跟蹤:

image

官方快速入手指南:

https://docs.shulie.io/docs/opensource
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泽谨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子特漩,更是在濱河造成了極大的恐慌吧雹,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涂身,死亡現(xiàn)場離奇詭異雄卷,居然都是意外死亡,警方通過查閱死者的電腦和手機蛤售,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門丁鹉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悍抑,你說我怎么就攤上這事鳄炉。” “怎么了搜骡?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長佑女。 經(jīng)常有香客問我记靡,道長,這世上最難降的妖魔是什么团驱? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任摸吠,我火速辦了婚禮,結(jié)果婚禮上嚎花,老公的妹妹穿的比我還像新娘寸痢。我一直安慰自己,他們只是感情好紊选,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布啼止。 她就那樣靜靜地躺著,像睡著了一般兵罢。 火紅的嫁衣襯著肌膚如雪献烦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天卖词,我揣著相機與錄音巩那,去河邊找鬼。 笑死,一個胖子當著我的面吹牛即横,可吹牛的內(nèi)容都是我干的噪生。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼东囚,長吁一口氣:“原來是場噩夢啊……” “哼跺嗽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舔庶,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤抛蚁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后惕橙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞧甩,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年弥鹦,在試婚紗的時候發(fā)現(xiàn)自己被綠了肚逸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡彬坏,死狀恐怖朦促,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情栓始,我是刑警寧澤务冕,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站幻赚,受9級特大地震影響禀忆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜落恼,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一箩退、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佳谦,春花似錦戴涝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至矢棚,卻和暖如春郑什,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒲肋。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工蘑拯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钝满,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓申窘,卻偏偏與公主長得像弯蚜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子剃法,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容