2000萬日訂單背後:美團外賣客戶端高可用建設體系

背景

美團外賣從2013年11月開始起步,通過數年的高速發展,一直在不斷地刷新着記錄。2018年5月19日,日訂單量峯值突破2000萬單,已經成爲全球規模最大的外賣平臺。業務的快速發展對系統穩定性提出了更高的要求,如何爲線上用戶提供高穩定的服務體驗,保障全鏈路業務和系統高可用運行,不只須要後端服務支持,更須要在端上提供全面的技術保障。而相對服務端而言,客戶端運行環境千差萬別,不可控因素多,面對突發問題應急能力差。所以,構建客戶端的高可用建設體系,保障服務穩定高可用,不只是對工程師的技術挑戰,也是外賣平臺的核心競爭力之一。html

高可用建設體系的思路

一個設計良好的大型客戶端系統每每是由一系列各自獨立的小組共同開發完成的,每個小組都應當具備明肯定義的的職責劃分。各業務模塊之間推行「鬆耦合」開發模式,讓業務模塊擁有隔離式變動的能力,是一種能夠同時提高開發靈活性和系統健壯性的有效手段。這是美團外賣總體的業務架構,總體上以商品交易鏈路(門店召回,商品展現,交易)爲核心方向進行建設,局部上依據業務特色和團隊分工分紅多個可獨立運維單元單獨維護。可獨立運維單元的簡單性是可靠性的前提條件,這使得咱們可以持續關注功能迭代,不斷完成相關的工程開發任務。前端

圖片1

咱們將問題依照生命週期劃分爲三個階段:發現、定位、解決,圍繞這三個階段的持續建設,構成了美團外賣高可用建設體系的核心。後端

美團外賣質量保障體系全景圖

這是美團外賣客戶端總體質量體系全景圖。總體思路:監控報警,日誌體系,容災。緩存

圖片2

經過採集業務穩定性,基礎能力穩定性,性能穩定性三大類指標數據並上報,衡量客戶端系統質量的標準得以完善;經過設立基線,應用特定業務模型對這一系列指標進行監控報警,客戶端具有了分鐘級感知核心鏈路穩定性的能力;而經過搭建日誌體系,整個系統有了提取關鍵線索能力,多維度快速定位問題。當問題一旦定位,咱們就能經過美團外賣的線上運維規範進行容災操做:降級,切換通道或限流,從而保證總體的核心鏈路穩定性。安全

監控&報警

監控系統,處於整個服務可靠度層級模型的最底層,是運維一個可靠的穩定系統必不可少的重要組成部分。爲了保障全鏈路業務和系統高可用運行,須要在用戶感知問題以前發現系統中存在的異常,離開了監控系統,咱們就沒有能力分辨客戶端是否是在正常提供服務。服務器

圖片3

按照監控的領域方向,能夠分紅系統監控與業務監控。 系統監控,主要用於基礎能力如端到端成功率,服務響應時長,網絡流量,硬件性能等相關的監控。系統監控側重在無業務侵入和定製系統級別的監控,更多側重在業務應用的底層,多屬於單系統級別的監控。 業務監控,側重在某個時間區間,業務的運行狀況分析。業務監控系統構建於系統監控之上,能夠基於系統監控的數據指標計算,並基於特定的業務介入,實現多系統之間的數據聯合與分析,並根據相應的業務模型,提供實時的業務監控與告警。按照業務監控的時效性,能夠繼續將其細分紅實時業務監控與離線業務監控。網絡

  • 實時業務監控,經過實時的數據採集分析,幫助快速發現及定位線上問題,提供告警機制及介入響應(人工或系統)途徑,幫助避免發生系統故障。
  • 離線的業務監控,對必定時間段收集的數據進行數據挖掘、聚合、分析,推斷出系統業務可能存在的問題,幫助進行業務上的從新優化或改進的監控。

