日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ChaosBlade 在工商银行混沌工程体系中的应用实践

發(fā)布時(shí)間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ChaosBlade 在工商银行混沌工程体系中的应用实践 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者 | 吳冕冠
來源|阿里巴巴云原生公眾號

互聯(lián)網(wǎng)金融時(shí)代下,金融產(chǎn)品和服務(wù)模式不斷創(chuàng)新,交易量大幅攀升。面對互聯(lián)網(wǎng)金融的全新發(fā)展態(tài)勢,傳統(tǒng)的單體 IT 架構(gòu)暴露出很多不適應(yīng)的地方,為此業(yè)界廣泛應(yīng)用云計(jì)算、分布式等新技術(shù),構(gòu)建分布式架構(gòu)和運(yùn)維體系,以支撐金融業(yè)務(wù)的快速發(fā)展。這些新技術(shù)的應(yīng)用使得基礎(chǔ)設(shè)施復(fù)雜性日益增加,不可預(yù)見的用戶行為和事件交織在一起,對系統(tǒng)、應(yīng)用架構(gòu)的可靠性提出了更高要求。為解決分布式系統(tǒng)的不確定性,確保生產(chǎn)穩(wěn)定運(yùn)行,混沌工程應(yīng)運(yùn)而生。根據(jù)《Chaos Engineering》書中的定義:混沌工程是在分布式系統(tǒng)上進(jìn)行實(shí)驗(yàn)的學(xué)科,目的是建立系統(tǒng)抵御生產(chǎn)環(huán)境中湍流條件的能力。通常來說,混沌工程指對分布式系統(tǒng)中的服務(wù)器隨機(jī)注入不同類型的故障,發(fā)現(xiàn)并修復(fù)系統(tǒng)中的潛在問題,從而提升整個(gè)分布式系統(tǒng)的高可用能力。

傳統(tǒng)系統(tǒng)高可用測試的痛點(diǎn)

中國工商銀行從 2015 年啟動(dòng)了 IT 架構(gòu)轉(zhuǎn)型工程,基于分布式、云計(jì)算初步構(gòu)建了開放平臺核心銀行系統(tǒng),目前分布式體系已承載 150 余個(gè)應(yīng)用,累計(jì)部署容器超過 2 萬套,日均服務(wù)調(diào)用量超 70 億,消息發(fā)送峰值每秒逾 150 萬筆,實(shí)現(xiàn)了遠(yuǎn)超主機(jī)性能容量的集群處理能力。但與此同時(shí),在分布式體系下支撐服務(wù)的底層技術(shù)架構(gòu)和平臺系統(tǒng)日益復(fù)雜,生產(chǎn)運(yùn)行不確定因素相較于主機(jī)明顯增多,網(wǎng)絡(luò)異常、磁盤 IO 夯等系統(tǒng)層面故障導(dǎo)致的生產(chǎn)問題呈現(xiàn)增長趨勢。由于傳統(tǒng)項(xiàng)目測試人員針對系統(tǒng)高可用相關(guān)場景的測試意識和能力相對缺乏,且目前該領(lǐng)域暫無統(tǒng)一的測試工具,測試人員需耗費(fèi)較高的學(xué)習(xí)成本去篩選和學(xué)習(xí)各類測試工具,導(dǎo)致項(xiàng)目測試主要集中在業(yè)務(wù)功能測試,缺乏對系統(tǒng)可用性的測試。

故障注入工具選型

為提升工行分布式體系的穩(wěn)定性,降低測試人員學(xué)習(xí)和使用相關(guān)工具的門檻,我們著重分析了 Chaosblade、Litmus、Choas Monkey 等優(yōu)秀開源工具在各類故障注入場景中的能力。這些故障注入工具既有專用于云平臺環(huán)境,也有適用于操作系統(tǒng)層面,還有針對如服務(wù)異常等應(yīng)用層面的故障注入。但這些工具大多僅提供了基本的故障注入能力,還需進(jìn)一步擴(kuò)展完善,實(shí)現(xiàn)企業(yè)級的平臺能力。


表 1? 業(yè)界主流故障注入工具能力情況

