1、何謂混沌工程?
混沌工程由 Netflix 率先提出并應用,其業(yè)務高度依賴分布式系統(tǒng),為確保系統(tǒng)在面對各種故障時仍能穩(wěn)定運行,其組織開發(fā)了混沌工程工具集 ——Chaos Monkey 等,通過隨機地關(guān)閉生產(chǎn)環(huán)境中的服務器來驗證系統(tǒng)彈性。
混沌工程是一種在分布式系統(tǒng)上進行實驗的方法,目的是提升系統(tǒng)的彈性和穩(wěn)定性。它通過主動向系統(tǒng)注入故障,觀察系統(tǒng)在各種壓力情況下的行為,以發(fā)現(xiàn)系統(tǒng)中的潛在問題并加以改進。
2、混沌工程實驗的核心原則
a、建立穩(wěn)定性指標
建立系統(tǒng)穩(wěn)定性指標,是觀測混沌工程實驗效果的關(guān)鍵手段。在混沌工程啟動前,必須明確系統(tǒng)穩(wěn)定性狀態(tài)的定義,穩(wěn)定性狀態(tài)可以是系統(tǒng)的技術(shù)指標、業(yè)務指標或用戶體驗指標等。例如,系統(tǒng)TP99指標范圍、可用率指標范圍、頁面響應時間范圍、訂單處理成功率范圍等。
b、多樣化故障注入
多樣化的故障注入,是驗證系統(tǒng)故障應急能力的前提?;煦绻こ虘M可能模擬真實世界中可能發(fā)生的各種故障或異常情況。包括不限于,硬件故障、軟件故障、網(wǎng)絡故障、人為錯誤等。例如,服務器宕機、網(wǎng)絡延遲、數(shù)據(jù)庫故障、配置錯誤等。
c、生產(chǎn)環(huán)境接納度
生產(chǎn)環(huán)境對演練實驗的接納度,是確保故障演練實驗精度和有效性的基礎要素?;煦绻こ虒嶒炞詈迷谏a(chǎn)環(huán)境中進行,因為生產(chǎn)環(huán)境是最真實的系統(tǒng)運行環(huán)境,能夠反映出系統(tǒng)在實際使用中的各種情況。當然,在生產(chǎn)環(huán)境中進行實驗務必謹慎操作,確保實驗不會對生產(chǎn)運營及用戶造成不良影響。
d、常態(tài)化運轉(zhuǎn)
混沌工程實驗的常態(tài)化運轉(zhuǎn),是確保系統(tǒng)健壯性得以持續(xù)鞏固的基礎。混沌工程實驗應該持續(xù)自動化運行,以便及時發(fā)現(xiàn)系統(tǒng)中的潛在問題。自動化實驗可以定期進行,也可以在系統(tǒng)發(fā)生變化時進行。通過持續(xù)自動化運行實驗,可以不斷提高系統(tǒng)的彈性和穩(wěn)定性。
3、混沌工程實驗的關(guān)鍵步驟及落地
快遞快運技術(shù)部,自2024年11月起,針對分揀揀攬派及C端、B端核心業(yè)務線,0-1落地研測聯(lián)動紅藍攻防機制,完成共兩輪,87個核心接口架構(gòu)分析,覆蓋31個核心應用(79個場景),識別攔截5類36處風險(監(jiān)控、流程、代碼、預案、依賴),持續(xù)鞏固快快應急預案體系,在此基礎上,25年持續(xù)推動演練線上化實踐、成熟度評估體系建設、落地及能力升維。
a、實驗范圍圈定
通過對核心系統(tǒng)的架構(gòu)分析,梳理系統(tǒng)鏈路的關(guān)鍵指標(系統(tǒng)規(guī)模、SLA及限流指數(shù)等)和關(guān)鍵依賴(應用、存儲及其他中間件),明確要進行實驗的系統(tǒng)或服務范圍,標記故障注入點。
實驗范圍可以是一個或多個單體應用、某個業(yè)務場景下的應用鏈路、某個數(shù)據(jù)中心或整個分布式系統(tǒng)。
b、穩(wěn)定性指標定義
定義明確的穩(wěn)定性指標,用以衡量系統(tǒng)在實驗過程中的狀態(tài),穩(wěn)定性指標可以是技術(shù)監(jiān)控指標、業(yè)務監(jiān)控指標或用戶體驗指標等。
1)技術(shù)監(jiān)控指標
技術(shù)監(jiān)控指標,一般從技術(shù)視角監(jiān)控系統(tǒng)穩(wěn)定性,通常分為幾個維度監(jiān)控。
指標名稱 | 指標描述 |
UMP(JD術(shù)語) | 監(jiān)控方法調(diào)用的TP99,響應時間等 |
日志異常關(guān)鍵字 | 監(jiān)控日志中的,有無異常關(guān)鍵字,報錯信息等 |
容器指標監(jiān)控 | 監(jiān)控CPU,數(shù)據(jù)庫等使用情況是否有異常 |
調(diào)用鏈監(jiān)控 | 監(jiān)控整個上下游調(diào)用鏈路,是否有可用率下降等問題 |
JVM監(jiān)控 | 監(jiān)控內(nèi)存,線程等使用情況 |
2)業(yè)務監(jiān)控指標
業(yè)務監(jiān)控指標,是整個監(jiān)控體系的“頂層”,能夠直接反映用戶使用業(yè)務的真實情況。在快遞快運分揀業(yè)務域,體現(xiàn)如下(例如,發(fā)貨環(huán)節(jié),設置【發(fā)貨環(huán)節(jié)成功率】作為監(jiān)控指標,通過配置規(guī)則:當前時間的發(fā)貨成功數(shù)據(jù)與上周同比下降超過30%,如果5分鐘內(nèi)連續(xù)出現(xiàn)3次告警,則觸發(fā)嚴重級別的告警)。
?
c、實驗場景構(gòu)建
根據(jù)系統(tǒng)的架構(gòu)及技術(shù)特點,以及可能出現(xiàn)的故障情況,參考設計各種實驗場景。實驗場景應該盡可能地模擬真實世界中可能發(fā)生的各種故障和異常情況(可參考 歷史存量線上故障)。
故障分類 | 描述 |
服務器硬件故障 | 模擬服務器 CPU、內(nèi)存、硬盤等硬件組件故障。例如,通過設置硬件監(jiān)控軟件模擬 CPU 使用率瞬間達到 100%,或模擬內(nèi)存出現(xiàn)壞塊導致部分內(nèi)存無法正常讀寫,又或者模擬硬盤空間滿溢,影響應用數(shù)據(jù)存儲和讀取 |
網(wǎng)絡設備故障 | 包括網(wǎng)絡交換機、路由器故障。如設置網(wǎng)絡交換機某個端口故障,造成部分服務器網(wǎng)絡連接中斷;模擬路由器丟包,導致應用網(wǎng)絡通信延遲或數(shù)據(jù)傳輸錯誤 |
操作系統(tǒng)故障 | 如操作系統(tǒng)內(nèi)核崩潰、系統(tǒng)資源耗盡(如文件描述符用盡)。可通過編寫腳本消耗系統(tǒng)資源,觸發(fā)文件描述符不足的情況,觀察應用在這種操作系統(tǒng)故障下的表現(xiàn) |
應用程序自身故障 | 例如代碼邏輯錯誤導致空指針異常、內(nèi)存泄漏、死鎖等??梢栽趹么a中特定位置人為插入引發(fā)空指針異常的代碼片段,進行局部模擬;對于內(nèi)存泄漏,可通過工具模擬對象未正確釋放內(nèi)存的情況;通過編寫存在競爭條件的代碼模擬死鎖場景 |
中間件故障 | 若應用使用數(shù)據(jù)庫中間件、消息隊列中間件等,可模擬中間件故障。比如數(shù)據(jù)庫中間件連接池耗盡,導致應用無法獲取數(shù)據(jù)庫連接;消息隊列中間件消息堆積、消息丟失等。以數(shù)據(jù)庫中間件為例,可通過修改配置參數(shù),限制連接池大小,快速創(chuàng)建大量數(shù)據(jù)庫連接請求,使連接池耗盡 |
高并發(fā)壓力 | 利用性能測試工具模擬大量用戶同時訪問應用,造成系統(tǒng)負載過高。例如,使用 JMeter 模擬每秒數(shù)千個并發(fā)請求,測試應用在高并發(fā)場景下的穩(wěn)定性和故障應對能力 |
環(huán)境變量錯誤 | 修改應用運行所需的環(huán)境變量,如配置錯誤的數(shù)據(jù)庫連接字符串、錯誤的系統(tǒng)路徑等,觀察應用能否正確識別并處理這些錯誤 |
1)一般場景構(gòu)建
①CPU使用率(單個故障場景樣例及核心參數(shù)解釋)
?演練目的:CPU混沌實驗用于在主機模擬CPU負載情況,通過搶占CPU資源,模擬CPU在特定負載情況下,驗證其對服務質(zhì)量、監(jiān)控告警、流量調(diào)度、彈性伸縮等應用能力的影響。
?核心參數(shù)解釋
?使用率:根據(jù)研發(fā)配置的MDC告警閾值決定(例:研發(fā)配置60%。80%-90%)
?搶占模式:故意運行占用大量 CPU 資源的進程,使得系統(tǒng)的 CPU 使用率飆升,從而觀察其他服務和進程在資源競爭下的表現(xiàn)。(勾選代表打開該模式)
?滿載核數(shù):核心滿載個數(shù)(如果一個系統(tǒng)在正常運行時很少有核心達到滿載,但在混沌工程測試中有多個核心持續(xù)滿載,那么可能表明系統(tǒng)在極端情況下的資源分配存在問題,或者系統(tǒng)并沒有正確地平衡負載。)
?滿載核索引:每個 CPU 核心在操作系統(tǒng)中都有一個唯一的索引號,這些索引號通常從 0 開始計數(shù)。(例:0,1 / 0-2) 參數(shù)優(yōu)先級:使用率 > 滿載核數(shù) > 滿載核索引 建議:第一次演練優(yōu)先使用【使用率】
②更多場景及選型原則:混沌工程-故障演練場景選型及實施說明?
2)復雜場景構(gòu)建
①單應用單故障場景“多參數(shù)”組合構(gòu)建
場景構(gòu)建說明
構(gòu)建參數(shù) | 故障類型 |
接口參數(shù):請求類型(GET/POST)、數(shù)據(jù)格式(JSON/XML)、請求體大小(1KB/10KB) | 資源耗盡(CPU / 內(nèi)存) |
配置參數(shù):線程池大?。?/10)、超時閾值(1s/5s)、緩存 TTL(30s/60s) | 網(wǎng)絡異常(延遲 / 丟包) |
環(huán)境參數(shù):CPU 利用率(50%/80%)、內(nèi)存占用(60%/90%)、網(wǎng)絡延遲(100ms/500ms) | 數(shù)據(jù)異常(錯誤碼 / 空值) |
(場景樣例)連接庫請求延遲&業(yè)務的異常流量注入
?場景描述:依據(jù)場景構(gòu)建的基本原則,我們在構(gòu)建數(shù)據(jù)庫請求延遲的情況前提下,向系統(tǒng)注入帶有異常業(yè)務數(shù)據(jù)的流量,以檢查應急預案對應的處理能力。
攻擊接口 | http://xxxxx.forcebot.jdl.com/services/xxxxx/getWaybillChute | ||
攻擊步驟 | 預期結(jié)果 | 結(jié)論 | |
10*10個QPS將壓測流量灌入(正常流量) | 事務成功率100% | pass | |
植入故障,觀察(故障占比:80%,A分組5臺打掛,B分組3臺打掛) | 5分鐘內(nèi)觸發(fā)數(shù)據(jù)庫請求告警,守方報備到備戰(zhàn)群 | pass | |
調(diào)節(jié)壓測流量,QPS增加到60*10(值逐步增加) | 服務可用率降低,TP99上升 | pass | |
調(diào)節(jié)壓測流量,QPS增加到80*10(值逐步增加) | 服務可用率降低,TP99上升 | pass | |
觀察到守方通過防守動作止損 較長時間內(nèi)服務沒起來 | 事務成功率100%,連接數(shù)據(jù)庫請求正常,TP99恢復正常(TCP重傳、數(shù)據(jù)庫連接、下線機器、擴容) | pass | |
停止故障任務 | 集群下所有機器事務成功率100%,CPU使用率60%以下,TP99恢復正常,連接數(shù)據(jù)庫請求正常 | pass | |
停止壓測腳本 | 流量停止灌入 | pass |
②單應用多故障場景組合構(gòu)建
?場景構(gòu)建說明:可參考如下組合方式,構(gòu)建單應用多故障場景。
組合方式 | 組合描述 |
基于故障影響范圍組合 | 局部與全局故障組合:先設置一個局部故障,如某個模塊的代碼邏輯錯誤導致該模塊功能不可用,同時再設置一個影響全局的故障,如服務器內(nèi)存耗盡,使整個應用運行緩慢甚至崩潰。這樣可以測試應用在局部問題和整體資源危機同時出現(xiàn)時的應對策略 |
上下游故障組合:如果應用存在上下游依賴關(guān)系,模擬上游服務故障(如數(shù)據(jù)提供方接口異常)與下游服務故障(如數(shù)據(jù)存儲服務不可用)同時發(fā)生 | |
基于故障發(fā)生時間順序組合 | 先后發(fā)生故障組合:設定故障按特定順序出現(xiàn)。比如,先模擬網(wǎng)絡短暫中斷,導致部分數(shù)據(jù)傳輸失敗,緊接著由于數(shù)據(jù)處理異常,引發(fā)應用內(nèi)部的緩存雪崩問題。通過這種順序組合,測試應用在連鎖故障場景下的恢復能力和數(shù)據(jù)一致性 |
周期性故障組合:設置周期性出現(xiàn)的故障,如每隔一段時間(如 10 分鐘)網(wǎng)絡出現(xiàn)一次短暫擁塞,在擁塞期間,同時出現(xiàn)應用程序的內(nèi)存泄漏問題逐漸加重。這種組合可以觀察應用在長期面對周期性故障和持續(xù)惡化的內(nèi)部故障時的表現(xiàn) | |
基于業(yè)務流程關(guān)鍵節(jié)點組合 | 核心業(yè)務流程故障組合:針對應用的核心業(yè)務流程設置故障。以在線支付流程為例,在用戶輸入支付信息階段,模擬輸入校驗模塊出現(xiàn)故障,接受錯誤格式的支付信息;同時在支付確認階段,模擬與支付網(wǎng)關(guān)通信故障,測試支付流程在多個關(guān)鍵節(jié)點故障下的健壯性 |
業(yè)務高峰與故障組合:結(jié)合業(yè)務使用高峰時段,疊加多種故障。例如,一個視頻播放應用在晚上用戶觀看高峰期,同時出現(xiàn)服務器 CPU 負載過高、視頻源文件損壞、CDN 節(jié)點故障等多種故障,測試應用在高業(yè)務壓力和復雜故障環(huán)境下能否保障用戶基本體驗 |
(場景樣例)核心依賴中間件MySQL請求延遲&CPU使用率增加場景
?場景描述:該場景主要在單應用模式下,在數(shù)據(jù)庫和CPU維度,參考故障的一般發(fā)生順序,進行組合注入,并同步觀察系統(tǒng)恢復能力。
?實際執(zhí)行層面,在植入CPU使用率和數(shù)據(jù)庫延遲故障時,預期觸發(fā)CPU和接口可用利率告警,但實際情況中,CPU告警按預期觸發(fā),但接口可用率報警并未觸發(fā)。
攻擊接口 | com.jdl.xxxxx.xxxxx.api.gather.xxxxx#queryWayGather | ||
攻擊步驟 | 預期結(jié)果 | 結(jié)論 | |
20個QPS將流量灌入對應機器(接口單機線上最大QPS 66) | 事務成功率100% | pass | |
植入故障1【cpu 使用率70%+MYSQL延遲2000ms】 | 期望:觸發(fā)cpu告警,觸發(fā)接口可用率告警 | fail | |
觀察到守方通過防守動作止損 | 事務成功率100%,CPU使用率60%以下,TP99恢復正常 | pass | |
植入故障2【針對擴容新增機器 植入cpu 使用率70%】 | 新機器持續(xù)cpu告警,持續(xù)擴容,保證分組下集群數(shù)量 | pass | |
觀察到守方通過防守動作止損 | 集群下所有機器事務成功率100%,CPU使用率60%以下,TP99恢復正常 | pass | |
調(diào)節(jié)壓測流量,QPS增加到1980(線上峰值3倍) | 服務可用率降低,CPU使用率持續(xù)增加,TP99上升 觸發(fā)方法調(diào)用次數(shù)告警 | pass | |
停止壓測腳本 | 流量停止灌入 | pass |
③多應用多故障場景組合構(gòu)建
場景構(gòu)建說明:多應用多故障場景的構(gòu)建,可基于單應用單故障的場景進行組合,可參考如下組合方式。目前針對該類型場景還未進行覆蓋,后續(xù)基于上下游系統(tǒng)的架構(gòu)分析和調(diào)用關(guān)系,進行組合。如應用A調(diào)用應用B,在給應用A植入故障的同時,B應用也進行故障植入。
組合方式 | 組合描述 |
基于業(yè)務流程的組合 | 串聯(lián)業(yè)務流程故障組合:業(yè)務場景 A發(fā)生一個故障,同時業(yè)務場景B也發(fā)生也一個故障,同時 A和B 是不同應用,業(yè)務流程串聯(lián) |
并發(fā)業(yè)務流程故障組合:業(yè)務場景 A發(fā)生一個故障,同時業(yè)務場景B也發(fā)生也一個故障,同時 A和B 是不同應用,業(yè)務流程并發(fā) | |
基于故障影響范圍的組合 | 局部與全局故障組合:局部故障可以是某個內(nèi)部使用的特定應用出現(xiàn)功能故障,全局故障則可以是影響整個企業(yè)的網(wǎng)絡故障或核心數(shù)據(jù)庫故障 |
關(guān)鍵與非關(guān)鍵應用故障組合:設置故障場景為核心業(yè)務系統(tǒng)出現(xiàn)數(shù)據(jù)庫連接池耗盡的故障,非核心應用發(fā)生另一個故障 | |
基于故障發(fā)生時間順序的組合 | 先后發(fā)生故障組合:先設置一個應用的故障,待其產(chǎn)生一定影響后,再觸發(fā)另一個應用的故障 |
周期性故障組合:設置某些故障周期性出現(xiàn),如每隔一段時間(如每天凌晨)出現(xiàn)故障A,同時,在每周的特定時間段(如周五下午業(yè)務高峰時段)出現(xiàn)故障B,組合參考 |
?
3)計劃外場景構(gòu)建
故障演練計劃外場景通常是指在沒有預先計劃或通知的情況下,模擬系統(tǒng)或服務出現(xiàn)故障的情境,以測試和提高系統(tǒng)的可靠性和團隊的應急響應能力。其主要特點包括:突發(fā)性、真實感、壓力測試、團隊協(xié)作。以下是在研發(fā)毫無防備的情況,進行的一次突襲式的故障演練例子:
混沌工程與傳統(tǒng)的故障引入測試,在注入場景和工具使用方面存在重疊。故障注入測試,是混沌工程實驗的一種驗證策略。 其本質(zhì)區(qū)別,是思維方式的差異 ,故障注人測試是通過已知故障和應急預案,確認系統(tǒng)對已知風險的承載能力。而混沌工程,是通過構(gòu)造諸如應急預案范圍外的故障場景,確認系統(tǒng)對未知風險的承載能力。
(場景樣例)JAVA進程線程池滿(未在演練劇本內(nèi)的故障,觀察系統(tǒng)應急能力)
通常在劇本評審階段,測試團隊會與架構(gòu)團隊完成全量場景評估,同時會提取部分場景,在約定演練時間計劃外執(zhí)行,研發(fā)團隊對此類故障的執(zhí)行計劃不知情,以此強化驗證其應急處理能力。
例如:在某計劃外場景演練過程中,發(fā)現(xiàn)2個問題,①當植入JAVA進程線程池滿的故障時,預期觸發(fā)CPU告警,研發(fā)團隊并未第一時間同步報備。②在故障停止時,預期所有機器及事務恢復正常,并由研發(fā)接口人報備同步恢復信息,但研發(fā)團隊并未第一時間同步報備。
由此可見,計劃外的場景,在識別系統(tǒng)應急能力之外,可更多反映研發(fā)團隊,在故障處理過程中的組織協(xié)同能力。
演練執(zhí)行 | |||
攻擊接口 | com.jdl.xxxxx.resource.api.message.xxxxx#isNeedVerificationCode | ||
攻擊步驟 | 預期結(jié)果 | 結(jié)論 | |
1個QPS將流量灌入對應機器 | 事務成功率100% | pass | |
植入JAVA進程線程池滿故障,觀察 | 10分鐘內(nèi)觸發(fā)CPU使用率告警,守方報備到備戰(zhàn)群,業(yè)務全部失敗 | fail | |
故障生效后立即調(diào)節(jié)壓測流量,QPS增加到10筆/s(日常量) | 服務可用率降低,CPU使用率持續(xù)增加,TP99上升 | pass | |
觀察到守方通過防守動作止損 | 集群下所有機器事務成功率100%,CPU使用率60%以下,TP99恢復正常 | pass | |
停止故障任務 | 集群下所有機器事務成功率100%,CPU使用率60%以下,TP99恢復正常 | fail | |
停止壓測腳本 | 流量停止灌入 | pass |
?
4)流量沖擊融合場景構(gòu)建
?系統(tǒng)在故障發(fā)生時,例如,C端用戶在響應卡滯情況下,如系統(tǒng)未給予明確的故障提示、降級方案或恢復預期,往往會通過重復操作,確認系統(tǒng)恢復進展,請求量存在倍增可能。
?后端平臺類系統(tǒng)對接,請求方往往會通過自動重試,嘗試重建成功請求,同時在長鏈路業(yè)務場景下,如鏈路各應用重試策略未統(tǒng)一,請求量存在倍增可能。以上,在故障恢復過程中,已部分恢復的服務,大概率會被倍增流量快速擊潰,造成系統(tǒng)可用性雪崩。有必要通過融合流量沖擊場景的混沌實驗,確認系統(tǒng)的極端風險承載能力。
(場景樣例)應用CPU滿載混合單機流量激增
?場景描述:在CPU滿載的情況下,模擬接口流量激增。首先植入CPU滿載,再調(diào)節(jié)注入流量,觀察整個處理過程。
演練執(zhí)行 | |||
攻擊接口 | 整個應用 | ||
攻擊步驟 | 預期結(jié)果 | 結(jié)論 | |
小流量注入 | 事務成功率100% | pass | |
植入故障CPU占用率80%,植入比例:70%,觀察 | CPU滿載,5分鐘內(nèi)觸發(fā)CPU使用率告警,守方報備到備戰(zhàn)群 | pass | |
調(diào)節(jié)壓測流量,單機QPS增加到1倍壓測流量(梯度),單機CPU占有率>60% | CPU使用率持續(xù)增加,TP99上升 | pass | |
調(diào)節(jié)壓測流量,單機QPS增加到2倍壓測流量(梯度),單機CPU占有率>80% | CPU使用率持續(xù)增加,TP99上升 | pass | |
觀察到守方通過防守動作止損 | 事務成功率100%,CPU使用率60%以下,TP99恢復正常 | pass | |
觀察到守方通過防守動作止損 | 集群下所有機器事務成功率100%,CPU使用率60%以下,TP99恢復正常 | pass | |
停止故障任務 | 集群下所有機器事務成功率100%,CPU使用率60%以下,TP99恢復正常 | pass | |
停止壓測腳本 | 流量停止注入 | pass |
d、實驗劇本構(gòu)建
1)劇本設計詳解
故障注入過程,尤其是在生產(chǎn)或準生產(chǎn)環(huán)境實驗,未經(jīng)評估的故障場景,極易造成線上生產(chǎn)異動,對實驗方案的嚴謹性以及人員的專業(yè)性,提出了更高的要求。實驗劇本構(gòu)建主要包括以下幾個要素。
劇本構(gòu)建核心要素 | 關(guān)鍵事項 | 準入標準 | 準出標準 |
明確實驗目標 | ·定義實驗目的:識別實驗的核心目的,例如提高系統(tǒng)的彈性、驗證故障處理機制、評估服務降級策略等。 ·選擇關(guān)鍵性能指標(KPIs):確定用于評估實驗結(jié)果的關(guān)鍵性能指標,如系統(tǒng)的響應時間、可用性、吞吐量、錯誤率等。 ·設定具體目標:制定具體的、可衡量的目標。例如,“在網(wǎng)絡延遲增加的情況下,系統(tǒng)響應時間不超過2秒”。 ·業(yè)務影響考量:確保實驗目標與業(yè)務目標相一致,評估實驗對業(yè)務連續(xù)性和用戶體驗的潛在影響。 | ·團隊準備:確保參與實驗的團隊成員了解實驗目的、流程和應急響應計劃。 ·確保業(yè)務影響最小化:制定策略,確保實驗不會對關(guān)鍵業(yè)務功能造成重大影響??梢酝ㄟ^選擇非高峰時段進行實驗或在實驗前進行業(yè)務影響評估。 ·風險識別:系統(tǒng)地識別實驗可能帶來的所有潛在風險,包括對系統(tǒng)穩(wěn)定性、數(shù)據(jù)完整性和業(yè)務連續(xù)性的影響。 | ·設定實驗范圍和條件:明確實驗的范圍(例如哪些服務或組件會受到影響)和條件(例如故障的持續(xù)時間、強度等)。 |
選擇故障場景 | ·識別潛在故障:通過對系統(tǒng)架構(gòu)、依賴關(guān)系和歷史故障記錄的分析,識別潛在的故障類型。包括網(wǎng)絡延遲、服務宕機、資源耗盡、數(shù)據(jù)庫故障、磁盤故障,超時、服務不存活等。 ·優(yōu)先級排序:根據(jù)故障對業(yè)務的影響程度進行排序。優(yōu)先選擇那些對關(guān)鍵業(yè)務流程影響較大的故障;考慮故障發(fā)生的可能性,優(yōu)先演練那些較高概率發(fā)生的故障。 ·場景細化:將故障場景具體化,包括故障的觸發(fā)條件、影響范圍和預期結(jié)果;考慮組合多個故障場景,模擬復雜環(huán)境下的系統(tǒng)行為。 | ·場景驗證:確保所選故障場景經(jīng)過驗證,可以在實驗環(huán)境中安全地注入和控制。 ·團隊準備:團隊成員應了解故障場景的細節(jié)、實驗步驟和應急響應計劃。 ·審批流程:實驗需要獲得相關(guān)方的批準,特別是涉及到關(guān)鍵業(yè)務系統(tǒng)時。 | ·可行性完成:評估故障場景的實施難度,包括技術(shù)可行性和資源需求,確保實驗能夠在現(xiàn)有條件下順利進行。 ·影響評估完成:預估故障場景可能對系統(tǒng)和用戶造成的影響,并確保其在可控范圍內(nèi),避免對生產(chǎn)環(huán)境造成嚴重影響。 |
設計實驗方案 | ·場景描述:詳細描述每個故障場景,包括故障類型、注入方式和預期影響。 ·步驟規(guī)劃:制定實驗的具體步驟,包括故障注入的時間、地點和方式。 ·成功標準:定義實驗的成功標準,即在故障條件下系統(tǒng)應達到的性能水平。 | ·風險評估:完成對實驗的風險評估,識別可能的風險和影響,并制定相應的緩解措施。 ·團隊準備:團隊成員已接受必要的培訓,了解實驗步驟、應急響應計劃和溝通渠道。 ·溝通計劃:確保所有相關(guān)方已被告知實驗的時間、范圍和可能的影響,并制定溝通計劃以便在實驗過程中及時更新信息。 | ·方案風險評估完成:評估實驗對系統(tǒng)和用戶的實際影響,確保實驗沒有導致不可接受的中斷或損害。 |
風險評估與應急預案 | ·風險識別:識別實驗可能帶來的風險,包括對系統(tǒng)穩(wěn)定性和業(yè)務運營的影響。 ·應急預案:制定緩解措施,如快速回滾計劃和應急響應方案。 | ·風險識別:系統(tǒng)地識別實驗可能帶來的所有潛在風險,包括對系統(tǒng)穩(wěn)定性、數(shù)據(jù)完整性和業(yè)務連續(xù)性的影響。 ·應急響應計劃:制定詳細的應急響應計劃,明確角色和責任,以便在實驗過程中快速響應任何突發(fā)問題。 ·審批和溝通:風險評估報告和緩解計劃需要獲得相關(guān)方的審核和批準。確保所有相關(guān)方都了解可能的風險和緩解措施。 | ·風險評估完成:完成對實驗風險的評估,并制定相應的應急預案。 |
實驗環(huán)境準備 | ·環(huán)境搭建:準備實驗環(huán)境,確保其與生產(chǎn)環(huán)境盡可能相似,以提高實驗結(jié)果的可靠性。 ·工具配置:配置必要的故障注入和監(jiān)控工具,確保能夠?qū)崟r收集和分析數(shù)據(jù)。 | ·環(huán)境驗證:驗證實驗環(huán)境的準備情況,包括配置、數(shù)據(jù)和工具的可用性。 ·溝通確認:確認所有相關(guān)方(如開發(fā)、運維、業(yè)務團隊)已收到實驗通知并同意進行實驗。 | ·環(huán)境隔離:確保實驗環(huán)境與生產(chǎn)環(huán)境適當隔離(成熟度高的可以不隔離),以避免實驗對生產(chǎn)系統(tǒng)造成不必要的影響。 ·環(huán)境一致性:驗證實驗環(huán)境的配置與生產(chǎn)環(huán)境盡可能一致,包括硬件、軟件版本、網(wǎng)絡配置等,以確保實驗結(jié)果的可用性和相關(guān)性。 ·資源可用性:確保實驗所需的所有資源(如計算資源、存儲、網(wǎng)絡帶寬)已準備就緒,并能夠支持實驗的順利進行。 |
實驗執(zhí)行與數(shù)據(jù)分析 | ·實時監(jiān)控:在實驗過程中,實時監(jiān)控系統(tǒng)狀態(tài)和關(guān)鍵指標,確保能夠快速識別和響應異常情況。 ·故障注入:按照實驗方案注入故障,觀察系統(tǒng)的反應。 ·數(shù)據(jù)收集:收集實驗期間的所有相關(guān)數(shù)據(jù),包括日志、監(jiān)控指標和用戶反饋。 ·結(jié)果分析:分析實驗結(jié)果,評估系統(tǒng)在故障條件下的表現(xiàn),并識別改進機會。 | ·風險評估完成:確保已進行全面的風險評估,識別潛在風險,并制定相應的緩解措施。 ·團隊準備就緒:所有相關(guān)團隊(如開發(fā)、運維、安全)已準備好,并了解各自的職責和應對措施。 ·應急計劃確認:確保應急計劃已制定并經(jīng)過驗證,所有團隊成員都清楚如何在緊急情況下快速恢復系統(tǒng)。 ·環(huán)境驗證:實驗環(huán)境已被驗證為與生產(chǎn)環(huán)境相似,并且所有必要的工具和配置已準備就緒。 ·溝通與批準:獲得所有相關(guān)方(包括管理層和業(yè)務團隊)的批準,確保他們了解實驗計劃和可能的影響。 ·監(jiān)控和日志系統(tǒng)在線:確保監(jiān)控和日志系統(tǒng)正常運行,以便實時追蹤實驗過程中系統(tǒng)的狀態(tài)和行為。 | ·實驗結(jié)果評估:對照預定的成功標準評估實驗結(jié)果,確保實驗目標已實現(xiàn)。 ·系統(tǒng)恢復確認:確保系統(tǒng)已恢復到正常運行狀態(tài),所有故障注入的影響已完全消除。 ·數(shù)據(jù)完整性驗證:檢查實驗期間的數(shù)據(jù)完整性,確保沒有數(shù)據(jù)丟失或損壞。 ·報告生成:生成詳細的實驗報告,包括實驗過程、結(jié)果、發(fā)現(xiàn)的問題和改進建議。 ·經(jīng)驗總結(jié)與分享:召開經(jīng)驗總結(jié)會議,分享實驗中的經(jīng)驗教訓,并更新相關(guān)的操作文檔和策略。 ·后續(xù)行動計劃:確定并記錄需要改進的領域和后續(xù)行動計劃,以提升系統(tǒng)的彈性和可靠性。 |
復盤與成熟度評估 | ·報告撰寫:撰寫詳細的實驗報告,記錄實驗過程、結(jié)果和發(fā)現(xiàn)的問題。 ·改進計劃:根據(jù)實驗結(jié)果制定系統(tǒng)改進計劃,并計劃后續(xù)步驟。 ·知識共享:將實驗結(jié)果和經(jīng)驗教訓分享給相關(guān)團隊,促進組織內(nèi)部的知識積累。 ·復盤會議:召開復盤會議,討論實驗中的亮點和不足,優(yōu)化未來的實驗流程。 ·成熟度改進:評估被演練系統(tǒng)服務成熟度。 | ·數(shù)據(jù)完整性:確保所有相關(guān)數(shù)據(jù)和日志已收集完畢,并且數(shù)據(jù)質(zhì)量足以支持有效分析。 ·參與者準備:確保所有關(guān)鍵參與者(如開發(fā)、運維、安全團隊成員)已準備好參與復盤會議,并了解實驗的背景和結(jié)果。 ·目標明確:復盤的目標和預期成果已明確,并傳達給所有參與者 ·成熟度評估:已完成對當前混沌工程實踐的成熟度評估,識別出需要改進的領域。 | ·問題識別與分析:已識別并分析實驗中的所有關(guān)鍵問題和挑戰(zhàn)。 ·成功與不足記錄:記錄實驗中的成功經(jīng)驗和不足之處,并分析其原因。 ·改進措施制定:制定具體的改進措施和后續(xù)行動計劃,并獲得相關(guān)方的認可。 ·文檔更新:更新相關(guān)文檔,包括操作手冊、實驗報告和改進計劃。 ·經(jīng)驗分享:將復盤結(jié)果和經(jīng)驗分享給更廣泛的團隊或組織,以促進知識共享。 |
2)劇本構(gòu)建樣例
?故障演練方案-快遞快運-分揀條線-2024年12月?
e、工具選型
1)工具選型原則
①功能特性
?復雜場景構(gòu)建:對于復雜的分布式系統(tǒng),尤其是包含多種技術(shù)棧(如同時有微服務、數(shù)據(jù)庫、消息隊列等)的系統(tǒng),需要選擇能夠模擬多種故障類型的工具,以更全面地測試系統(tǒng)的彈性。
?實驗場景定制化:混沌工程工具應該允許用戶根據(jù)自己的系統(tǒng)特點和需求定制實驗場景,提供豐富的實驗模板,并可通過修改這些模板或編寫自己的實驗腳本來定制實驗。這種靈活性使得用戶能夠模擬特定的業(yè)務場景下可能出現(xiàn)的故障,如模擬電商系統(tǒng)在購物高峰期時數(shù)據(jù)庫查詢緩慢的情況。
?系統(tǒng)集成能力:實驗工具需要能夠與企業(yè)現(xiàn)有的系統(tǒng)和工具集成,如監(jiān)控系統(tǒng)、日志系統(tǒng)等。通過插件或者 API 的方式實現(xiàn)與其他系統(tǒng)的集成,增強工具的實用性。
②環(huán)境適配
?容器化基礎設施兼容性:隨著容器技術(shù)和 Kubernetes 的廣泛應用,混沌工程工具需要加強對以上基礎環(huán)境的支持,更充分地兼容 Kubernetes(Pod、Deployment、Service 等),并進行有效的故障注入。
?云平臺兼容性:對于部署在云平臺(如 京東云、阿里云、騰訊云、華為云、百度云、GCP、IBM Cloud、Oracle Cloud、AWS、Azure、Ali 等)上的系統(tǒng),需要考慮工具是否與這些云平臺兼容,是否能夠提供針對特定云平臺的故障模擬功能,。例如,AWS S3 存儲桶故障、Azure 虛擬機故障等特定故障情況,以適應云環(huán)境下的實驗需求。
?跨平臺支持:對于同時在多種操作系統(tǒng)(如 Linux、Windows、Android、IOS、MacOS 等)和硬件架構(gòu)(如 x86、ARM)上運行的系統(tǒng),確保所選工具能夠在所有相關(guān)平臺上正常工作,避免出現(xiàn)因平臺差異導致實驗無法進行的情況。
③易用性和學習成本
?用戶界面友好程度
?直觀、易于操作的用戶界面可以降低用戶的學習成本和操作難度。例如,Gremlin 有一個相對直觀的 Web 界面,用戶可以通過簡單的操作(如選擇故障類型、目標系統(tǒng)等)來設置和啟動實驗。對于非技術(shù)人員或者剛接觸混沌工程的團隊成員來說,這樣的界面更容易上手。
?文檔和社區(qū)支持
?完善的文檔和活躍的社區(qū)可以幫助用戶更快地學習和使用工具。工具的官方文檔應該包括詳細的安裝指南、實驗設置說明、故障模擬類型介紹等內(nèi)容。同時,一個活躍的社區(qū)可以讓用戶分享經(jīng)驗、解決問題,例如在開源的混沌工程工具社區(qū)中,用戶可以找到其他使用者分享的自定義實驗場景案例,幫助自己更好地開展實驗。
④安全性和可靠性
?實驗風險控制
?混沌工程工具在進行故障注入時可能會對生產(chǎn)系統(tǒng)造成一定的風險,因此需要選擇能夠有效控制實驗風險的工具。一些工具提供了諸如 “安全模式” 或 “沙箱模式” 的功能,在這些模式下,故障注入的強度和范圍可以得到限制,并且可以提前設置好終止實驗的條件,以確保在系統(tǒng)出現(xiàn)異常時能夠及時停止實驗,避免對生產(chǎn)系統(tǒng)造成嚴重破壞。
?工具自身的可靠性
?工具本身應該是可靠的,不會因為自身的故障而導致實驗結(jié)果不準確或者對系統(tǒng)造成額外的干擾。可以查看工具的版本更新記錄、用戶評價等信息來了解工具的可靠性情況。例如,經(jīng)過多個企業(yè)長時間使用且更新頻繁的工具,通常在可靠性方面有更好的保障。
2)業(yè)界混沌工程解決方案
在混沌工程實踐里,通過模擬各類故障場景,像是模擬服務器崩潰、制造網(wǎng)絡延遲,或是觸發(fā)數(shù)據(jù)丟失狀況等方式,能夠極為精準地挖掘出系統(tǒng)中潛藏的薄弱環(huán)節(jié)。目前,市面上既有開源性質(zhì)的解決方案,也不乏商業(yè)化的專業(yè)工具。接下來,我們將著重對京東(JD)的混沌解決方案,以及其他具有代表性的開源方案展開詳細介紹。
①JD泰山混沌工程平臺(快快技術(shù)-首選解決方案平臺)
?簡介:是一款遵循混沌工程原理和混沌實驗模型的實驗注入工具,幫助用戶檢驗系統(tǒng)高可用、提升分布式系統(tǒng)的容錯能力,平臺使用簡單、調(diào)度安全。是基于 ChaosBlade 底座進行打造,并增加了JIMDB、JSF、JED等中間件類故障場景,讓大家可以精細地控制演練影響范圍(爆炸半徑)。
?特點:支持多種類型的故障,如基礎資源故障:CPU、 內(nèi)存、網(wǎng)絡、磁盤、進程;Java進程故障:進程內(nèi)CPU滿載、內(nèi)存溢出、類方法延遲/拋異常/篡改返回值、MYSQL請求故障、JIMDB請求故障、JSF請求故障;JED集群故障:集群分片主從切換、集群分片節(jié)點重啟
?適用場景:適用于復雜分布式系統(tǒng)和微服務架構(gòu)中的故障模擬,另外針對JD特有的服務可支持故障植入。
②業(yè)界工具平臺及能力對標
平臺/能力 | 特點 | 適用場景 |
云原生計算基金會托管項目,專注于 Kubernetes 環(huán)境中進行混沌工程實踐,可編排多種混沌實驗 | ·支持多種類型的故障注入,如 Pod 故障、網(wǎng)絡故障、文件系統(tǒng)故障、時間故障、壓力故障等 ·提供了直觀的 Web 界面 ChaosDashboard,方便用戶管理、設計和監(jiān)控混沌實驗 | 適用于云原生架構(gòu)下的系統(tǒng),幫助開發(fā)人員、運維人員在 Kubernetes 環(huán)境中測試應用程序和基礎設施的可靠性與穩(wěn)定性,如基礎資源故障,Java應用故障等 |
Kubernetes 原生的混沌工程開源平臺,以其強大的故障創(chuàng)建與編排能力著稱 | ·擁有故障注入實驗市場 ChaosHub,提供大量可定制的實驗模板,支持多種故障注入類型,涵蓋通用、各大云平臺及 Spring Boot 等多種場景 ·可與 Prometheus 等可觀測性工具原生集成,方便監(jiān)控故障注入實驗的影響 | 適用于不同技術(shù)背景的團隊,在 Kubernetes 環(huán)境中進行混沌工程實踐,幫助識別系統(tǒng)中的弱點和潛在停機隱患。如可模擬存儲故障,CICD管道層面故障等 |
阿里巴巴開源的混沌工程工具,可針對主機基礎資源、容器、Kubernetes 平臺、Java 應用、C++ 應用、阿里云平臺及其他服務等多達 7 個場景開展故障注入實驗 | ·支持在多種環(huán)境中進行故障注入,能夠模擬各種復雜的故障場景,如 CPU 滿載、內(nèi)存泄漏、網(wǎng)絡延遲等資源層面的故障,還能深入到應用層對特定方法進行故障注入 ·具有易用性和靈活性,通過簡單的 CLI 命令行工具進行故障注入 ·支持動態(tài)加載和無侵入式的實驗設計 | 適用于復雜分布式系統(tǒng)和微服務架構(gòu)中的故障模擬,幫助團隊提前發(fā)現(xiàn)系統(tǒng)中的薄弱環(huán)節(jié)。能夠模擬一些中間件的故障,如云原生故障等 |
輕量級、靈活且易于集成的混沌工程工具,允許用戶以聲明式的方式定義各種故障注入場景 | ·支持使用 YAML 文件定義混沌實驗,內(nèi)置多種故障模型,如 Pod Kill、Network Latency、Disk IO Stress 等 ·深度集成 Kubernetes,提供友好的 Web 界面和 RESTful API,方便操作與集成 | 適用于開發(fā)者和運維人員在 Kubernetes 環(huán)境中進行混沌工程實驗,可作為新功能上線前的測試、持續(xù)集成 / 持續(xù)交付流程的一部分,以及故障恢復訓練等 |
功能全面的混沌工程工具,提供了直觀的 Web 界面,可模擬多種故障場景,包括服務器故障、網(wǎng)絡延遲、丟包、數(shù)據(jù)庫故障、容器故障等 | ·具備強大的故障模擬能力和靈活的實驗配置選項,可與多種監(jiān)控和日志工具集成,方便用戶在實驗過程中觀察系統(tǒng)的狀態(tài)變化 ·提供了 “安全模式” 或 “沙箱模式” 等風險控制功能,確保實驗的安全性 | 適用于各種規(guī)模和架構(gòu)的分布式系統(tǒng),幫助企業(yè)提升系統(tǒng)的彈性和穩(wěn)定性,尤其適合對安全性和風險控制要求較高的生產(chǎn)環(huán)境 |
亞馬遜推出的混沌工程工具,專門用于在 AWS 云平臺上進行故障注入實驗 | ·可模擬 AWS 云服務的各種故障情況,如 EC2 實例故障、S3 存儲桶故障、RDS 數(shù)據(jù)庫故障等 ·與 AWS 的其他服務和工具集成緊密,方便用戶在云環(huán)境中進行全面的系統(tǒng)測試 | 適用于使用 AWS 云平臺的企業(yè)和開發(fā)者,幫助他們在云環(huán)境中評估系統(tǒng)的可靠性和彈性,確保應用程序能夠在 AWS 云服務出現(xiàn)故障時正常運行 |
?
f、執(zhí)行實驗
1)系統(tǒng)架構(gòu)分析
①架構(gòu)分析的必要性
系統(tǒng)級架構(gòu)分析,是所有穩(wěn)定性保障工作開展的首要條件。通過對系統(tǒng)機構(gòu)的充分理解和分析,才能準確識別故障演練的切入點(可能的弱點),以下,是系統(tǒng)架構(gòu)分析的必要環(huán)節(jié)和目的。
②識別關(guān)鍵組件和依賴關(guān)系
系統(tǒng)架構(gòu)分析幫助識別系統(tǒng)中關(guān)鍵的組件和服務,以及它們之間的依賴關(guān)系。這有助于確定哪些部分對系統(tǒng)的整體功能至關(guān)重要,并需要優(yōu)先進行故障演練。
③理解數(shù)據(jù)流和通信路徑
分析架構(gòu)可以揭示數(shù)據(jù)在系統(tǒng)內(nèi)的流動路徑和通信模式。這有助于設計針對網(wǎng)絡延遲、帶寬限制或通信中斷的故障演練。
④識別單點故障
系統(tǒng)架構(gòu)分析可以幫助識別系統(tǒng)中的單點故障,這些是可能導致整個系統(tǒng)崩潰的薄弱環(huán)節(jié)。通過故障演練,可以測試這些點的冗余性和故障恢復能力。
⑤優(yōu)化故障演練設計
了解系統(tǒng)架構(gòu)可以幫助設計更加真實和有針對性的故障場景,從而提高故障演練的有效性和相關(guān)性。
⑥評估故障影響范圍
系統(tǒng)架構(gòu)分析可以幫助預測故障可能影響的范圍和程度,從而為故障演練設定合理的范圍和目標。
⑦加強團隊的協(xié)作與溝通
通過架構(gòu)分析,團隊成員可以更好地理解系統(tǒng)的整體設計和各自的角色。這有助于在故障演練中提高團隊的響應能力和協(xié)作效率。
⑧支持持續(xù)改進:
架構(gòu)分析提供了一個基準,用于在故障演練后評估系統(tǒng)的改進效果。通過反復的分析和演練,可以不斷優(yōu)化系統(tǒng)架構(gòu),提高系統(tǒng)的彈性。
?
總之,系統(tǒng)架構(gòu)分析是故障演練的基礎,它確保演練的設計和實施是有針對性的,并能有效地提高系統(tǒng)的可靠性和穩(wěn)定性。
?
2)架構(gòu)分析案例
①架構(gòu)分析要求
?梳理系統(tǒng)全局架構(gòu)圖,標注演練(壓測同理)入口。
?梳理演練(壓測同理)接口調(diào)用架構(gòu)圖,標識調(diào)用鏈路強弱依賴、調(diào)用層級關(guān)系以及演練(壓測同理)切入點。
?沉淀調(diào)用鏈路信息文檔。
(圖例)系統(tǒng)總架構(gòu)圖
(圖例)單接口調(diào)用架構(gòu)圖
②調(diào)用鏈梳理文檔(樣例):快快接口梳理(常態(tài)化演練)?
3)實驗方案
在生產(chǎn)環(huán)境或測試環(huán)境中執(zhí)行實驗,觀察系統(tǒng)在各種故障情況下的行為。在執(zhí)行實驗過程中,應嚴格遵照劇本要求明確分工及實驗步驟,密切關(guān)注系統(tǒng)的穩(wěn)定狀態(tài)指標,確保實驗不會對用戶造成不良影響。故障演練劇本?
①方案樣例
實驗方案實施過程中,應嚴格按照分工和劇本執(zhí)行,第一時間留存關(guān)鍵證據(jù),記錄關(guān)鍵步驟結(jié)論。
演練過程記錄 | |||
環(huán)節(jié) | 時間線 | 舉證 | |
故障開始注入時間 (攻方填寫) | 2024-12-26 17:54:55 |
![]() |
|
故障停止注入時間(攻方填寫) | 2024-12-26 18:16:15 |
![]() |
|
告警觸發(fā)及識別時間(守方填寫) | 2024-12-26 17:58:00 |
![]() |
|
定位時間(守方填寫) | 2024-12-26 18:05:00 |
![]() |
|
止損時間(守方填寫) | 2024-12-26 18:09:00 |
![]() |
|
故障恢復時間(守方填寫) | 2024-12-26 18:10:00 |
![]() |
|
MTTR(攻方填寫) | 22min |
?
g、結(jié)果分析
?對實驗結(jié)果進行分析,找出系統(tǒng)中的潛在問題和薄弱環(huán)節(jié)。分析實驗結(jié)果可以使用數(shù)據(jù)分析工具、監(jiān)控工具或日志分析工具等。針對實驗結(jié)果總結(jié)經(jīng)驗并后續(xù)做針對性改進。
?樣例:如針對某一個應用,演練完成之后,會從以下維度評估,并總結(jié)經(jīng)驗。
?應用:workbench-xxxxx-backend-xxxxx
?故障場景:強依賴JSF超時不可用+弱依賴JSF超時不可用
?故障時間:2025-01-02 21:14:38 ~ 2025-01-02 21:35:00
?問題現(xiàn)象
?下游強依賴接口(計費系統(tǒng))持續(xù)響應3S,TP99飚高,可用率未下降,仍100%
?從植入故障到引起監(jiān)控報警,間隔13min,該接口性能告警配置建議調(diào)整時間(現(xiàn)狀:5次/分鐘超過配置的閾值則報警,并在10分鐘內(nèi)不重復報警)
?問題原因
?針對強依賴接口,下游超時未上報可用率下降
?告警時間配置10min,告警配置不敏感
?改進措施
?針對強依賴接口,下游超時上報可用率下降
?更改UMP告警配置,更改為5min告警1次
?
h、問題修復及重復實驗
?根據(jù)實驗結(jié)果,修復系統(tǒng)中的潛在問題和薄弱環(huán)節(jié)。之后重復進行實驗,以驗證修復效果并進一步提高系統(tǒng)的彈性和穩(wěn)定性。
?目前快快技術(shù)團隊,在演練過程中,關(guān)鍵問題修復之后,會針對性進行二次驗證。
?
i、成熟度評估
1)什么是混沌工程成熟度模型
混沌工程成熟度模型是一種框架,用于評估和指導組織在實施混沌工程實踐中的發(fā)展階段和成熟度。這個模型幫助組織理解它們在混沌工程實踐中的位置,并為進一步改進提供路線圖。
通常,混沌工程成熟度模型會分為幾個階段,每個階段代表不同的能力和實踐水平,通常包括初始階段、基礎階段(初級)、標準化階段(發(fā)展中)、優(yōu)化階段(成熟)、創(chuàng)新階段(卓越)。
混沌工程成熟度模型的演變可以幫助組織系統(tǒng)化地實施混沌實驗,并逐步提高其混沌工程實踐的成熟度。通過系統(tǒng)化的成熟度評估,組織可以更有效地實施混沌工程實踐,提升其整體系統(tǒng)的穩(wěn)健性和響應能力。
混沌工程成熟度模型的演變反映了組織在復雜系統(tǒng)環(huán)境中不斷追求更高彈性和可靠性的努力,結(jié)合業(yè)內(nèi)對成熟度模型理解和京東實際情況,對成熟度框架進行剪裁(去掉接納度維度和初始階段),剪裁后的成熟度框架如下。
成熟度等級 | 1級(初級) | 2級(發(fā)展中) | 3級(成熟) | 4級(卓越) |
架構(gòu)抵御故障的能力(系統(tǒng)維度) | 一定冗余 統(tǒng)中存在備份或多個實例,以防單點故障。在硬件層面,可以有多個服務器或數(shù)據(jù)中心;在軟件層面,可以有多個服務實例或數(shù)據(jù)庫副本。(多機房無單點) | 冗余且可擴展 除了具備一定的冗余之外,系統(tǒng)還應該能夠根據(jù)需求進行水平或垂直擴展。水平擴展是指增加更多的服務器或?qū)嵗怪睌U展是指升級現(xiàn)有服務器的硬件配置??蓴U展性允許系統(tǒng)在面臨高負載或增長時繼續(xù)提供服務。 | 已使用可避免級聯(lián)故障技術(shù) 級聯(lián)故障是指一個故障導致一系列其他故障的連鎖反應。為了避免這種情況,可以使用技術(shù)如熔斷(Circuit Breaker)、隔離(Bulkhead)和限流(Rate Limiting)。(垂直部署) | 已實現(xiàn)韌性架構(gòu) 韌性架構(gòu)是指系統(tǒng)在面臨異常情況(如高負載、網(wǎng)絡中斷或硬件故障)時仍能保持一定的功能和性能。實現(xiàn)韌性架構(gòu)通常需要設計和實施多種策略,包括上述的冗余、可擴展性和避免級聯(lián)故障技術(shù),以及其他技術(shù)如自動恢復(自動重啟、自動回滾等)、自適應負載平衡和實時監(jiān)控等。 |
指標監(jiān)控能力(系統(tǒng)維度) | 實驗結(jié)果只反映系統(tǒng)狀態(tài)指標 實驗結(jié)果主要關(guān)注系統(tǒng)的基礎健康狀態(tài)指標,例如CPU使用率、內(nèi)存使用率、磁盤空間等。這些指標可以幫助你了解系統(tǒng)在故障情況下的表現(xiàn)(具備MDC監(jiān)控) | 實驗結(jié)果反應健康狀態(tài)指標 除了基礎系統(tǒng)狀態(tài)指標外,實驗結(jié)果還會考慮更高級別的健康狀態(tài)指標,例如服務可用性、響應時間、錯誤率等。這些指標可以提供關(guān)于系統(tǒng)整體健康狀況的更深入的見解。(具備UMP和Pfinder監(jiān)控,應用健康度評分90分以上) | 實驗結(jié)果反應聚合的業(yè)務指標 實驗結(jié)果會聚焦于與業(yè)務相關(guān)的指標,例如訂單處理速度、用戶會話數(shù)、轉(zhuǎn)化率等。這些指標可以幫助你了解故障對業(yè)務流程和用戶體驗的影響。(具備業(yè)務監(jiān)控能力) | 有對照組比較業(yè)務指標差異 除了上述指標外,還會設置一個對照組(即沒有故障的基線組)來與實驗組進行比較。通過比較兩組的業(yè)務指標差異,可以更準確地評估故障對業(yè)務的實際影響。 |
實驗環(huán)境選擇(系統(tǒng)維度) | 可在預生產(chǎn)環(huán)境運行試驗 在接近生產(chǎn)環(huán)境的設置中進行試驗,預生產(chǎn)環(huán)境通常與生產(chǎn)環(huán)境具有相似的配置和數(shù)據(jù),可以幫助你在不影響實際用戶的情況下評估系統(tǒng)的彈性。 | 復制生產(chǎn)流量在灰度環(huán)境運行 在一個專門設計的灰度環(huán)境中模擬生產(chǎn)環(huán)境的流量和負載。通過這種方式,你可以在真實的生產(chǎn)條件下測試系統(tǒng)的彈性,而不直接影響到實際用戶。 | 在生產(chǎn)環(huán)境中運行實驗 需要非常小心和謹慎,只有當你有足夠的信心和準備工作時,才應該考慮在生產(chǎn)環(huán)境中進行混沌工程實驗。這種方法可以提供最真實的結(jié)果,但也存在最大的風險。 | 包含生產(chǎn)在內(nèi)的任意環(huán)境都可進行實驗 這種說法并不完全正確。雖然理論上可以在任何環(huán)境中進行混沌工程實驗,但在實踐中,需要根據(jù)具體的系統(tǒng)和業(yè)務需求來選擇合適的環(huán)境。例如,對于關(guān)鍵系統(tǒng)或高風險應用,可能不適合直接在生產(chǎn)環(huán)境中進行實驗。 |
故障注入場景和爆炸半徑范圍(系統(tǒng)維度) | 進行一些基礎的演練場景注入 選擇注入一些基本的故障場景,例如突然終止一個進程、關(guān)閉一個服務或者模擬機器崩潰等。這些場景可以幫助你了解系統(tǒng)在面對單一故障時的反應。 | 注入較高級的故障場景 注入更復雜的故障場景,例如網(wǎng)絡延遲、數(shù)據(jù)庫延遲或者是第三方服務不可用等。這些場景可以模擬更真實的生產(chǎn)環(huán)境中的問題。 | 引入服務級別的影響和組合式演練場景 注入涉及多個服務的復雜故障場景,例如同時模擬多個微服務的故障、網(wǎng)絡分區(qū)或者是負載均衡器失效等。這些場景可以幫助你了解系統(tǒng)在面對多個故障同時發(fā)生時的行為。 | 基于業(yè)務注入故障 注入更高級別的故障,例如模擬用戶的不同使用模式、返回結(jié)果的變化或者是異常結(jié)果的出現(xiàn)等。這些場景可以幫助你理解系統(tǒng)在面對非標準輸入或輸出時的彈性。 |
試驗自動化(基礎設施維度) | 利用工具進行半自動化試驗 使用工具來輔助試驗的某些步驟,但仍需要人工干預。例如,使用腳本來模擬故障或生成負載,而人工負責啟動和監(jiān)控試驗。 | 自動創(chuàng)建、運行實驗,但需要手動監(jiān)控和停止 試驗的創(chuàng)建和運行可以被自動化,例如使用CI/CD流程來部署和執(zhí)行試驗。然而,仍然需要人工監(jiān)控試驗的進展和結(jié)果,并在必要時手動停止試驗。 | 自動結(jié)果分析,自動終止試驗 系統(tǒng)可以自動檢測到試驗的結(jié)果,并根據(jù)預設的規(guī)則自動終止試驗。例如,如果系統(tǒng)的性能下降超過某個閾值,試驗將被自動停止。 | 自動設計、實現(xiàn)、執(zhí)行、終止實驗 整個混沌工程流程都被自動化。系統(tǒng)可以自主設計試驗、選擇適當?shù)沫h(huán)境、執(zhí)行試驗、分析結(jié)果,并根據(jù)結(jié)果自動調(diào)整或終止試驗。這種級別的自動化需要高度復雜的系統(tǒng)和算法支持。 |
工具使用(基礎設施維度) | 采用試驗工具 選擇一款專門設計用于混沌工程的試驗工具,例如Chaos Monkey、Gremlin、Pumba等。這些工具可以幫助你模擬各種故障和壓力測試,評估系統(tǒng)的彈性。(泰山—風險管理—混沌工程) | 使用試驗框架 選擇使用一個更全面的試驗框架,例如Chaos Toolkit或Litmus。這些框架提供了更豐富的功能,包括試驗設計、執(zhí)行、監(jiān)控和結(jié)果分析等。(泰山—風險管理—混沌工程) | 實驗框架和持續(xù)發(fā)布工具集成 將混沌工程工具與持續(xù)發(fā)布(CI/CD)工具集成,例如Jenkins、GitLab CI/CD或CircleCI。這樣可以實現(xiàn)自動化的混沌工程流程,例如在每次代碼部署后自動運行一系列混沌工程試驗。 | 工具支持交互式的比對實驗 工具不僅可以執(zhí)行混沌工程試驗,還可以提供交互式的比對實驗功能。例如,你可以使用工具來比較兩種不同的系統(tǒng)配置或版本在面對相同的故障情況下的表現(xiàn)差異。這種功能可以幫助你更深入地理解系統(tǒng)的彈性和性能。 |
環(huán)境恢復能力(基礎設施維度) | 可手動恢復環(huán)境 需要手動介入來恢復環(huán)境。這可能涉及到重新啟動服務、清理日志文件、調(diào)整配置等步驟。雖然這種方法可以解決問題,但它通常需要更多的時間和人力資源。 | 可半自動恢復環(huán)境 系統(tǒng)具備一些自動化的恢復功能,例如自動重啟服務或者自動清理日志文件。然而,仍然需要系統(tǒng)管理員的介入來執(zhí)行其他恢復步驟(比如手動恢復數(shù)據(jù)、手動回滾代碼等)。這種方法可以加快恢復過程,但仍然依賴于人工干預 | 部分可自動化恢復環(huán)境 系統(tǒng)的恢復過程可以被大部分自動化。例如,系統(tǒng)可以自動檢測故障并嘗試恢復,或者在出現(xiàn)問題時自動切換到備用系統(tǒng)。雖然仍然可能需要人工干預來解決某些問題(比如未知類型故障、數(shù)據(jù)一致性問題、安全問題等),但自動化程度已經(jīng)大大提高。 | 韌性架構(gòu)自動恢復 系統(tǒng)可以自動檢測和響應任何類型的故障,包括那些在設計時未被預見的故障。這種能力通常需要一個高度彈性和自適應的架構(gòu),例如微服務架構(gòu)、容器化環(huán)境或者云原生應用。系統(tǒng)可以自動擴展、縮小、重啟服務或者重新路由流量,以確保服務的連續(xù)性。 |
實驗結(jié)果整理(基礎設施維度) | 可以通過實驗工具得到實驗結(jié)果,需要人工整理、分析和解讀 實驗工具會生成大量的數(shù)據(jù),包括系統(tǒng)指標、錯誤日志、用戶行為等。這些數(shù)據(jù)需要人工進行整理、分析和解讀,以便從中提取有用的信息和洞察。 | 可以通過實驗工具持續(xù)收集實驗結(jié)果,但需人工分析和解讀 實驗工具不僅可以在實驗期間收集數(shù)據(jù),還可以在日常運營中持續(xù)監(jiān)控系統(tǒng)的狀態(tài)。這樣可以幫助團隊更早地發(fā)現(xiàn)問題并進行修復。然而,仍然需要人工分析和解讀這些數(shù)據(jù),以便理解系統(tǒng)的行為和性能。 | 可以通過實驗持續(xù)收集實驗結(jié)果和報告,并完成簡單的故障分析 實驗結(jié)果處理已經(jīng)具備了一定的自動化能力。實驗工具可以自動收集數(shù)據(jù)、生成報告,并進行初步的故障分析。這樣可以大大減輕人工的工作量。但是,對于復雜的故障或深入的分析,仍然需要人工的介入。 | 實驗結(jié)果可預測收入損失、并完成容量規(guī)劃、區(qū)分出不容服務實際的關(guān)鍵程度 通過對實驗結(jié)果的深入分析和建模,可以預測系統(tǒng)故障可能帶來的收入損失,并據(jù)此進行容量規(guī)劃和資源優(yōu)化。同時,可以通過實驗結(jié)果來區(qū)分哪些服務或功能是關(guān)鍵的,哪些是非關(guān)鍵的,從而有針對性地進行改進和優(yōu)化。 |
2)成熟度評估案例
基于成熟度模型的關(guān)鍵維度,我們對多個研發(fā)團隊,進行了實際的落地評估工作,具體某個團隊的評估過程,詳見下表。
成熟度等級 | 最終評級 | 舉證 | 待提升項(距離下一等級) |
架構(gòu)抵御故障的能力 | 二級 |
擴容,有水平擴展的能力![]() |
具備技術(shù)熔斷能力 |
指標監(jiān)控能力 | 三級 |
除了ump等基本監(jiān)控之外,具備業(yè)務監(jiān)控的能力![]() |
設置對照組,針對演練的分組和實際分組做業(yè)務監(jiān)控對比,找出差異 |
實驗環(huán)境選擇 | 二級 |
生產(chǎn)環(huán)境無生產(chǎn)流量演練![]() |
可在生產(chǎn)環(huán)境帶生產(chǎn)流量進行演練 |
故障注入場景和爆炸半徑范圍 | 三級 |
多個場景混合注入故障![]() |
基于業(yè)務場景構(gòu)造故障,在通用故障的基礎上,加入業(yè)務的場景 |
4、移動端混沌實驗
結(jié)合移動端特性與現(xiàn)有穩(wěn)定性測試基礎,以下為混沌工程在移動端的系統(tǒng)性實施框架,涵蓋設計原則、核心要素、工具鏈及落地步驟。
a、核心原則
核心原則 | 描述 |
以業(yè)務場景為中心 | 故障注入圍繞核心業(yè)務流程,如物流中的攬收、派送子域,確保關(guān)鍵路徑的韌性 |
漸進式風險暴露 | 從單點可控故障開始,如模擬API超時,逐步升級至復雜故障鏈,如網(wǎng)絡中斷、服務端熔斷 |
可觀測性驅(qū)動 | 故障注入需同步監(jiān)控業(yè)務指標,如成功率、耗時,和系統(tǒng)指標,如崩潰率、資源占用率 |
安全邊界控制 | 通過環(huán)境隔離,如僅限測試環(huán)境、預發(fā)環(huán)境隔離,和熔斷機制,如自動終止破壞性實驗規(guī)避生產(chǎn)事故 |
b、核心要素
1)故障場景庫設計
故障類型 | 典型場景 | 注入手段 |
網(wǎng)絡層 | 5G/弱網(wǎng)切換、DNS劫持、TCP丟包 | Charles弱網(wǎng)模擬、OkHttp MockWebServer |
設備層 | 強制殺進程、模擬內(nèi)存泄漏、電池耗盡 | ADB命令(adb shell am force-stop)、Xcode工具鏈 |
應用層 | 主線程阻塞、依賴服務(如地圖SDK)超時 | 代碼插樁(AOP)、第三方SDK Mock工具 |
數(shù)據(jù)層 | 本地數(shù)據(jù)庫損壞、緩存過期、時間篡改 | 文件系統(tǒng)操作、SQLite注入異常 |
安全層 | 中間人攻擊、證書校驗繞過、敏感數(shù)據(jù)明文存儲 | Wireshark抓包篡改、Frida動態(tài)Hook |
2)實驗優(yōu)先級矩陣
業(yè)務影響 | 發(fā)生概率 | 實驗優(yōu)先級 |
高 | 高 | P0(立即修復) |
高 | 低 | P1(灰度驗證) |
低 | 高 | P2(監(jiān)控優(yōu)化) |
低 | 低 | P3(長期規(guī)劃) |
c、工具鏈與自動化集成
1)分層工具矩陣
層級 | 推薦工具 | 適用場景 |
網(wǎng)絡模擬 | Charles、ATC、Facebook Augmented Traffic Control | 弱網(wǎng)、斷網(wǎng)、協(xié)議級攻擊測試 |
設備控制 | ADB、iOS Simulator CLI、Google Espresso | 進程終止、傳感器模擬、自動化操作注入 |
故障注入 | Chaos Mesh、Pumba、自研SDK | 容器級資源限制、服務端聯(lián)調(diào)故障 |
監(jiān)控分析 | Firebase Crashlytics、Prometheus+Grafana | 崩潰追蹤、性能指標實時可視化 |
2)自動化流水線設計
d、落地實施步驟
1)設備覆蓋計劃
測試設備根據(jù)一線使用頻率較高的系統(tǒng)版本和設備類型的TOP3來選擇。
2)常態(tài)化落地機制(弱網(wǎng)與斷網(wǎng)故障注入深度實踐)
弱網(wǎng)與斷網(wǎng)測試,是驗證應用網(wǎng)絡韌性的核心環(huán)節(jié)。通過Charles工具鏈與深度業(yè)務場景結(jié)合,系統(tǒng)性驗證了移動端在極端網(wǎng)絡條件下的行為,為后續(xù)自動化混沌工程流水線建設提供了實踐范本。未來可進一步與mpaas監(jiān)控、灰度發(fā)布聯(lián)動,實現(xiàn)“故障注入-監(jiān)控告警-自動修復”閉環(huán)。以小哥工作臺APP為例,其測試實施過程如下:
測試方法與工具鏈 | 工具選型:基于Charles Proxy實現(xiàn)網(wǎng)絡故障注入,通過抓包攔截與網(wǎng)絡參數(shù)動態(tài)配置,模擬2G/3G/4G等網(wǎng)絡類型,支持自定義帶寬(如上行50kbps/下行100kbps)、延時(300ms~5s)、丟包率(10%~30%)及穩(wěn)定性(周期性斷網(wǎng)) |
前置條件:開通測試設備與Charles的網(wǎng)絡互訪權(quán)限,確保流量可被代理捕獲;構(gòu)建Debug包以繞過證書校驗限制,支持HTTPS請求解析。 | |
場景覆蓋與問題挖掘 | 業(yè)務場景:圍繞攬收、派送等核心流程,覆蓋100+關(guān)鍵交互節(jié)點,包括:訂單提交時的網(wǎng)絡閃斷重試;離線模式下地址信息本地緩存與同步;弱網(wǎng)環(huán)境下的圖片上傳降級策略 |
問題發(fā)現(xiàn):累計識別20+韌性缺陷,如以下3類。 ①網(wǎng)絡切換容錯缺失:Wi-Fi與蜂窩網(wǎng)絡切換時,偶現(xiàn)任務狀態(tài)丟失; ②重試風暴:斷網(wǎng)恢復后,客戶端未采用指數(shù)退避策略,導致服務端瞬時流量激增; ③離線數(shù)據(jù)沖突:多設備離線操作后,數(shù)據(jù)合并邏輯異常引發(fā)業(yè)務臟數(shù)據(jù)。 | |
優(yōu)化方向 | 流程提效:推動去Debug包依賴,采用OkHttp MockWebServer或Charles Map Local功能,直接劫持線上包API響應,減少構(gòu)建成本; 構(gòu)建自動化弱網(wǎng)場景庫,將典型配置(如電梯、樓宇網(wǎng)絡)預設為腳本,一鍵觸發(fā)測試。 |
?
5、AI大模型與混沌工程的雙向融合
a、AI場景下的混沌實驗
1)AI大模型系統(tǒng)與傳統(tǒng)系統(tǒng)的差異
隨著AI大模型技術(shù)的快速發(fā)展,各行各業(yè)的傳統(tǒng)系統(tǒng)都在逐步融合AI大模型能力,那么由此給混沌實驗帶來了新的挑戰(zhàn),與傳統(tǒng)系統(tǒng)的混沌實驗相比,融合了AI大模型能力的系統(tǒng)則會有一定的差異性,如下:
維度 | 傳統(tǒng)系統(tǒng) | AI大模型融合系統(tǒng) |
實驗原理 | 基于確定性規(guī)則(如手動觸發(fā)服務宕機、模擬流量激增)。 | 結(jié)合AI生成對抗性故障(如動態(tài)調(diào)整故障參數(shù)、模擬數(shù)據(jù)分布偏移)。 |
實驗目標 | 驗證系統(tǒng)對已知故障(如網(wǎng)絡延遲、服務宕機)的容錯能力,確保預設的冗余、熔斷等機制有效。 | 包括傳統(tǒng)系統(tǒng)既有的實驗目標以外,還需: 1、驗證AI模型的動態(tài)適應能力(如故障預測、自愈決策),驗證系統(tǒng)在復雜、動態(tài)環(huán)境中的智能響應能力。 2、評估AI模型的魯棒性(如對抗數(shù)據(jù)擾動、模型漂移)、AI與人類決策的協(xié)作效率 |
場景設計 | 硬件/網(wǎng)絡故障、服務中斷 | 數(shù)據(jù)異常、模型推理瓶頸、算力動態(tài)調(diào)度 |
監(jiān)控指標 | 基礎資源、接口調(diào)用、服務可用性(SLA)、平均恢復時間(MTTR)、錯誤率。 | 保留傳統(tǒng)指標,并新增AI相關(guān)指標: - 模型推理延遲、決策準確率; - 異常檢測召回率; - 動態(tài)策略調(diào)整效率。 -數(shù)據(jù)質(zhì)量(如特征分布偏移)、模型置信度、AI與人類決策一致性。 |
結(jié)果分析 | 單點故障定位、容錯機制驗證 | 模型魯棒性評估、數(shù)據(jù)鏈路風險、業(yè)務影響量化 |
因此,在對AI大模型融合系統(tǒng)實施混沌實驗時,在滿足傳統(tǒng)系統(tǒng)混沌實驗關(guān)注點的同時,還需要更加關(guān)注模型服務可靠性(如推理延遲、數(shù)據(jù)異常影響),覆蓋數(shù)據(jù)噪聲、GPU資源爭用及模型輸出漂移等復雜場景,指標監(jiān)控上應額外追蹤模型性能(如準確率)、數(shù)據(jù)分布偏移及GPU利用率。在進行結(jié)果分析時需量化模型魯棒性、數(shù)據(jù)鏈路風險及業(yè)務間接損失(如用戶信任)。
?
2)AI大模型混沌工程實驗
①實驗目標
?驗證大模型服務降級/熔斷策略的有效性
?測試模型服務與業(yè)務系統(tǒng)的異常協(xié)同能力
?檢測數(shù)據(jù)流-模型-業(yè)務鏈路的健壯性
?驗證模型性能監(jiān)控與自動恢復機制。
②實驗原則
?最小化爆炸半徑:從非核心業(yè)務開始,逐步擴大范圍
?可觀測性:確保所有操作可監(jiān)控、可記錄、可回滾
?穩(wěn)態(tài)假設:明確定義系統(tǒng)正常運行的指標(如成功率、延遲、QPS等)
?生產(chǎn)環(huán)境優(yōu)先:優(yōu)先在生產(chǎn)環(huán)境進行(需嚴格規(guī)劃)
③實驗標準
實驗準入 | 實驗準出 |
演練前,研測雙方,未完成演練分組確認、數(shù)據(jù)隔離確認,禁止啟動演練 | 故障識別效率:守方在5分鐘內(nèi)識別故障,同時在“常態(tài)化備戰(zhàn)群”報備故障 |
演練場景,未通過研測聯(lián)合評審,并發(fā)出評審紀要,禁止啟動演練 | 故障定位效率:守方在10分鐘內(nèi)定位故障,同時在“常態(tài)化備戰(zhàn)群”同步故障原因 |
演練周期內(nèi),指定攻守人員未在指定場所準備就緒,禁止啟動演練 | 止損效率:守方在15分鐘內(nèi)通過自動或手動方式,降級止損 |
演練平臺任務,未與演練劇本及觀察員,二次對齊確認,禁止啟動演練 | 弱依賴有效性:弱依賴類故障,不影響核心業(yè)務流轉(zhuǎn) |
演練集群申請列表檢查完畢 | 故障修復效率:如演練場景為有損故障、或故障注入過程對線上業(yè)務產(chǎn)生影響,需要在20分鐘內(nèi)修復 |
演練退出標準:故障注入超過5分鐘未被識別、超過10分鐘未被定位、超過15分鐘未止損,對應場景終止故障注入,并完成環(huán)境初始化,標記演練未通過 |
④場景設計原則
針對AI大模型工程系統(tǒng)的混沌實驗設計,需結(jié)合核心業(yè)務場景和底層依賴(算力、數(shù)據(jù)、模型、網(wǎng)絡),重點驗證系統(tǒng)的容錯性、自適應能力和用戶體驗魯棒性。
故障分類 | 具體場景 | 實驗步驟 | 過程監(jiān)控 | 預期結(jié)果 |
基礎設施層 | GPU節(jié)點故障 | 1. 選擇1個GPU計算節(jié)點 2. 模擬硬件故障(如nvidia-smi注入故障代碼) 3. 持續(xù)10分鐘 | - GPU利用率/溫度實時監(jiān)控 - 節(jié)點存活狀態(tài)檢測 - 服務自動遷移日志追蹤 | - 服務自動遷移至備用節(jié)點 - 業(yè)務中斷時間<30秒 - GPU資源池利用率波動<15% |
顯存溢出攻擊 | 1. 逐步增加推理請求的輸入尺寸 2. 監(jiān)控顯存使用率 3. 觸發(fā)OOM后記錄恢復流程 | - 顯存分配/釋放速率監(jiān)控 - OOM錯誤日志捕獲 - 關(guān)聯(lián)服務健康狀態(tài)檢測 | - 觸發(fā)熔斷機制自動重啟服務 - 錯誤日志記錄完整率100% - 未影響其他模型服務 | |
服務層 | 模型API高延遲 | 1. 在API網(wǎng)關(guān)注入10000ms延遲 2. 維持15分鐘 3. 監(jiān)控降級策略觸發(fā)情況 | - 請求響應時間分布監(jiān)控 - 客戶端重試次數(shù)統(tǒng)計 - 降級策略觸發(fā)狀態(tài) | - 客戶端超時重試機制生效 - 備用模型啟用率>90% - 整體錯誤率上升≤5% |
模型熱切換失敗 | 1. 推送新模型版本 2. 強制中斷切換過程 3. 驗證回滾機制 | - 模型版本哈希校驗 - 切換過程耗時監(jiān)控 - 請求成功率波動檢測 | - 10秒內(nèi)檢測到切換失敗 - 自動回退至穩(wěn)定版本 - 業(yè)務請求成功率>99.5% | |
數(shù)據(jù)流層 | 特征存儲中斷 | 1. 切斷特征存儲服務網(wǎng)絡 2. 持續(xù)5分鐘 3. 恢復后驗證數(shù)據(jù)一致性 | - 特征服務健康檢查 - 本地緩存命中率監(jiān)控 - 數(shù)據(jù)一致性校驗 | - 自動切換本地特征緩存 - 數(shù)據(jù)恢復后差異率<0.1% - 業(yè)務決策準確率下降≤3% |
實時數(shù)據(jù)亂序 | 1. 注入10%亂序數(shù)據(jù)流 2. 逐步提升至50%亂序率 3. 監(jiān)控處理延遲 | - 數(shù)據(jù)流處理延遲監(jiān)控 - 窗口計算偏差檢測 - 亂序告警觸發(fā)統(tǒng)計 | - 流處理引擎亂序容忍機制生效 - 最終計算結(jié)果偏差<1% - 告警系統(tǒng)在30秒內(nèi)觸發(fā) | |
模型層 | 模型精度下降 | 1. 修改在線模型權(quán)重參數(shù) 2. 注入5%對抗樣本 3. 監(jiān)控模型輸出穩(wěn)定性 | - 模型輸出分布偏移檢測 - 對抗樣本識別率 - 業(yè)務決策錯誤率波動 | - 模型監(jiān)控系統(tǒng)30秒內(nèi)告警 - 自動切換備用模型 - 業(yè)務決策錯誤率<警戒閾值(如2%) |
多模型投票失效 | 1. 關(guān)閉1個投票模型實例 2. 注入矛盾樣本 3. 驗證決策一致性 | - 投票結(jié)果置信度監(jiān)控 - 模型間結(jié)果差異率 - 人工干預請求量統(tǒng)計 | - 投票機制自動降級為權(quán)重模式 - 最終決策置信度>85% - 人工復核請求觸發(fā)率<5% |
?
b、快遞快運小哥AI智能助手-混沌工程探索
1)系統(tǒng)簡介
快遞快運終端系統(tǒng)是服務于一線快遞小哥及站點管理者的日常工作作業(yè)實操系統(tǒng),是京東物流作業(yè)人員最多、物流攬派作業(yè)最末端以及作業(yè)形態(tài)多元化的系統(tǒng)。
AI大模型具有超強自然語言處理、泛化能力、意圖理解、類人推理以及多元化結(jié)果輸出的獨特能力,基于此,快遞快運小哥AI智能助手通過結(jié)合AI大模型工程系統(tǒng)、大數(shù)據(jù)、GIS、語音SDK等分別在攬收、派送、站內(nèi)、輔助、問答服務五大類作業(yè)環(huán)節(jié)上實現(xiàn)了如小哥攬收信息錄入、打電話、發(fā)短信、查詢運單信息、小哥攬派任務信息聚合查詢、知識問答及攬派履約時效精準化提示等場景。提升小哥作業(yè)效率和攬派實操體驗。
2)系統(tǒng)架構(gòu)分析
快遞快運小哥AI智能助手【產(chǎn)品架構(gòu)圖】快遞快運小哥AI智能助手故障演練【系統(tǒng)架構(gòu)圖】
3)實驗場景
針對AI大模型工程系統(tǒng)的混沌實驗設計,需結(jié)合核心功能(智能提示、智能問答、智能操作)和底層依賴(算力、數(shù)據(jù)、模型、網(wǎng)絡),重點驗證系統(tǒng)的容錯性、自適應能力和用戶體驗魯棒性。
故障分類 | 具體場景 | 實驗步驟 | 預期結(jié)果 |
服務層 | 模型API高延遲 (AI大模型工程系統(tǒng)提供給小哥后臺服務系統(tǒng)的API高延遲) | ·從泰山平臺注入10000ms延遲故障場景 ·故障維持15分鐘 ·停止故障場景注入,恢復大模型能力 | ·小哥工作臺APP客戶端檢測到大模型服務接口超時(如攬收數(shù)據(jù)錄入時,無法得到響應數(shù)據(jù)),啟動降級策略機制,切斷大模型服務,兜底回到五大模型服務模式,小哥可以正常繼續(xù)標準化作業(yè) ·小哥工作臺APP持續(xù)在無大模型服務下運轉(zhuǎn) ·小哥工作臺APP客戶端檢測大模型能力恢復,啟動大模型能力服務 |
模型層 | 模型精度下降 | ·修改在線模型權(quán)重參數(shù) ·注入5%對抗樣本數(shù)據(jù)(線上已錄制的大模型訪問數(shù)據(jù)流量) ·恢復大模型參數(shù) | ·大模型監(jiān)控系統(tǒng)30秒內(nèi)告警,識別到模型參數(shù)異常變更,預警通知開發(fā)人員,開發(fā)人員發(fā)現(xiàn)模型參數(shù)異常 ·客戶端發(fā)現(xiàn)大模型使用能力下降,開發(fā)啟動自動切換備用模型(參數(shù)已經(jīng)適配好的模型),開發(fā)下線參數(shù)異常模型 ·開發(fā)發(fā)現(xiàn)參數(shù)異常模型恢復,重新啟動上線 |
?
c、混沌工程的AI智能化演進展望
混沌實驗的AI化演進是系統(tǒng)穩(wěn)定性測試與人工智能技術(shù)深度融合的重要趨勢。這一演進不僅體現(xiàn)在實驗工具的智能化升級上,更體現(xiàn)在實驗設計、執(zhí)行與分析的全鏈路優(yōu)化中。以下分別從技術(shù)融合、工具創(chuàng)新及場景擴展三個維度展開論述:
1)技術(shù)融合:AI賦能混沌實驗的核心環(huán)節(jié)
混沌實驗包含了實驗設計、實驗執(zhí)行及實驗監(jiān)控與根因分析三大核心環(huán)節(jié),具體而言。
?
①實驗設計智能化
傳統(tǒng)混沌實驗依賴于人工假設(如“當網(wǎng)絡延遲增加時,系統(tǒng)可用性應保持在99.99%以上”),而AI可通過歷史故障數(shù)據(jù)與系統(tǒng)日志,自動識別潛在脆弱點并生成實驗假設。
例如,基于強化學習的AI模型可模擬復雜故障場景的組合,優(yōu)化實驗參數(shù)(如故障注入的強度、范圍),提升測試覆蓋率。AI可分析服務調(diào)用鏈,預測依賴服務失效后的級聯(lián)影響,并自動設計針對性的網(wǎng)絡分區(qū)實驗。在驗證電商大促場景下的訂單支付鏈路韌性時,通過AI驅(qū)動的智能實驗設計,系統(tǒng)可自動化發(fā)現(xiàn)潛在風險組合并生成針對性實驗方案,具體而言
實驗設計關(guān)鍵環(huán)節(jié) | 實驗設計關(guān)鍵流程 |
歷史數(shù)據(jù)挖掘與脆弱點識別 | 數(shù)據(jù)輸入: ·歷史故障日志:比如過去3年大促期間記錄的168次服務降級事件(如庫存超賣、優(yōu)惠券死鎖)。 ·系統(tǒng)拓撲:服務依賴關(guān)系(如支付網(wǎng)關(guān)調(diào)用訂單數(shù)據(jù)庫的頻率為5000次/秒)。 ·性能基線:日常與大促期間的CPU/內(nèi)存/延遲指標對比數(shù)據(jù) AI分析: ·使用圖神經(jīng)網(wǎng)絡(GNN)分析服務調(diào)用鏈,識別高頻依賴且資源消耗高的節(jié)點(如優(yōu)惠券服務在流量峰值時CPU利用率達90%)。 ·基于關(guān)聯(lián)規(guī)則挖掘(Apriori算法)發(fā)現(xiàn)故障組合模式(如“庫存服務響應延遲>200ms”與“支付網(wǎng)關(guān)連接池耗盡”共同發(fā)生的概率為72%)。 |
強化學習生成實驗參數(shù) | 強化學習模型(PPO算法)配置: ·狀態(tài)空間:優(yōu)惠券服務線程池使用率、支付網(wǎng)關(guān)活躍連接數(shù)、訂單數(shù)據(jù)庫寫入延遲。 ·動作空間: ·故障類型:線程阻塞(阻塞比例10%~100%)、連接池限制(50%~20%容量)。 ·注入時機:流量爬坡期(0%~100%峰值)。 ·獎勵函數(shù): ·正向獎勵:實驗觸發(fā)系統(tǒng)熔斷/降級(如訂單服務自動切換為本地緩存)。 ·負向獎勵:訂單失敗率>0.1%或?qū)嶒炓l(fā)級聯(lián)故障。 ·訓練過程: 在仿真環(huán)境中模擬10萬次實驗,AI學習到最優(yōu)策略: “在流量達到峰值的70%時,先注入優(yōu)惠券服務50%線程阻塞,待系統(tǒng)觸發(fā)自動擴容后,再限制支付網(wǎng)關(guān)連接池至30%容量” |
實驗執(zhí)行與動態(tài)調(diào)控 | 初始注入:AI按策略在流量爬坡期注入優(yōu)惠券服務50%線程阻塞。 動態(tài)響應: ·系統(tǒng)檢測到線程池滿載,自動擴容優(yōu)惠券服務實例(從10個擴展到15個)。 ·AI監(jiān)控到擴容完成,立即觸發(fā)支付網(wǎng)關(guān)連接池限制至30%。 異常檢測: ·訂單數(shù)據(jù)庫寫入延遲突增至800ms(超過基線300%),AI通過LSTM模型預測5秒內(nèi)可能觸發(fā)死鎖,立即停止實驗并回滾故障。 |
通過借助AI智能實驗方案設計,獲得以下收益。
優(yōu)勢項 | 描述 |
風險發(fā)現(xiàn)效率提升 | 提前識別出4個高危漏洞 |
驗證成本降低 | 實驗耗時從人工方案的48小時縮短至6小時,資源消耗減少60% |
韌性增強 | 優(yōu)化后系統(tǒng)在真實大促中訂單失敗率從0.15%降至0.02%,且故障平均恢復時間(MTTR)從8分鐘縮短至90秒 |
以上,AI不僅替代了人工設計中的重復勞動,更重要的是通過系統(tǒng)化挖掘隱性關(guān)聯(lián)與動態(tài)博弈式測試,將混沌工程從“已知-已知”測試升級為“已知-未知”甚至“未知-未知”風險探索。
?
②執(zhí)行與調(diào)控動態(tài)化
AI的動態(tài)決策能力使得混沌實驗從“預設故障”向“自適應故障注入”演進。例如,通過實時監(jiān)控系統(tǒng)指標(如CPU負載、請求延遲),AI可動態(tài)調(diào)整故障注入的強度或終止實驗,避免超出系統(tǒng)容災閾值。通過AI驅(qū)動的動態(tài)實驗調(diào)控,可以使混沌工程實現(xiàn)更多的突破,例如:實現(xiàn)動態(tài)適應性,從“固定劇本”升級為“實時博弈”,更貼近真實故障場景;實現(xiàn)精準調(diào)控,避免因過度測試導致業(yè)務受損,平衡實驗風險與價值;實現(xiàn)多目標優(yōu)化,同時驗證性能、穩(wěn)定性、安全性的綜合影響,例如:驗證系統(tǒng)在流量激增時自動擴縮容的能力。
實驗場景 | 在大促期間實施彈性伸縮混沌實驗 |
實驗目標 | 驗證系統(tǒng)在流量激增時自動擴縮容的能力 |
AI調(diào)控策略 | 初始故障:模擬流量突增50%,觸發(fā)自動擴容 動態(tài)調(diào)整: ·若系統(tǒng)擴容速度過慢(如新實例啟動時間>3分鐘),AI自動追加CPU負載故障(如占用80% CPU),資源爭用下的擴容極限。 ·若擴容成功但負載均衡異常(如某些實例請求量超標),AI注入節(jié)點宕機故障,驗證服務遷移能力。 終止條件:當訂單失敗率超過1%時,立即停止實驗并觸發(fā)告警 |
預期結(jié)果 | AI發(fā)現(xiàn)擴容策略在CPU高負載時延遲增加2倍,推薦優(yōu)化預熱腳本并增加冗余實例池 |
?
③智能監(jiān)控與智能根因分析
傳統(tǒng)監(jiān)控工具(如Prometheus)依賴人工設置告警閾值,而AI可通過異常檢測算法(如LSTM、自編碼器)實時識別系統(tǒng)行為的偏離,并關(guān)聯(lián)故障注入事件,快速定位根因。例如,南京大學利用AI分析古生物大數(shù)據(jù)揭示復雜系統(tǒng)的演化模式,類似方法可用于預測分布式系統(tǒng)中的故障傳播路徑。
智能監(jiān)控與根因分析通過AI技術(shù)實現(xiàn)從“被動告警”到“主動預測-定位”的跨越,其核心是通過多維度數(shù)據(jù)融合與因果推理,快速定位復雜系統(tǒng)中的故障根源。其技術(shù)原理可以從以下幾個方面深入展開:
異常檢測:動態(tài)閾值與模式識別 | 傳統(tǒng)監(jiān)控缺陷:人工設置靜態(tài)閾值(如“CPU使用率>90%觸發(fā)告警”),無法適應業(yè)務波動(如大促期間CPU正常使用率可能長期維持在85%) |
AI解決方案: 1)時序預測模型(LSTM/Prophet):基于歷史數(shù)據(jù)預測指標正常范圍(如預測大促期間訂單服務的請求延遲基線為50ms±10ms),動態(tài)調(diào)整告警閾值; 2)無監(jiān)督異常檢測(自編碼器/Isolation Forest):通過對比實時數(shù)據(jù)與正常模式的特征差異(如請求成功率的分布偏移),識別未知異常類型(如特定API接口的偶發(fā)超時) | |
根因定位:因果圖與傳播路徑推理 | 傳統(tǒng)方法缺陷:人工排查需逐層檢查日志、指標和鏈路追蹤,耗時長且易遺漏隱性依賴 |
AI解決方案: 1)服務拓撲建模(圖神經(jīng)網(wǎng)絡/GNN):將微服務調(diào)用關(guān)系建模為圖結(jié)構(gòu),分析節(jié)點(服務)與邊(依賴)的異常傳播權(quán)重。 2)因果推理(貝葉斯網(wǎng)絡/結(jié)構(gòu)方程模型):結(jié)合故障注入實驗數(shù)據(jù)(如“當Redis緩存失效時,數(shù)據(jù)庫QPS增加300%”),構(gòu)建故障因果鏈,量化各因素對目標異常(如訂單失敗率)的貢獻度。 | |
故障傳播預測:復雜系統(tǒng)仿真 | 仿生學啟發(fā):借鑒南京大學分析古生物演化的方法(如模擬環(huán)境劇變對物種多樣性的影響),通過數(shù)字孿生技術(shù)構(gòu)建系統(tǒng)仿真模型,預測故障傳播路徑 |
關(guān)鍵技術(shù): 1)故障注入+強化學習:模擬隨機或組合故障(如“數(shù)據(jù)庫主從延遲+緩存擊穿”),觀察系統(tǒng)響應并生成故障傳播概率圖。 2)傳播路徑預測:若檢測到A服務異常,AI基于歷史數(shù)據(jù)預測其下游影響(如A服務故障有70%概率在30秒內(nèi)導致B服務超時) |
AI驅(qū)動的智能監(jiān)控與根因分析通過動態(tài)異常檢測-因果推理-傳播預測的三層技術(shù)架構(gòu),將故障定位從“人工地毯式排查”升級為“秒級精準定位”。此能力不僅大幅縮短了故障恢復時間,更重要的是通過預測潛在連鎖反應(如“緩存失效→數(shù)據(jù)庫過載→服務雪崩”),推動系統(tǒng)架構(gòu)從“容災”向“抗災”演進。未來,結(jié)合故障注入實驗的閉環(huán)驗證,AI監(jiān)控有望實現(xiàn)“自愈推薦”,即自動生成修復策略并驗證其有效性,真正實現(xiàn)系統(tǒng)的智能韌性。
?
2)AI驅(qū)動的混沌工程平臺能力升級
①混沌工程工具AI能力建設焦點
以下針對目前的發(fā)展方向,混沌工程平臺,可基于以下幾個方面拓展能力升級。
故障類型 | 故障描述 | 參數(shù)說明 |
GPU節(jié)點故障 | 故障注入平臺的配置需要結(jié)合硬件特性、分布式訓練框架的容錯機制以及業(yè)務場景需求,包含:硬件級故障、軟件級故障以及環(huán)境級故障 | 參數(shù)類別 示例參數(shù) 說明 故障類型 gpu_failure_type 顯存錯誤/驅(qū)動崩潰/NVLink中斷等 持續(xù)時間 duration 瞬時故障(毫秒級)或持續(xù)故障(分鐘級) 影響范圍 gpu_index 指定GPU卡序號(如0-3) 錯誤概率 error_rate 顯存訪問錯誤的發(fā)生頻率(如1e-6次/操作) |
顯存溢出攻擊 | 模擬惡意或異常顯存占用行為,驗證系統(tǒng)對顯存資源耗盡場景的防御能力、容錯機制及恢復效率,包含: 顯存暴力搶占:持續(xù)分配顯存直至耗盡(模擬惡意進程)。 顯存泄漏攻擊:周期性分配顯存但不釋放(模擬代碼缺陷)。 梯度爆炸攻擊:注入異常梯度值導致反向傳播顯存需求激增。 多任務資源競爭:并行啟動多個高顯存任務(測試調(diào)度策略的健壯性)。 | 參數(shù)項 可選值/示例 說明 fault_type gpu_memory_overflow 故障類型(顯存溢出攻擊) injection_method direct_allocation(直接分配) gradient_attack(梯度爆炸) multi_task(多任務競爭) 顯存溢出的具體實現(xiàn)方式 target_gpu 0(GPU卡序號) 指定攻擊的目標GPU設備 memory_fill_rate "90%" 或 "10GB" 顯存占用目標閾值(百分比或絕對值) leak_speed "100MB/s" 顯存泄漏速率(僅對泄漏攻擊有效) attack_duration "5m"(5分鐘) 攻擊持續(xù)時間(瞬態(tài)攻擊或持續(xù)攻擊) |
模型熱切換失敗 | 在不停機的情況下切換模型版本時,因資源競爭、依賴沖突或狀態(tài)同步錯誤導致新模型加載失敗或舊模型殘留,引發(fā)服務中斷或預測結(jié)果混亂。例如:新模型加載時顯存不足、舊模型卸載不徹底(如未釋放GPU資源)、版本元數(shù)據(jù)(如輸入輸出格式)不兼容 | 參數(shù)項 可選值/示例 說明 fault_type model_hotswap_failure 故障類型(模型熱切換失?。?injection_method resource_lock(資源鎖定) metadata_corruption(元數(shù)據(jù)損壞) 模擬資源競爭或版本元數(shù)據(jù)錯誤 failure_point pre_load(加載前) post_unload(卸載后) 指定故障注入階段(加載前/卸載后) rollback_strategy auto_rollback(自動回滾) manual_intervention(人工介入) 切換失敗后的恢復策略 retry_threshold 3(最大重試次數(shù)) 加載失敗后的自動重試次數(shù) |
實時數(shù)據(jù)亂序 | 數(shù)據(jù)流因網(wǎng)絡延遲、分片傳輸錯誤或消息隊列故障導致時序數(shù)據(jù)亂序,影響時間敏感型模型(如LSTM、Transformer)的預測準確性。例如:時間窗口內(nèi)數(shù)據(jù)順序錯亂、數(shù)據(jù)延遲超過模型允許的時序容忍度、亂序數(shù)據(jù)觸發(fā)模型狀態(tài)異常(如狀態(tài)機崩潰) | 參數(shù)項 可選值/示例 說明 fault_type data_out_of_order 故障類型(實時數(shù)據(jù)亂序) disorder_rate "30%" 亂序數(shù)據(jù)比例(如30%的數(shù)據(jù)順序被打亂) max_latency "5s" 最大延遲時間(模擬數(shù)據(jù)遲到) window_size 1000 受影響的時間窗口大?。▎挝唬簲?shù)據(jù)條目數(shù)或時間范圍) distribution uniform(均勻分布) burst(突發(fā)亂序) 亂序分布模式 |
模型精度下降 | 因輸入數(shù)據(jù)漂移、模型參數(shù)篡改或計算單元異常(如GPU浮點運算錯誤),導致模型預測精度顯著下降且未被監(jiān)控系統(tǒng)及時捕獲。例如:輸入數(shù)據(jù)分布偏移(如傳感器數(shù)據(jù)偏差)、模型權(quán)重文件被部分覆蓋或損壞、浮點計算靜默錯誤(如CUDA核函數(shù)異常) | 參數(shù)項` 可選值/示例 說明 fault_type model_accuracy_drop 故障類型(模型精度下降) noise_level "10%" 輸入數(shù)據(jù)噪聲強度(如添加10%高斯噪聲) weight_corruption random(隨機擾動) targeted(定向攻擊) 模型參數(shù)篡改方式 error_type float_error(浮點錯誤) quantization(量化異常) 計算單元錯誤類型 detection_threshold 0.95(置信度閾值) 觸發(fā)告警的精度下降閾值(如置信度低于0.95時告警) |
多模型投票失效 | 在多模型投票決策系統(tǒng)中,因部分模型故障、通信中斷或投票邏輯缺陷,導致最終決策結(jié)果與真實多數(shù)投票結(jié)果不一致。如:單個模型輸出異常(如返回空值或極端值)、投票結(jié)果聚合邏輯錯誤(如加權(quán)投票權(quán)重未生效)、模型間通信超時或數(shù)據(jù)丟失 | 參數(shù)項` 可選值/示例 說明 fault_type ensemble_voting_failure 故障類型(多模型投票失效) failure_mode silent(靜默失敗) noisy(輸出噪聲) 模型故障類型 target_models ["model_a", "model_c"] 指定需要注入故障的模型列表 communication_delay "2s" 模擬模型間通信延遲 voting_algorithm majority(多數(shù)表決) weighted(加權(quán)投票) 投票算法類型(驗證算法容錯性) |
②自動化工具鏈的升級
當前的各類工具主要依賴手動配置,通過AI的引入使得工具能夠從以下幾個維度升級
自動化配置點 | 配置描述 |
智能選擇靶點 | 基于系統(tǒng)拓撲和負載情況,優(yōu)先測試高風險的組件 |
生成實驗劇本 | 結(jié)合強化學習模擬多故障疊加場景,如“同時觸發(fā)數(shù)據(jù)庫延遲與容器資源耗盡 |
自動修復建議 | 根據(jù)實驗結(jié)果推薦冗余設計或負載均衡策略 |
③應用層故障注入的精細化
應用級故障注入工具通過“坐標系統(tǒng)”,精確定位實驗范圍(如特定用戶或服務版本),而AI可進一步擴展這一能力。例如,通過自然語言處理解析日志,自動生成針對特定API接口的異常返回規(guī)則
④場景擴展
?智能化場景推薦
包括不限于,基于系統(tǒng)架構(gòu)特性、基于既往線上故障、基于系統(tǒng)核心指標異動的智能化場景推薦,具體而言:
智能化場景推薦 | 技術(shù)原理 | 設計方案 |
基于系統(tǒng)架構(gòu)特性的場景推薦 | ·拓撲結(jié)構(gòu)分析: ·通過服務注冊中心(如Nacos、Consul)獲取微服務依賴關(guān)系,構(gòu)建系統(tǒng)調(diào)用拓撲圖。 ·使用**圖神經(jīng)網(wǎng)絡(GNN)**計算節(jié)點中心性(如介數(shù)中心性),識別核心鏈路(如“訂單創(chuàng)建→支付→庫存扣減”路徑)。 ·資源依賴建模: ·分析服務與底層資源(數(shù)據(jù)庫、緩存、消息隊列)的綁定關(guān)系,定位資源競爭熱點(如多個服務共享同一Redis集群)。 | ·輸入:系統(tǒng)拓撲圖、服務QPS、資源使用率(如數(shù)據(jù)庫連接數(shù))。 ·算法: ·關(guān)鍵路徑識別:基于PageRank算法標記高權(quán)重節(jié)點(如支付網(wǎng)關(guān))。 ·瓶頸預測:結(jié)合資源水位預測模型(如ARIMA),推斷未來壓力點。 ·輸出: ·推薦實驗場景: ·針對核心鏈路:模擬支付網(wǎng)關(guān)高延遲。 ·針對共享資源:注入Redis主節(jié)點宕機。 |
基于既往線上故障的場景推薦 | ·故障模式挖掘: ·對歷史故障日志進行NLP解析(如BERT模型),提取故障類型、影響范圍、修復措施。 ·使用**關(guān)聯(lián)規(guī)則挖掘(Apriori算法)**發(fā)現(xiàn)高頻故障組合(如“緩存雪崩+數(shù)據(jù)庫連接池耗盡”)。 ·時序模式分析: ·基于LSTM構(gòu)建故障時序模型,預測周期性風險(如大促前1小時庫存服務易出現(xiàn)超賣)。 | ·輸入:歷史故障數(shù)據(jù)庫、修復記錄、時間戳。 ·算法: ·故障關(guān)聯(lián)圖譜:構(gòu)建故障-服務-資源的關(guān)聯(lián)網(wǎng)絡。 ·相似度匹配:通過余弦相似度匹配當前系統(tǒng)狀態(tài)與歷史故障特征。 ·輸出: ·推薦實驗場景: ·復現(xiàn)歷史高頻故障:優(yōu)惠券服務線程池滿。 ·預測性場景:模擬大促開始后30分鐘的緩存擊穿。 |
基于系統(tǒng)核心指標異動的場景推薦 | ·動態(tài)基線計算: ·使用Prophet時序模型預測指標正常范圍(如日常CPU使用率40%→大促期間允許80%)。 ·多維度異常檢測: ·通過**多變量自編碼器(MAE)**分析指標組合異常(如“CPU 85% + 數(shù)據(jù)庫鎖等待數(shù)激增”)。 | ·輸入:實時監(jiān)控指標流(Prometheus)、業(yè)務日志(ELK)。 ·算法: ·異常模式聚類:對異常事件進行K-means聚類,識別典型模式(如“突增流量型”“資源泄漏型”)。 ·根因映射:將異常模式映射至預設故障場景庫。 ·輸出: ·推薦實驗場景: ·當檢測到訂單服務延遲突增時,推薦測試“庫存服務緩存失效”。 ·當數(shù)據(jù)庫鎖等待數(shù)超標時,推薦測試“分布式鎖服務故障”。 |
?云原生與邊緣計算
在動態(tài)的云原生環(huán)境中,AI可預測容器編排(如Kubernetes)的故障恢復效率,并驗證自動擴縮容策略的有效性。
?跨學科復雜系統(tǒng)模擬
混沌實驗的理念正被引入生物、氣候等復雜系統(tǒng)研究。例如,南京大學團隊利用AI模擬元古宙生命演化中的“雪球地球”事件對生物多樣性的沖擊這種“環(huán)境混沌實驗”為評估極端條件下的系統(tǒng)韌性提供了新范式。
隨著AI技術(shù)的不斷發(fā)展和應用場景的落地實施,混沌實驗正從“被動容災”轉(zhuǎn)向“主動韌性構(gòu)建”,其核心是通過智能算法提升實驗的精準度與系統(tǒng)自愈能力。未來,隨著AI與量子計算、生物模擬等領域的交叉,混沌實驗或?qū)⑼黄乒こ谭懂?,成為探索復雜系統(tǒng)普適規(guī)律的科學工具。
6、【積微成著】專業(yè)分享
??【積微成著】性能測試調(diào)優(yōu)實戰(zhàn)與探索(存儲模型優(yōu)化+調(diào)用鏈路分析):http://xingyun.jd.com/shendeng/article/detail/24444?forumId=174&jdme_router=jdme://web/202206081297?url%3Dhttp%3A%2F%2Fsd.jd.com%2Farticle%2F24444?
??【積微成著】規(guī)?;煦绻こ腆w系建設及AI融合探索:http://xingyun.jd.com/shendeng/article/detail/44438?forumId=99&jdme_router=jdme://web/202206081297?url%3Dhttp%3A%2F%2Fsd.jd.com%2Farticle%2F44438?
??【積微成著】“泰山變更管控”在物流技術(shù)的深入實踐:http://xingyun.jd.com/shendeng/article/detail/45193?forumId=1414&jdme_router=jdme%3A%2F%2Fweb%2F202206081297%3Furl%3Dhttp%3A%2F%2Fsd.jd.com%2Farticle%2F45193
審核編輯 黃宇
-
監(jiān)控
+關(guān)注
關(guān)注
6文章
2319瀏覽量
57575 -
AI
+關(guān)注
關(guān)注
88文章
35168瀏覽量
280140 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3927瀏覽量
66271 -
分布式系統(tǒng)
+關(guān)注
關(guān)注
0文章
147瀏覽量
19635
發(fā)布評論請先 登錄
飛騰CPU在濟南機場實現(xiàn)規(guī)模化應用
廣和通加速5G+AI規(guī)?;?/b>應用
軟通動力中標艾比森AI創(chuàng)新中心平臺升級項目
IBM如何加速企業(yè)AI規(guī)?;?/b>應用
NVIDIA助力安利生成式AI在效能和安全上破局
AgiBot World Colosseo:構(gòu)建通用機器人智能的規(guī)?;?/b>數(shù)據(jù)平臺

評論