美團外賣的業務監控,大部分屬於實時業務監控。藉助美團統一的系統監控建設基礎,美團外賣聯合公司其餘部門將部分監控基礎設施進行了改造、共建和整合複用,並打通造成閉環(監控,日誌,回撈),咱們構建了特定符合外賣業務流程的實時業務監控; 而離線的業務監控,主要經過用戶行爲的統計與業務數據的挖掘分析,來幫助產品設計,運營策略行爲等產生影響,目前這部分監控主要由美團外賣數據組提供服務。值得特別說明的是單純的信息彙總展現,無需或沒法當即作出介入動做的業務監控,能夠稱之爲業務分析,如特定區域的活動消費狀況、區域訂單數量、特定路徑轉換率、曝光點擊率等,除非這些數據用來決策系統實時狀態健康狀況,幫助產生系統維護行爲,不然這部分監控由離線來處理更合適。架構

圖片4

咱們把客戶端穩定性指標分爲3類維度:業務穩定性指標,基礎能力穩定性指標,性能穩定性指標。對不一樣的指標,咱們採用不一樣的採集方案進行提取上報,彙總到不一樣系統;在設定完指標後,咱們就能夠制定基線,並依照特定的業務模型制定報警策略。美團外賣客戶端擁有超過40項度量質量指標,其中25項指標支持分鐘級別報警。報警通道依據緊急程度支持郵件,IM和短信三條通道。所以,咱們團隊具有及時發現影響核心鏈路穩定性的關鍵指標變化能力。運維

一個完善的監控報警系統是很是複雜的,所以在設計時必定要追求簡化。如下是《Site Reliability Engineering: How Google Runs Production Systems》一書中提到的告警設置原則:工具

最能反映真實故障的規則應該可預測性強,很是可靠,而且越簡單越好 不經常使用的數據採集,彙總以及告警配置應該定時清除(某些SRE團隊的標準是一季度未使用即刪除) 沒有暴露給任何監控後臺、告警規則的採集數據指標應該定時清除

經過監控&報警系統,2017年下半年美團外賣客戶端團隊共發現影響核心鏈路穩定性超過20起問題:包括爬蟲、流量、運營商403問題、性能問題等。目前,全部問題均已所有改造完畢。

日誌體系

監控系統的一個重要特徵是生產緊急告警。一旦出現故障,須要有人來調查這項告警,以決定目前是否存在真實故障,是否須要採起特定方法緩解故障,直至查出致使故障的問題根源。

簡單定位和深刻調試的過程必需要保持很是簡單,必須可以被團隊中任何一我的所理解。日誌體系,在簡化這一過程當中起到了決定性做用。

圖片5

美團外賣的日誌體系整體分爲3大類:即全量日誌系統,個體日誌系統,異常日誌系統。全量日誌系統,主要負責採集總體性指標,如網絡可用性,埋點可用性,咱們能夠經過他了解到系統總體大盤,瞭解總體波動,肯定問題影響範圍;異常日誌系統,主要採集異常指標,如大圖問題,分享失敗,定位失敗等,咱們經過他能夠迅速獲取異常上下文信息,分析解決問題;而個體日誌系統,則用於提取個體用戶的關鍵信息,從而針對性的分析特定客訴問題。這三類日誌,構成了完整的客戶端日誌體系。

圖片2

日誌的一個典型使用場景是處理單點客訴問題,解決系統潛在隱患。個體日誌系統,用於簡化工程師提取關鍵線索步驟,提高定位分析問題效率。在這一領域,美團外賣使用的是點評平臺開發的Logan服務。做爲美團移動端底層的基礎日誌庫,Logan接入了集團衆多日誌系統,例如端到端日誌、用戶行爲日誌、代碼級日誌、崩潰日誌等,而且這些日誌所有都是本地存儲,且有多重加密機制和嚴格的權限審覈機制,在處理用戶客訴時纔對數據進行回撈和分析,保證用戶隱私安全。

經過設計和實施美團外賣核心鏈路日誌方案,咱們打通了用戶交易流程中各系統如訂單,用戶中心,Crash平臺與Push後臺之間的底層數據同步;經過輸出標準問題分析手冊,針對常見個體問題的分析和處理得以標準化;經過制定日誌撈取SOP並按期演練,線上追溯能力大幅提高,平常客訴絕大部分可在30分鐘內定位緣由。在這一過程當中,經過個體暴露出影響核心鏈路穩定性的問題也均已所有改進/修復。