ChaosBlade 支持目前主流的故障注入場景,相對其他幾個(gè)故障注入工具,ChaosBlade 故障注入覆蓋的場景最全,支持四大類、幾十種常用的故障注入能力,且提供了統(tǒng)一的 CLI 交互界面,學(xué)習(xí)成本相對較低,其技術(shù)棧與我行分布式體系和云計(jì)算體系兼容性也較好。


圖 1? ChaoBlade 故障注入能力

因此,ChaosBlade 各方面基本滿足我行技術(shù)體系的需求。為保障故障注入工具能力的可擴(kuò)展性,實(shí)現(xiàn)與上層調(diào)度平臺的解耦,降低調(diào)用方的使用難度,我們基于 ChaosBlade 進(jìn)行了二次開發(fā),擴(kuò)展了 ChaosBlade 的故障注入能力。

  • 一是將故障注入的調(diào)用能力封裝成 Rest 接口(當(dāng)時(shí) ChaosBlade 還不支持通過 http 與之交互)。

  • 二是增加服務(wù)器系統(tǒng)指標(biāo)收集模塊,可實(shí)時(shí)收集服務(wù)器的 CPU、內(nèi)存、網(wǎng)絡(luò)等系統(tǒng)硬件使用情況。

  • 三是增加了故障注入任務(wù)解析模塊,該模塊可將混沌工程故障演練管理平臺下發(fā)的故障演練任務(wù)解析成多個(gè)故障注入事件,然后根據(jù)各個(gè)故障注入事件的開始和結(jié)束時(shí)間分別調(diào)用 ChaosBlade 故障注入工具實(shí)施故障注入和撤銷操作。

基于 ChaosBlade 的系統(tǒng)高可用測試解決方案

基于 ChaosBlade 故障注入工具,我們建設(shè)了一套功能完備的企業(yè)級混沌工程故障演練平臺。

1. 平臺架構(gòu)

平臺主要由門戶、任務(wù)調(diào)度框架、故障注入介質(zhì)、高可用專家?guī)焖牟糠纸M成。

門戶提供各類混沌實(shí)驗(yàn)任務(wù)的編排和配置服務(wù),借助演練流程編排面板,用戶可以便捷地管理各類混沌實(shí)驗(yàn)任務(wù);混沌實(shí)驗(yàn)開始實(shí)施后,用戶可通過任務(wù)進(jìn)度條、服務(wù)器指標(biāo)展示圖等實(shí)時(shí)查看混沌實(shí)驗(yàn)任務(wù)的進(jìn)度和服務(wù)器各項(xiàng)系統(tǒng)指標(biāo)情況;混沌實(shí)驗(yàn)執(zhí)行結(jié)束后,門戶會(huì)收集混沌實(shí)驗(yàn)過程中的所有數(shù)據(jù),并對數(shù)據(jù)進(jìn)行分析和加工,生成混沌工程實(shí)驗(yàn)報(bào)告供后續(xù)分析和歸檔。

任務(wù)調(diào)度框架負(fù)責(zé)門戶和故障注入介質(zhì)之間的交互,核心功能是實(shí)現(xiàn)混沌實(shí)驗(yàn)任務(wù)的批量下發(fā)和調(diào)度,該模塊可以快速批量下發(fā)各種類型的混沌實(shí)驗(yàn),支持失敗重發(fā)、超時(shí)重發(fā)、高并發(fā)等機(jī)制。

故障注入介質(zhì)負(fù)責(zé)接收門戶下發(fā)的任務(wù),并實(shí)施相應(yīng)的故障注入事件。

高可用專家?guī)?/strong>是混沌工程測試人員根據(jù)平時(shí)混沌測試總結(jié)得到的高可用測試模型,基于高可用專家?guī)煊脩艨梢愿鶕?jù)演練場景自動(dòng)關(guān)聯(lián)對應(yīng)的故障注入事件,并為用戶提供一鍵生成演練流程的能力。


圖 2? 工行混沌工程故障演練平臺架構(gòu)

2. 故障演練過程詳解

