安平縣外貿(mào)網(wǎng)站建設(shè)正規(guī)微商免費推廣軟件
一、寫在前面
1、混沌是什么?
混沌工程(Chaos Engineering)的概念由 Netflix 在 2010 年提出,通過主動向系統(tǒng)中引入異常狀態(tài),并根據(jù)系統(tǒng)在各種壓力下的行為表現(xiàn)確定優(yōu)化策略,是保障系統(tǒng)穩(wěn)定性的新型手段。
混沌工程是一門在分布式系統(tǒng)上進行實驗的學(xué)科,目的是建立人們對于復(fù)雜系統(tǒng)在生產(chǎn)環(huán)境中抵御突發(fā)事件的信息。
2、為什么要做混沌?
混沌工程通過有意地引入故障、異?;虿淮_定性的條件,以模擬真實世界中的不完美環(huán)境。其核心思想是通過主動引入故障和異常情況,逐步驗證和提升系統(tǒng)的健壯性,從而增加系統(tǒng)在面對真實世界中的復(fù)雜環(huán)境時的穩(wěn)定性和可靠性。其目的是識別潛在的系統(tǒng)弱點,并改進應(yīng)用系統(tǒng)的健壯性和恢復(fù)能力,減少系統(tǒng)故障造成的影響,并提供更好的用戶體驗。
3、混沌的原則
混沌工程主要遵循以下原則:
-
假設(shè)清晰性(Assumption-Driven):明確系統(tǒng)的行為和性能的關(guān)鍵假設(shè)。這些假設(shè)可以基于系統(tǒng)需求、設(shè)計決策或運行環(huán)境等方面?;煦绻こ痰膶嶒瀾?yīng)著眼于驗證或推翻這些假設(shè)。
-
實驗的真實性(Experimentation):通過有意地注入故障、異?;虿淮_定性的條件來模擬真實世界中的不完美環(huán)境。實驗應(yīng)該是可控和可重復(fù)的,以便在安全范圍內(nèi)進行測試和觀察系統(tǒng)的響應(yīng)。
-
最小化影響(Minimizing Blast Radius):實施混沌實驗時需要注意最小化對生產(chǎn)環(huán)境和用戶的負面影響。合理限制實驗的范圍和影響范圍,并使用適當(dāng)?shù)娘L(fēng)險管理方法保護關(guān)鍵業(yè)務(wù)功能。
-
監(jiān)測和度量(Monitoring and Measurement):實驗期間需要密切系統(tǒng)報警機制。使用監(jiān)控工具和指標(biāo)來收集實驗數(shù)據(jù),以便評估系統(tǒng)的穩(wěn)定性和彈性。
-
分析和學(xué)習(xí)(Analyzing and Learning):對實驗結(jié)果進行復(fù)盤,并從中提取經(jīng)驗教訓(xùn)。確定問題的根本原因,并制定相應(yīng)的改進計劃和解決方案。
-
持續(xù)改進(Continuous Improvement):混沌工程是一個持續(xù)改進的過程。通過不斷地進行實驗、分析和修正,提高系統(tǒng)的彈性、穩(wěn)定性和可恢復(fù)性。
二、Y的混沌發(fā)展
近三年,京東混沌工程作為大促三道防線之一,在促前扮演了非常重要的角色,而Y的混沌實踐,也在不斷地進行升級,主要從應(yīng)用覆蓋率和場景覆蓋率兩個方向明確提升方向,并在集團混沌大賽上取得了一系列突破和成績。
1、探索階段(21年)
追溯到21年618,Y主要以探索試點為目標(biāo),混沌試驗應(yīng)用覆蓋上主要以非0/1級應(yīng)用為主,演練場景上以斷網(wǎng)演練等簡單場景為主,攻守雙發(fā)均為研發(fā)。
2、發(fā)展階段(22年)
22年隨著京東混沌工程的迭代升級,在演練場景及系統(tǒng)易用性上均有明顯改善,Y側(cè)也重點在混沌演練場景上進行全面覆蓋,從基礎(chǔ)資源故障拓展到外部依賴故障再到高級場景補充,不斷提升系統(tǒng)穩(wěn)定性。同時逐步覆蓋0/1級核心系統(tǒng),并沉淀混沌演練操作手冊、混沌演練規(guī)范等,演練以測試為攻方,研發(fā)為守方,明確職責(zé)分工。
22年618由測試同學(xué)承接混沌演練,在演練前、演練中、演練后分別推進以下相關(guān)工作:
-
定義演練目標(biāo):明確演練目標(biāo)和期望結(jié)果。包含確定要執(zhí)行的應(yīng)用系統(tǒng)范圍、執(zhí)行的場景、應(yīng)用系統(tǒng)監(jiān)控的配置、故障場景的觀測、問題處理機制等,從而提升應(yīng)用系統(tǒng)健康度。
-
識別關(guān)鍵組件和場景:確定系統(tǒng)中的關(guān)鍵組件和依賴關(guān)系,并識別可能影響系統(tǒng)穩(wěn)定性和性能的典型場景。這些場景可以包括網(wǎng)絡(luò)故障、資源耗盡、高并發(fā)等。
-
制定演練計劃:制定一份詳細的實驗計劃,包括演練的時間、范圍、持續(xù)時間以及參與者的角色和職責(zé)。確保所有參與者都了解實驗計劃和預(yù)期結(jié)果。
-
設(shè)置監(jiān)控體系:在演練之前,檢查泰山中的MDC、UMP、中間件等配置,進一步了解應(yīng)用的監(jiān)控信息,根據(jù)應(yīng)用的監(jiān)控信息,更有針對性的模擬系統(tǒng)故障。
-
執(zhí)行演練場景:按照演練計劃執(zhí)行混沌演練,例如模擬網(wǎng)絡(luò)故障、內(nèi)存故障、CPU故障、中間件故障等,觀察系統(tǒng)的報警信息和研發(fā)運維響應(yīng),并記錄關(guān)鍵指標(biāo)和事件。
-
結(jié)果復(fù)盤:在演練結(jié)束后,收集和分析實驗期間的數(shù)據(jù)和觀察結(jié)果。評估系統(tǒng)的穩(wěn)定性、可恢復(fù)性以及對異常情況的處理能力。識別存在的問題并制定系統(tǒng)的改進方案。
-
改進和優(yōu)化:基于演練結(jié)果和分析,制定改進計劃并采取相應(yīng)的措施。這可能包括修復(fù)漏洞、提高系統(tǒng)的容錯性、優(yōu)化資源利用等。確保經(jīng)驗教訓(xùn)被記錄下來,以便未來的演練和運維中可以借鑒。
-
定期演練和持續(xù)改進:通過常態(tài)化混沌演練,確保系統(tǒng)的持續(xù)的穩(wěn)定性和彈性。
3、成長階段(23年)
經(jīng)過22年的實戰(zhàn)總結(jié),23年618 Y 重點推進應(yīng)用覆蓋率提升,最終達到99.68%,零售TOP1。實踐策略按照集團要求優(yōu)先完成系統(tǒng)推薦的9大場景,同時有針對性選擇一些特定的場景,完善系統(tǒng)監(jiān)控,最終0/1級應(yīng)用健康度>95分,高危項清零。大促期間各系統(tǒng)性能達標(biāo),無線上事故發(fā)生。在取得階段性成績的同時,離不開團隊成員在每個階段都嚴格遵循以下原則,高標(biāo)準對待每一次演練:
-
目標(biāo)驅(qū)動:確保每個演練都有明確的目標(biāo)和預(yù)期結(jié)果,以便評估其有效性和價值。
-
漸進式迭代:逐漸增加演練場景的復(fù)雜度和挑戰(zhàn)性,使團隊能夠適應(yīng)變化并逐步提高系統(tǒng)的健壯性。
-
持續(xù)學(xué)習(xí):定期復(fù)盤演練結(jié)果和反饋,記錄每一次的實驗案例、問題與挑戰(zhàn),并根據(jù)經(jīng)驗教訓(xùn)進行分類與分析、根據(jù)復(fù)盤結(jié)果進行調(diào)整和改進。
-
經(jīng)驗傳承:根據(jù)總結(jié)的經(jīng)驗教訓(xùn)和成功實驗案例,制定一份最佳實戰(zhàn)指南。這些包含演練計劃、場景選擇、執(zhí)行計劃、監(jiān)控以及研發(fā)問題處理機制等,幫助團隊更好執(zhí)行混沌演練。
-
跨團隊協(xié)作:混沌演練與開發(fā)、運維、測試等團隊緊密合作,跟混沌工程建設(shè)團隊多次交流,共同推動應(yīng)用系統(tǒng)的穩(wěn)定性和健壯性。
三、混沌與傳統(tǒng)測試的區(qū)別
混沌工程是一種幫助我們獲得更多的關(guān)于系統(tǒng)的新認知的實驗方法。它和已有的功能測試、集成測試等測試已知屬性的方法有本質(zhì)上的區(qū)別?;煦绻こ?#xff0c;旨在幫助我們獲得更多的關(guān)于系統(tǒng)的新認知的實驗方法,通常還能開辟出一個更廣袤的對復(fù)雜系統(tǒng)的認知空間。
傳統(tǒng)測試,旨在給定一個特定的條件,系統(tǒng)會輸出一個特定的二元結(jié)果,它僅僅是對已知的系統(tǒng)屬性可能的取值進行測驗。
混沌工程的思維方式是主動去找故障,是探索性的。雖然按計劃做好了降級預(yù)案,但是關(guān)閉節(jié)點時卻引發(fā)了上游服務(wù)故障,進而引發(fā)雪崩,這不是靠故障注入或預(yù)先計劃能發(fā)現(xiàn)的。
四、寫在后面
混沌工程,是一種提高技術(shù)架構(gòu)彈性能力的復(fù)雜技術(shù)手段,旨在將故障扼殺在襁褓之中,也就是在故障造成中斷之前將它們識別出來。通過主動制造故障,測試系統(tǒng)在各種壓力下的行為,識別并修復(fù)故障問題,避免造成嚴重后果。
隨著系統(tǒng)新功能不斷上線,依賴方變化等,均可能導(dǎo)致系統(tǒng)產(chǎn)生一系列未知故障,故混沌工程實踐最重要的就是可持續(xù),通過增加混沌實驗的次數(shù)不斷地發(fā)揮混沌工程的價值,Y一直在路上!
作者:京東零售 李金萍 馬春榮
來源:京東云開發(fā)者社區(qū)