故障排查是運維大型系統的一項關鍵技能。採用系統化的工具和手段而不只僅依靠經驗甚至運氣,這項技能是能夠自我學習,也能夠內部進行傳授。

容災備份

針對不一樣級別的服務,應該採起不一樣的手段進行有效止損。非核心依賴,經過降級向用戶提供可伸縮的服務;而核心依賴,採用多通道方式進行依賴備份容災保證交易路徑鏈路的高可用;異常流量,經過多維度限流,最大限度保證業務可用性的同時,給予用戶良好的體驗。總結成三點,即:非核心依賴降級、核心依賴備份、過載保護限流。接下來咱們分別來闡述這三方面。

降級

圖片6

在這裏選取美團外賣客戶端總體系統結構關係圖來介紹非核心依賴降級建設概覽。圖上中間紅色部分是核心關鍵節點,即外賣業務的核心鏈路:定位,商家召回,商品展現,下單;藍色部分,是核心鏈路依賴的關鍵服務;黃色部分,是可降級服務。咱們經過梳理依賴關係,改造先後端通信協議,實現了客戶端非核心依賴可降級;然後端服務,經過各級緩存,屏蔽隔離策略,實現了業務模塊內部可降級,業務之間可降級。這構成了美團外賣客戶端總體的降級體系。

右邊則是美團外賣客戶端業務/技術降級開關流程圖。經過推拉結合,緩存更新策略,咱們可以分鐘級別同步降級配置,快速止損。

目前,美團外賣客戶端有超過20項業務/能力支持降級。經過有效降級,咱們避開了1次S2級事故,屢次S三、S4級事故。此外,降級開關總體方案產出SDK horn,推廣至集團酒旅、金融等其餘核心業務應用。

備份

核心依賴備份建設上,在此重點介紹美團外賣多網絡通道。網絡通道,做爲客戶端的最核心依賴,倒是整個全鏈路體系最不可控的部分,常常出現問題:網絡劫持,運營商故障,甚至光纖被物理挖斷等大大小小的故障嚴重影響了核心鏈路的穩定性。所以,治理網絡問題,必需要建設可靠的多通道備份。

圖片7

這是美團外賣多網絡通道備份示意圖。美團外賣客戶端擁有Shark、HTTP、HTTPS、HTTP DNS等四條網絡通道:總體網絡以Shark長連通道爲主通道,其他三條通道做爲備份通道。配合完備的開關切換流程,能夠在網絡指標發生驟降時,實現分鐘級別的分城市網絡通道切換。而經過制定故障應急SOP並不斷演練,提高了咱們解決問題的能力和速度,有效應對各種網絡異常。咱們的網絡通道開關思路也輸出至集團其餘部門,有效支持了業務發展。

限流

服務過載是另外一類典型的事故。究其緣由大部分狀況下都是因爲少數調用方調用的少數接口性能不好,致使對應服務的性能惡化。若調用端缺少有效降級容錯,在某些正常狀況下可以下降錯誤率的手段,如請求失敗後重試,反而會讓服務進一步性能惡化,甚至影響原本正常的服務調用。

美團外賣業務在高峯期訂單量已達到了至關高的規模量級,業務系統也及其複雜。根據以往經驗,在業務高峯期,一旦出現異常流量瘋狂增加從而致使服務器宕機,則損失不可估量。

所以,美團外賣先後端聯合開發了一套「流量控制系統」,對流量實施實時控制。既能平常保證業務系統穩定運轉,也能在業務系統出現問題的時候提供一套優雅的降級方案,最大限度保證業務的可用性,在將損失降到最低的前提下,給予用戶良好的體驗。

圖片8

整套系統,後端服務負責識別打標分類,經過統一的協議告訴前端所標識類別;而前端,經過多級流控檢查,對不一樣流量進行區分處理:彈驗證碼,或排隊等待,或直接處理,或直接丟棄。 面對不一樣場景,系統支持多級流控方案,可有效攔截系統過載流量,防止系統雪崩。此外,整套系統擁有分接口流控監控能力,可對流控效果進行監控,及時發現系統異常。整套方案在數次異常流量增加的故障中,經受住了考驗。

