探索阿裏巴巴如何打造共享服務中台的穩定性——走進《企業IT架構轉型之道》係列3
前麵兩篇介紹了共享服務中台的業務價值以及建設原則,本篇內容將主要介紹當服務中台支撐越來越多業務場景後,在打造平台穩定性能力方麵所探索出的一係列創新技術以及成果。整個穩定性體係包含的內容非常廣,機房布線、網絡通信、硬件部署、應用架構、數據容災等都與穩定性相關,這裏我們提到的穩定性主要指從共享服務中台的角度,實現了對中台應用架構以及平台自身的精細化管控以及保障,主要措施包括容量壓測和評估、全鏈路壓測、流量的限流和降級以及業務一致性平台。
想了解一個平台的容量,在傳統的常規性能測試以及係統容量評估時,一般是通過需求分析得出壓測的業務場景以及不同場景在壓測中的比例關係,或者是憑經驗對業務進行分析而得出經驗型的測試模型,再通過測試工具進行模擬壓測,以此來判斷該係統的最大負載。
然而該經驗型的測試方法不僅測試場景簡單,並且測試結果大部分依賴測試人員的水平,當業務頻繁變化時導致多場景模擬成本巨大甚至無法完整的評估。為了更加精準的了解平台容量,科學利用服務器資源,阿裏巴巴技術團隊經過多年的實施與驗證總結出了一套在分布式應用架構下應用係統容量測試與評估的自動化平台。
應用係統容量預測包括容量壓測以及容量分析預測兩部分:容量壓測通過將線上真實的流量引流到壓測目標機器上,並不會對本係統及下遊係統帶來額外的流量,也不需要準備測試數據、壓測係統,利用HSF服務框架對於服務路由權重的支持,通過對服務路由權重的逐步增加達到逐步增加某服務單機請求數量的目的,以此來驗證單機服務實例所能提供的最大QPS處理值;容量規劃平台則是利用服務的單機QPS數據,結合多年來沉澱的算法,對各種服務器機型處理能力的差異化分析,來更加準確的預測大促活動需要部署的服務器資源,提升平台精細化管控能力的同時也大大的節省了資源成本。
全鏈路壓測是阿裏全係統在每個環節都參加的雙11實戰演習,雙11活動09年開始舉辦,但實際上在2013年前,無人能確保平台全鏈路的高可靠性,容量壓測以及規則僅僅是針對單個應用進行評估,以及後麵即將提到的限流、降級等措施重點在於對平台的穩定性保障,為了徹底解決這個難題,從2013年開始,阿裏巴巴開始了稱為全鏈路壓測的工作,並很快成為集團大促備戰最重要的武器,在曆年的全鏈路壓測過程中,提前暴露了諸多環節存在的問題。
全鏈路壓測平台通過應用係統改造使線上環境可以同時處理正常流量和測試流量,獲得真實的線上實際承載能力數據。進行全鏈路壓測,涉及範圍非常廣泛包括網絡、應用、數據庫以及安全等都需要改造,下麵簡單介紹該平台:
- 基礎數據抽取——為了模擬盡可能真實,全鏈路壓測以線上數據為數據源進行采樣、過濾和脫敏,數據量與線上數據保持同一個數量級並在數據庫上進行區間隔離;
- 鏈路與模型構造——鏈路代表要壓測的範圍,鏈路的訪問量級、鏈路的參數集合以及基礎數據的特性一起構造了壓測的模型;
- 鏈路驗證——在全鏈路壓測平台建設過程中,驗證環節耗費了項目組大量的時間和精力,電子商務業務特性複雜,下訂單以及支付等上百條鏈路,每一條鏈路都需要在平台上進行驗證,目前鏈路驗證已經集成到平台當中,能夠自動化完成對壓測鏈路的驗證;
- 業務係統改造——在業務係統針對壓測流量進行改造,比如為了支持壓測鏈路的重複執行、下遊寫流量的攔截、防止汙染BI報表和線上推薦算法等場景;
- 數據平台——全鏈路壓測的基地;
- 流量平台——全鏈路壓測的CPU,主要由全鏈路壓測操控中心以及壓測引擎兩大部件構成;
- 影子表——為了不汙染線上的正常數據,在同一個數據庫實例上對數據庫表建同樣結構的影子表來進行數據隔離;
- 中間件改造——全鏈路壓測需要所有中間件的協議都支持對壓測流量的識別,使得壓測標識能夠隨著調用傳遞下去,使得下遊的應用、基礎中間件和存儲都能夠識別壓測流量;
- 安全機製——安全機製分為兩層:第一層是安全的監控和防護,建立非法流量的監控機製、防止數據錯亂;第二層是對壓測流量的安全過濾,針對壓測流量放鬆安全過濾,使得壓測流量不被判別為攻擊流量。
限流的作用相當於保險絲,當過載的時候掐掉一些流量,讓係統有能力集中資源以較快的速度處理平台能力範圍內的客戶。比如某次活動,預計100萬人的流量結果湧來千萬用戶,容易使得後端的服務器直接滿負荷運算最終造成整個平台無法響應,限流之後僅讓100萬用戶進入後端的處理流程,給被阻攔的用戶返回限流頁麵,限流頁麵可以與活動頁麵保持一致在一定程度上減低用戶的失落體驗。
阿裏巴巴通過在Nginx上實現的擴展組件TMD(Taobao Missile Defense)實現了接入層限流的主要工作,主要通過域名類限流、cookie限流、黑名單等一些安全策略來實現。對於服務層的限流控製,主要通過限流平台Sentinel控製,Sentinel平台是對資源調用的控製平台,主要涵蓋了授權、限流、降級、調用統計監控四大模塊。同時Sentinel平台還提供降級功能,除了通過代碼中修改服務調用邏輯的值外,也可以通過Sentinel控製台提供的降級規則的配置來開啟服務的降級模式。
業務與數據不一致的問題原因非常複雜,遠程服務調用失敗、數據庫保存失敗、MQ消息發送失敗或者程序設計自身的問題都會導致業務數據異常。為了解決這個問題,實時業務審計BCP(Business Check Platform)應運而生,BCP平台並不僅限於交易類業務,也適合其他對業務穩定性要求比較高的領域,通過事件模式,把業務數據變化觸發的消息轉換為相應業務類型的事件,放入到事件執行隊列進行規則檢查。
BCP平台主要實現了4個目標,第一:高實時性地發現業務髒數據或錯誤邏輯;第二:讓各應用快速接入BCP平台;第三:整合訂正工具,形成規範的髒數據訂正流程;第四:實現了對新業務上線的實時監控。BCP平台讓整個平台穩定性能力從技術維度延伸到了業務維度,是平台穩定性體係中一個非常重要的拚圖。
內容摘錄於《企業IT架構轉型之道》,限於篇幅原因,本篇有關流量調度以及業務開關環節未做介紹,有興趣的讀者可以閱讀阿裏巴巴中間件首席架構師鍾華著作的《企業IT架構轉型之道》一書,此係列就此結束,前兩篇的文章鏈接如下,歡迎一起探討:
阿裏巴巴中台架構的建設原則——走進《企業IT架構轉型之道》係列2
阿裏巴巴中台架構的業務價值思考——走進《企業IT架構轉型之道》係列1
作者:鍾華(古謙)
阿裏巴巴中間件首席架構師,15年中間件領域行業經驗。對傳統企業IT建設和互聯網架構都有較為深入的理解,有著紮實的理論基礎和豐富的實戰經驗,多次作為總架構師協助大型傳統企業打造業務中台項目,為企業實現“互聯網+”轉型提供了科學的發展方向和強有力的技術支持,項目涉及政府、製造業、金融、交通、媒體等多個領域。
最後更新:2017-09-14 19:33:05