工程師對目標(biāo)服務(wù)器進(jìn)行故障注入時(shí),涉及環(huán)境準(zhǔn)備、故障注入任務(wù)編排、實(shí)施故障注入、終止故障注入任務(wù)等一系列操作。

1)環(huán)境準(zhǔn)備

在實(shí)施故障演練之前,需要在混沌工程故障演練平臺添加將要實(shí)施故障注入的目標(biāo)服務(wù)器。如果實(shí)施目標(biāo)是容器,則無需用戶維護(hù),系統(tǒng)可以自動(dòng)關(guān)聯(lián) PaaS 平臺查詢各應(yīng)用的容器。

2)故障演練任務(wù)編排

用戶登陸故障演練平臺后,選擇故障演練環(huán)境。創(chuàng)建一個(gè)故障演練流程,每個(gè)故障演練流程至少添加一個(gè)故障演練任務(wù),每個(gè)故障演練任務(wù)可以有一個(gè)或多個(gè)故障演練事件,每個(gè)故障演練任務(wù)可以關(guān)聯(lián)一臺或多臺服務(wù)器。常用的故障演練事件包括對 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)、數(shù)據(jù)庫、服務(wù)調(diào)用、JVM 等注入各類故障。

3)實(shí)施故障注入

用戶完成故障注入任務(wù)編排后,即可開始實(shí)施故障演練。用戶點(diǎn)擊安裝按鈕之后,混沌工程故障演練平臺就會(huì)將故障注入介質(zhì)下發(fā)至目標(biāo)服務(wù)器,并執(zhí)行用戶預(yù)先編排好的故障演練任務(wù)。

此外,故障注入介質(zhì)還可實(shí)時(shí)收集服務(wù)器在混沌實(shí)驗(yàn)運(yùn)行期間的性能狀態(tài),如系統(tǒng)層面的 CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤使用情況,并將這些系統(tǒng)指標(biāo)回傳至混沌工程故障演練管理平臺,以圖形化的方式進(jìn)行展示,以驗(yàn)證在執(zhí)行混沌實(shí)驗(yàn)期間系統(tǒng)狀態(tài)是否達(dá)到預(yù)期效果。

4)終止故障注入任務(wù)

故障演練任務(wù)被用戶手動(dòng)停止或者正常執(zhí)行結(jié)束后,平臺會(huì)自動(dòng)調(diào)用虛機(jī)管理平臺或 PaaS 管理平臺的接口,將故障演練銷毀命令下發(fā)至各目標(biāo)服務(wù)器,恢復(fù)之前注入的故障并銷毀故障注入介質(zhì)。

實(shí)際效果

1. 節(jié)點(diǎn)管理模塊

支持用戶根據(jù)故障演練具體需求,在工行混沌工程故障演練平臺定義不同的故障演練環(huán)境,并為各環(huán)境添加對應(yīng)的目標(biāo)服務(wù)器列表。


圖 3? 工行混沌工程故障演練平臺節(jié)點(diǎn)管理模塊

2. 演練管理模塊

演練管理模塊負(fù)責(zé)維護(hù)故障演練任務(wù),支持用戶選擇需要實(shí)施故障演練的目標(biāo)服務(wù)器以及需要執(zhí)行的故障注入事件。


圖 4? 工行混沌工程故障演練平臺演練管理模塊

3. 演練監(jiān)控模塊

演練監(jiān)控模塊主要通過故障注入介質(zhì)收集故障演練過程中各目標(biāo)服務(wù)器當(dāng)前系統(tǒng)層面的關(guān)鍵指標(biāo)信息,并在工行混沌工程故障演練平臺進(jìn)行實(shí)時(shí)展示。


圖 5? 工行混沌工程故障演練平臺監(jiān)控管理模塊

4. 高可用專家?guī)?/h2>

我們通過對歷史生產(chǎn)問題的排查經(jīng)驗(yàn)進(jìn)行總結(jié),并結(jié)合在大量混沌測試實(shí)踐中歸納得到的高可用測試模型,建立了工行混沌工程故障演練平臺高可用專家?guī)?#xff0c;共包含六大類一百多種測試案例,涵蓋了應(yīng)用層、數(shù)據(jù)庫層、平臺層、中間件層、路由層、緩存層等主流的應(yīng)用高可用測試場景。為降低混沌測試門檻,高可用專家?guī)熘С謶?yīng)用基于自身架構(gòu)自動(dòng)匹配測試案例,達(dá)到一鍵生成故障演練任務(wù)的目的。