發佈

隨着外賣業務的發展,美團外賣的用戶量和訂單量已經達到了至關的量級,在線直接全量發佈版本/功能影響範圍大,風險高。 版本灰度和功能灰度是一種可以平滑過渡的發佈方式:即在線上進行A/B實驗,讓一部分用戶繼續使用產品(特性)A,另外一部分用戶開始使用產品(特性)B。若是各項指標平穩正常,結果符合預期,則擴大範圍,將全部用戶都遷移到B上來,不然回滾。灰度發佈能夠保證系統的穩定,在初試階段就能夠發現問題,修復問題,調整策略,保證影響範圍不被擴散。

美團外賣客戶端在版本灰度及功能灰度已較爲完善。 版本灰度 iOS採用蘋果官方提供的分階段發佈方式,Android則採用美團自研的EVA包管理後臺進行發佈。這兩類發佈均支持逐步放量的分發方式。 功能灰度 功能發佈開關配置系統依據用戶特徵維度(如城市,用戶ID)發佈,而且整個配置系統有測試和線上兩套不一樣環境,配合固定的上線窗口,保證上線的規範性。 對應的,相應的監控基礎設施也支持分用戶特徵維度(如城市,用戶ID)監控,避免了那些沒法在總體大盤體現的灰度異常。此外,不管版本灰度或功能灰度,咱們均有相應最小灰度週期和回滾機制,保證整個灰度發佈過程可控,最小化問題影響。

線上運維

圖片9

在故障來臨時如何應對,是整個質量保障體系中最關鍵的環節。沒有人天生就能完美的處理緊急狀況,面對問題,恰當的處理須要平時不斷的演練。 圍繞問題的生命週期,即發現、定位、解決(預防),美團外賣客戶端團隊組建了一套完備的處理流程和規範來應對影響鏈路穩定性的各種線上問題。總體思路:創建規範,提早建設,有效應對,過後總結。在不一樣階段用不一樣方式解決不一樣問題,事前肯定完整的事故流程管理策略,並確保平穩實施,常常演練,問題的平均恢復時間大大下降,美團外賣核心鏈路的高穩定性纔可以得以保障。

將來展望

當前美團外賣業務仍然處於快速增加期。伴隨着業務的發展,背後支持業務的技術系統也日趨複雜。在美團外賣客戶端高可用體系建設過程當中,咱們但願可以經過一套智能化運維繫統,幫助工程師快速、準確的識別核心鏈路各子系統異常,發現問題根源,並自動執行對應的異常解決預案,進一步縮短服務恢復時間,從而避免或減小線上事故影響。

誠然,業界關於自動化運維的探索有不少,但多數都集中在後臺服務領域,前端方向成果較少。咱們外賣技術團隊目前也在同步的探索中,正處於基礎性建設階段,歡迎更多業界同行跟咱們一塊兒討論、切磋。

參考資料

  1. Site Reliability Engineering: How Google Runs Production Systems
  2. 美團點評移動端基礎日誌庫——Logan
  3. 美團點評移動網絡優化實踐

做者簡介

陳航,美團高級技術專家。2015年加入美團,目前負責美團外賣iOS團隊,對移動端架構演進,監控報警備份容災,移動端線上運維等領域有深入理解。

富強,美團資深工程師。2015年加入美團,是外賣iOS的早期開發者之一,目前做爲美團外賣iOS基礎設施小組負責人,負責外賣基礎設施及廣告運營相關業務。

徐宏,美團高級工程師。2016年加入美團,目前做爲外賣iOS團隊主力開發,負責移動端APM性能監控,高可用基礎設施支撐相關推動工做。

招聘

美團外賣長期招聘iOS、Android、FE高級/資深工程師和技術專家,可Base在北京、上海、成都,歡迎有興趣的同窗將簡歷發送至chenhang03#meituan.com。若是對咱們團隊感興趣,能夠關注咱們的專欄

相關文章
相關標籤/搜索