江湖傳言,系統的穩定性、高效能和可擴展性兼得是不可能三角。
百融云創的技術人員用五年的時間,攻破了這個不可能三角。當前百融云創MaaS云平臺安全可靠,在滿足日常1億、峰值3億次查詢請求下,API穩定性高達99.999%。
這些數字組合在一起意味著什么呢?
假設穩定性為99.9%,這1億次調用中則有10萬條故障請求。如果穩定性為99.999%,則這兩項數據就變成了1000條故障請求,故障時間可以忽略不計。總之一句話,小數點后面數字越大,事越小。
API這么穩是怎么實現的呢?
這還得從2019年的一天說起。北京職場的一間辦公室里氣氛熱烈,面對業務的快速發展,一場關于質量管理的會議召開。API穩定性是質量管理的重中之重。會上,確立了一個在當時看來近乎苛刻的目標。
“我想要5個9,誰同意,誰反對。”
就這樣,質量管理部、研發、運維、QA以及公司一切可以配合的部門,啟動了“五九會戰”。
但很快大家的心情就從這一興奮的目標中平復過來,很多同事都是業內老兵,他們深知99.999%這個數字意味著什么。這將是一個前所未有的挑戰,他們要向行業的珠穆拉瑪峰發起沖擊。
打造SRE方案
傳統運維是一種被動的形式,技術人員始終忙于奔命,到處救火。大家的心理狀態可以用一句話形容,“我這一生,如履薄冰。你說我能走到對岸么?”
善戰者無赫赫之功。百融云創的目標是要化被動為主動,將主動權牢牢掌握在自己手里。SRE方案是實現這個目標的關鍵。
該方案由Google SRE工程師Mikey Dickerson在2013年提出,這個方案的精髓是將系統穩定性需求按照基礎程度,進行了不同層次的體系化區分,形成穩定性標準金字塔模型。
百融云創確立了SRE建設方案,但SRE是一個龐大的系統工程,千頭萬緒,要從哪里抓起呢?
首先要確立觀測目標。
我們的核心是服務客戶,團隊選擇距離客戶最近的產品線作為觀測目標。
確立好觀測目標后,團隊以故障前、故障中、故障后三個階段為抓手,推動整個SRE體系的建設。
監控告警體系:完善的監控告警體系是保障系統穩定性的基石,缺少監控的系統,如同蒙上眼睛狂奔的野馬。我們需要時刻了解API的運行情況,并根據運行情況排查系統故障、判斷是否需要優化性能、是否需要擴容等。團隊從三個方面來搭建監控系統:
監控系統:指標監控:團隊搭建了Prometheus監控組件,收集各個服務、中間件、硬件設備等上萬個指標,就像一個“天網”系統,時刻監測系統運行時的狀態。
日志監控:團隊搭建了ELK日志平臺,收集大量日志,這些日志詳實地記錄著程序運行時的各種事件,方便排查服務故障。
全鏈路監控:團隊搭建了全鏈路的監控系統,把每一次的系統調用經過的微服務和中間件串聯起來,結合指標和日志監控,實現故障排查。
有了完善的監控系統,還得搭配敏捷的告警系統。
告警系統:團隊從告警渠道(支持發送郵件、釘釘、短信、電話)、指標告警、日志告警三個層面進行完善。團隊自研了日志告警組件,支持按照告警次數、告警周期、階梯告警等方式,對不同服務、不同類型的日志告警進行壓制,可以有效避免告警風暴。
告警手段的完善,帶來了一個問題。當告警大量產生時,要如何判斷和應對呢?為此,團隊做了自動故障診斷功能,首先采用決策樹的方式對故障進行定級,確認故障的開始時間和嚴重程度。其次,將故障持續時間內的告警進行篩選和聚合,并根據全鏈路監控生成故障圖,將發生異常的服務和中間件關聯起來展示。最后,根據故障信息和故障圖,對故障根因服務做初步的定位,這樣能輔助減少定位故障根因的時間,快速排查故障。
故障應急:為應對應急情況,團隊組建了故障應急小組,7*24戰備值班,時刻戰備和戰斗狀態。力爭以最短時間內解決問題、將損失將至最低。
自動故障切換:人工處理故障存在不確定性,為了最大程度減少這種不確定性。團隊開發了智能監控系統,實現切換過程的自動化。百融云創已實現了同城雙活,當某個機房的服務出現故障時,可以在秒級自動切換到異地機房,恢復系統的正常運行。
事實上,這些環節也只是整個穩定性建設的冰山一角,SRE體系建設是由眾多大大小小的事項組成。建設過程異常艱辛和復雜,在團隊的不懈努力下,不僅帶來了系統穩定性的穩步提升,還實現人、工具、流程的協同共治。比如,在流程上,制定了大量的規范(開發規范,發布規范,變更規范等),實現了一系列標準作業流程;大量利用自動化、智能化工具,來執行重復性的運維任務,如部署、配置管理、監控和故障排除。減少人為可能帶來的錯誤,并提高效率。
將一件事做上成千上萬遍
系統穩定性的提升,不僅是對技術的考驗,更是對人的考驗。技術并不是萬能靈藥,人的作用非常重要,需要一群崇尚工匠主義的人,不僅能從0到1,構建一個宏大的體系架構。還能逢山開路,遇水架橋,集中攻破一些技術難關。還能張飛繡花,處理好大量繁雜而又細小的技術點。
穩定性建設并不是一勞永逸的事情,它非常依賴長期迭代不斷完善。團隊進行了大量的極限壓力測試,以此來做容量規劃。進行了多次演習,以己之矛攻己之盾,以此來檢查系統可能存在的漏洞。這還不用說日常的巡檢工作,我們的技術同事說,做好穩定性,人的主觀態度與技術同樣重要,要耐心地把一件事做上成千上萬遍,周而復始。就像攀登珠峰,沿著目標一步一步走下去,才能達到目的地。
這一群崇尚工匠主義的人,五年如一日的堅守,換來的是穩定性數字的不斷刷新。99.992、99.994、99.998,每一年這個數字都在艱難的刷新記錄。
在2023年公司年會上,團隊得到了公司大力表彰,幾十人先后登臺領獎。
榮譽是屬于過去的,穩定性是一個永遠在路上,永遠不能懈怠,永遠追求極致的工作。
當初,99.999%那個看似遙不可及的目標,已經在2024年上半年成功達成,在珠峰頂完成插旗。
從99.998%到99.999%,這萬分之一的提高,是技術難度指數級上升。為了這十萬分之一,團隊在今年進行了大量新的工作。我們的腳步不會停下,越過一座山峰,還要堅定向更高峰走去,“零缺陷的質量管理”,正在成為新的奮斗目標。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.