《04 基于字節碼增強的非侵入微服務健壯性評估(華為鐘錦鋒).pdf》由會員分享,可在線閱讀,更多相關《04 基于字節碼增強的非侵入微服務健壯性評估(華為鐘錦鋒).pdf(15頁珍藏版)》請在三個皮匠報告上搜索。
1、基于字節碼增強的非侵入微服務健壯性評估華為云計算混沌工程能力組鐘錦鋒CloudDevOps流程下的可靠性測試活動CI測試開發需求分析生產發布華為云自運營云服務CloudDevOps理念:創新性需求快速上線試錯、變現;微服務獨立自治微服務流水線測試系統集成可靠性測試混沌測試現網演練可靠性測試基石通過可靠性模式庫牽引整系統可靠性評估發散測試通過隨機故障注入補充測試設計盲區大考驗收磨練系統、SRE對常見重大故障的處理測試穩固三角體背后的挑戰可靠性隨機問題占比高,問題定位難度大,復現成本高,導致可靠性問題要花更多的時間可靠性測試自動化厚重,時間長,無法掛載到微服務發布流水線,需要獨立流水線承載。微服務
2、架構下,某個微服務不夠健壯,會影響整個云服務性能、可靠性,也容易阻塞自動化可靠性測試涉及流量注入、故障注入、運行狀態信息采集、測試結果分析,需要與多平臺配合,只有測試人員才會使用在階段添加可靠性測試環節白盒故障注入,故障點明確,問題定位針對性強。在階段就進行測試,可掛載微服務流水線,完成微服務基本健壯性評估后再轉集成驗證。微服務自行測試,即便測出阻塞性問題,也只影響本微服務測試,對其他微服務無影響。通過一個平臺實現流量注入、故障注入、運行狀態信息采集、測試結果分析,開發也可以卷起來。作為當前可靠性測試的一個前期環節,快速掃除微服務基礎可靠性問題,提升微服務健壯性?;谧止澊a增強的非侵入微服務健
3、壯性評估方案簡介基于Sermant底座插件開發能力,實現開發態無侵入的JVM應用白盒故障注入基礎能力,集成JVM故障注入能力到CAST平臺,提供JVM應用自動化評估能力,覆蓋典型JVM故障模式基線Sermant(也稱為Java-mesh)是華為自研的基于Java Agent的字節碼增強技術,通過Java Agent對宿主應用進行非侵入式增強,以解決Java應用的微服務治理問題。通過Sermant可以對微服務常用組件,如JDBC、HTTP、KAFKA等,進行流量監控、流量注入、MOCK、異常注入、資源監控等功能?;谧止澊a增強的非侵入微服務健壯性評估整體框架被測微服務AGENT調用鏈組件流量組件
4、武器組件HTTPTHREADJDBCKAFKA監控組件。CAST環境納管部署AGENT,對組件做拔插管理流量獲取采集調用鏈,供武器和流量參考流量注入作為可靠性測試背景流量故障注入對業務組件進行時延、拋異常等故障采集資源采集隊列、鏈路池、線程池、內存等評估報告匯總輸出微服務健壯性評估報告及建議關鍵實現點:1、在被測微服務上部署JVM AGENT,AGENT自動對微服務常用組件切面,如HTTP、TREAD、JDBC、KAFKA等;2、AGENT通過不同的組件,對業務組件實現調用鏈監控、流量回放、故障注入、資源使用情況監控;3、CAST平臺組織測試邏輯,對微服務進行流量注入與故障注入,在完成測試后,
5、對微服務資源狀態進行分析,輸出評估報告,并針對問題給出修復建議?;谧止澊a增強的非侵入微服務健壯性評估關鍵能力(熱插拔)Sermant提供底座&插件動態插拔能力,健壯性評估按需啟用&卸載各能力組件被測微服務AGENT調用鏈組件流量組件武器組件HTTPTHREADJDBCKAFKA監控組件。被測微服務AGENT調用鏈組件流量組件武器組件HTTPTHREADJDBCKAFKA監控組件。被測微服務AGENT調用鏈組件流量組件武器組件ClassFUC-AJDBCKAFKA監控組件。關鍵實現點:1、Sermant依賴JVM提供的動態插樁能力進行動態字節碼植入,為微服務創建切面,健壯性評估時向微服務動態掛
6、載,評估后可熱卸載。2、依賴插件化架構,利用JVM 重轉換&重定義等特性為不同可靠性能力組件進行動態插拔,可做到按需啟用。Class字節碼CAST1.attach加載SermantJVMClass2.reTransformClassFUC-ABEFOREAFTER基于字節碼增強的非侵入微服務健壯性評估流量錄制Ioias微服務入口流量,用于流量回放Ioias微服務依賴,用于回放MOCK故障注入依據,按微服務使用的組件挑選故障關鍵實現點:1、JVM Agent對微服務關鍵組件進行監控,把監控到的組件調用以調用鏈的方式呈現出來;2、微服務入口調用作為流量回歸參考,微服務對組件調用作為MOCK和故障注
7、入參考;基于字節碼增強的非侵入微服務健壯性評估故障武器庫HTTPMONGOJDBCREDISKAFKA核心方法HttpServlet service過濾條件微服務組件返回響應不匹配匹配HTTP方法過濾URI過濾拋異常錯誤響應超時、高時延觸發概率外部API接口調用類微服務HTTP無響應HTTP拋異常HTTP異常響應數據處理類微服務數據庫慢操作REDIS命中低鏈路池無資源數據流轉類微服務數據生產UNACKACK高時延鏈路池無資源將武器打包成不同的模式庫負向改進、持續積累基于字節碼增強的非侵入微服務健壯性評估健壯性判斷基于字節碼增強的非侵入微服務健壯性評估自動化方案微服務入口流量微服務MOCK微服務
8、組件故障云服務環境微服務A工作負載A微服務B工作負載B微服務C工作負載C微服務A工作負載A-1微服務A新需求功能測試關鍵實現點:1、微服務完成新需求功能開發后,把功能測試環節的流量錄制下來;2、根據調用鏈數據,可生成包含微服務入口流量、微服務MOCK、組件故障武器的健壯性評估方案;3、CAST在云服務環境灰度出新工作負載,在此實例上實施健壯性評估。使用此方案可解決回放過程中,異常流程無調用鏈信息可參考的問題?;谧止澊a增強的非侵入微服務健壯性評估基于故障模式庫批量生成自動化故障模式武器清單故障時長故障范圍(單實例/多實例)微服務入口流量調用組件華為云混沌工程服務故障武器庫:華為CFE故障注入組
9、件,支持20+場景、200+故障模式組件故障演練報告與大屏:按照應用和實驗維度對故障感知、故障定界和業務恢復進行量化評估。提供完整的執行記錄、評測報告和演練大屏。應用納管探針一鍵部署執行記錄故障演練混沌實驗編排評估報告故障武器庫演練大屏豐富的故障模式資產庫和故障注入武器庫基于終端云、華為云、車云等混沌工程錘煉和經驗積累形成故障模式核心資產和武器庫能力外溢:l 故障模式:網上問題、業界事件、測試驗證逆向積累、正向設計分析l 故障武器庫:覆蓋基礎設施、中間件、數據庫和應用、接口等,支持虛擬機、K8s、以及跨云跨DC場景基于Chaos理論的可控隨機測試方法隨機時間、隨機對象、隨機故障模式注入的可控隨
10、機測試方法:l 穩態定義l 混沌實驗場景模板l 混沌編排隨機策略l 故障注入防護策略l 永遠在線持續混沌l 自動采集、追蹤、監控和結果自動化斷言基于華為云全場景混沌工程能力基于華為云穩態流量、撥測探活、全流程監控的全場景混沌工程,提升系統多活高可用能力:l CPTS穩態流量l EchoTest業務撥測l AOM資源監控l APM應用監控l 可靠性測試量化評估報告華為云混沌工程服務CAST 2022.11月已經開始邀測,計劃2023.5.30開啟公測。展望未來持繼積累、厚積薄發通過AI學習錄制流量,應對更多流程分支回放,提升回放成功率MaybeCASTGPT基于語言大模型,學習歷史問題安例,自動補充模式庫,故障場景覆蓋更完善,根據微服務流量,自動推薦測試模式庫基于語言大模型,給出更精準的微服務健壯性評估結論學習標桿韌性架構,結合智能評估,給出架構優化建議THANKS謝 謝