圖 6? 工行混沌工程故障演練平臺高可用專家?guī)?/p>

5. 其他能力

此外,為方便混沌測試人員使用混動(dòng)工程故障演練平臺對測試案例和測試結(jié)果的管理,平臺也提供了測試案例管理,問題管理等附加模塊。同時(shí)對于一些 ChaosBlade 暫時(shí)還不具備的故障注入能力如 IO 夯住,我們也自行研發(fā)了相關(guān)功能并集成至故障注入介質(zhì)當(dāng)中。

6. 實(shí)踐情況

我們根據(jù)分布式技術(shù)體系生產(chǎn)運(yùn)維中的“痛點(diǎn)”:

  • 一是全行應(yīng)用眾多,高可用測試的場景和規(guī)模龐大,基于故障注入工具通過手動(dòng)輸入命令的方式實(shí)施故障演練效率十分低下。

  • 二是工行分布式系統(tǒng)底層架構(gòu)非常復(fù)雜,涉及容器、虛機(jī)、物理機(jī)等多類設(shè)施,單一故障注入工具無法滿足不同場景的故障演練需求。

因此我們建設(shè)了工行混沌工程故障演練平臺,將服務(wù)器系統(tǒng)故障和 JVM 故障這兩大類作為主要切入點(diǎn),基于工行混沌工程故障演練平臺高可用專家?guī)?#xff0c;率先在行內(nèi)快捷支付、聚合支付等一些重點(diǎn)業(yè)務(wù)線進(jìn)行落地試點(diǎn),通過注入上下游調(diào)用異常、線程池異常、磁盤 IO 夯等多種類型的故障,在各業(yè)務(wù)線的平臺層、消息中間件層、應(yīng)用層、數(shù)據(jù)庫層、路由層均發(fā)現(xiàn)了一些傳統(tǒng)測試難以發(fā)現(xiàn)的高可用設(shè)計(jì)等方面的問題。例如:通過對支付類交易實(shí)施混沌實(shí)驗(yàn),模擬雙活應(yīng)用的單園區(qū)網(wǎng)絡(luò)斷連然后再恢復(fù),發(fā)現(xiàn)該過程中支付鏈路存在一些底層故障場景下交易失敗的架構(gòu)設(shè)計(jì)缺陷,并在投入生產(chǎn)之前對支付系統(tǒng)架構(gòu)進(jìn)行了重新設(shè)計(jì)和升級。截止目前全行已對七十多各應(yīng)用開展常態(tài)化故障演練測試,共實(shí)施故障演練七千余次,發(fā)現(xiàn)并解決了一百多個(gè)應(yīng)用系統(tǒng)層面的高可用問題,有效避免了在生產(chǎn)環(huán)境觸發(fā)這些問題。

未來展望

后續(xù),工行將持續(xù)全面推廣混沌工程文化,在大型活動(dòng)前期進(jìn)行專項(xiàng)大規(guī)模混沌測試,并根據(jù)各應(yīng)用的測試結(jié)果,制定應(yīng)用高可用水平量化評估體系。此外,隨著混沌工程故障演練在測試環(huán)境的不斷推進(jìn),平臺應(yīng)用可靠性不斷增強(qiáng),除了不斷擴(kuò)大演練半徑外,下一步計(jì)劃將混沌工程故障演練逐步從測試環(huán)境向生產(chǎn)環(huán)境推移,對全行重要產(chǎn)品線編排實(shí)施各種類型的演練,以確保整個(gè)平臺能應(yīng)對業(yè)務(wù)高峰極端條件下的壓力,全面提升全行開放平臺應(yīng)用服務(wù)水平,為工商銀行系統(tǒng)架構(gòu)的持續(xù)優(yōu)化、產(chǎn)品的快速創(chuàng)新提供堅(jiān)實(shí)支撐。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的ChaosBlade 在工商银行混沌工程体系中的应用实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。