美團即時物流的分布式系統(tǒng)架構設計

背景

美團外賣已經發(fā)展了五年躲因,即時物流探索也經歷了 3 年多的時間淀衣,業(yè)務從零孵化到初具規(guī)模篱昔,在整個過程中積累了一些分布式高并發(fā)系統(tǒng)的建設經驗瑞妇。最主要的收獲包括兩點:

  1. 即時物流業(yè)務對故障和高延遲的容忍度極低,在業(yè)務復雜度提升的同時也要求系統(tǒng)具備分布式秉沼、可擴展桶雀、可容災的能力。即時物流系統(tǒng)階段性的逐步實施分布式系統(tǒng)的架構升級唬复,最終解決了系統(tǒng)宕機的風險矗积。

  2. 圍繞成本、效率敞咧、體驗核心三要素棘捣,即時物流體系大量結合 AI 技術,從定價休建、ETA乍恐、調度、運力規(guī)劃测砂、運力干預茵烈、補貼、核算砌些、語音交互呜投、LBS 挖掘、業(yè)務運維存璃、指標監(jiān)控等方面宙彪,業(yè)務突破結合架構升級,達到促規(guī)模有巧、保體驗、降成本的效果悲没。

圖片

本文主要介紹在美團即時物流分布式系統(tǒng)架構逐層演變的進展中篮迎,遇到的技術障礙和挑戰(zhàn):

  • 訂單男图、騎手規(guī)模大,供需匹配過程的超大規(guī)模計算問題甜橱。

  • 遇到節(jié)假日或者惡劣天氣逊笆,訂單聚集效應,流量高峰是平常的十幾倍岂傲。

  • 物流履約是線上連接線下的關鍵環(huán)節(jié)难裆,故障容忍度極低,不能宕機镊掖,不能丟單乃戈,可用性要求極高。

  • 數(shù)據(jù)實時性亩进、準確性要求高症虑,對延遲、異常非常敏感归薛。

美團即時物流架構

美團即時物流配送平臺主要圍繞三件事展開:一是面向用戶提供履約的 SLA谍憔,包括計算送達時間 ETA、配送費定價等主籍;二是在多目標(成本习贫、效率、體驗)優(yōu)化的背景下千元,匹配最合適的騎手苫昌;三是提供騎手完整履約過程中的輔助決策,包括智能語音诅炉、路徑推薦蜡歹、到店提醒等。

圖片

在一系列服務背后涕烧,是美團強大的技術體系的支持月而,并由此沉淀出的配送業(yè)務架構體系,基于架構構建的平臺议纯、算法父款、系統(tǒng)和服務。龐大的物流系統(tǒng)背后離不開分布式系統(tǒng)架構的支撐瞻凤,而且這個架構更要保證高可用和高并發(fā)憨攒。

分布式架構,是相對于集中式架構而言的一種架構體系阀参。分布式架構適用 CAP 理論(Consistency 一致性肝集,Availability 可用性,Partition Tolerance 分區(qū)容忍性)蛛壳。在分布式架構中杏瞻,一個服務部署在多個對等節(jié)點中所刀,節(jié)點之間通過網(wǎng)絡進行通信,多個節(jié)點共同組成服務集群來提供高可用捞挥、一致性的服務浮创。

早期,美團按照業(yè)務領域劃分成多個垂直服務架構砌函;隨著業(yè)務的發(fā)展斩披,從可用性的角度考慮做了分層服務架構。后來讹俊,業(yè)務發(fā)展越發(fā)復雜垦沉,從運維、質量等多個角度考量后劣像,逐步演進到微服務架構乡话。這里主要遵循了兩個原則:不宜過早的進入到微服務架構的設計中,好的架構是演進出來的不是提前設計出來的耳奕。

分布式系統(tǒng)實踐

圖片

上圖是比較典型的美團技術體系下的分布式系統(tǒng)結構:依托了美團公共組件和服務绑青,完成了分區(qū)擴容、容災和監(jiān)控的能力屋群。前端流量會通過 HLB 來分發(fā)和負載均衡闸婴;在分區(qū)內,服務與服務會通過 OCTO 進行通信芍躏,提供服務注冊邪乍、自動發(fā)現(xiàn)、負載均衡对竣、容錯庇楞、灰度發(fā)布等等服務。當然也可以通過消息隊列進行通信否纬,例如 Kafka吕晌、RabbitMQ。在存儲層使用 Zebra 來訪問分布式數(shù)據(jù)庫進行讀寫操作临燃。利用 CAT(美團開源的分布式監(jiān)控系統(tǒng))進行分布式業(yè)務及系統(tǒng)日志的采集睛驳、上報和監(jiān)控。分布式緩存使用 Squirrel+Cellar 的組合膜廊。分布式任務調度則是通過 Crane乏沸。

在實踐過程還要解決幾個問題,比較典型的是集群的擴展性爪瓜,有狀態(tài)的集群可擴展性相對較差蹬跃,無法快速擴容機器,無法緩解流量壓力铆铆。同時蝶缀,也會出現(xiàn)節(jié)點熱點的問題辆苔,包括資源不均勻、CPU 使用不均勻等等扼劈。

圖片

首先,配送后臺技術團隊通過架構升級菲驴,將有狀態(tài)節(jié)點變成無狀態(tài)節(jié)點荐吵,通過并行計算的能力,讓小的業(yè)務節(jié)點去分擔計算壓力赊瞬,以此實現(xiàn)快速擴容先煎。

第二是要解決一致性的問題,對于既要寫 DB 也要寫緩存的場景巧涧,業(yè)務寫緩存無法保障數(shù)據(jù)一致性薯蝎,美團內部主要通過 Databus 來解決,Databus 是一個高可用谤绳、低延時占锯、高并發(fā)、保證數(shù)據(jù)一致性的數(shù)據(jù)庫變更實時傳輸系統(tǒng)缩筛。通過 Databus 上游可以監(jiān)控業(yè)務 Binlog 變更消略,通過管道將變更信息傳遞給 ES 和其他 DB,或者是其他 KV 系統(tǒng)瞎抛,利用 Databus 的高可用特性來保證數(shù)據(jù)最終是可以同步到其他系統(tǒng)中艺演。

圖片

第三是我們一直在花精力解決的事情,就是保障集群高可用桐臊,主要從三個方面來入手胎撤,事前較多的是做全鏈路壓測評,估峰值容量断凶;周期性的集群健康性檢查伤提;隨機故障演練(服務、機器懒浮、組件)飘弧。事中做異常報警(性能、業(yè)務指標砚著、可用性)次伶;快速的故障定位(單機故障、集群故障稽穆、IDC 故障冠王、組件異常、服務異常)舌镶;故障前后的系統(tǒng)變更收集柱彻。事后重點做系統(tǒng)回滾豪娜;擴容、限流哟楷、熔斷瘤载、降級;核武器兜底卖擅。

圖片
圖片

單 IDC 的快速部署 &容災

單 IDC 故障之后鸣奔,入口服務做到故障識別,自動流量切換惩阶;單 IDC 的快速擴容挎狸,數(shù)據(jù)提前同步,服務提前部署断楷,Ready 之后打開入口流量锨匆;要求所有做數(shù)據(jù)同步、流量分發(fā)的服務冬筒,都具備自動故障檢測恐锣、故障服務自動摘除;按照 IDC 為單位擴縮容的能力账千。

圖片

多中心嘗試

美團 IDC 以分區(qū)為單位侥蒙,存在資源滿排,分區(qū)無法擴容匀奏。美團的方案是多個 IDC 組成虛擬中心鞭衩,以中心為分區(qū)的單位;服務無差別的部署在中心內娃善;中心容量不夠论衍,直接增加新的 IDC 來擴容容量。

圖片

單元化嘗試

相比多中心來說聚磺,單元化是進行分區(qū)容災和擴容的更優(yōu)方案坯台。關于流量路由,美團主要是根據(jù)業(yè)務特點瘫寝,采用區(qū)域或城市進行路由蜒蕾。數(shù)據(jù)同步上,異地會出現(xiàn)延遲狀況焕阿。SET 容災上要保證同本地或異地 SET 出現(xiàn)問題時咪啡,可以快速把 SET 切換到其他 SET 上來承擔流量。

圖片

智能物流的核心技術能力和平臺沉淀

機器學習平臺暮屡,是一站式線下到線上的模型訓練和算法應用平臺撤摸。之所以構建這個平臺,目的是要解決算法應用場景多,重復造輪子的矛盾問題准夷,以及線上钥飞、線下數(shù)據(jù)質量不一致。如果流程不明確不連貫衫嵌,會出現(xiàn)迭代效率低读宙,特征、模型的應用上線部署出現(xiàn)數(shù)據(jù)質量等障礙問題楔绞。

圖片

JARVIS 是一個以穩(wěn)定性保障為目標的智能化業(yè)務運維 AIOps 平臺论悴。主要用于處理系統(tǒng)故障時報警源很多,會有大量的重復報警墓律,有效信息很容易被淹沒等各種問題。此外幔亥,過往小規(guī)模分布式集群的運維故障主要靠人和經驗來分析和定位耻讽,效率低下,處理速度慢帕棉,每次故障處理得到的預期不穩(wěn)定针肥,在有效性和及時性方面無法保證。所以需要 AIOps 平臺來解決這些問題香伴。

圖片

未來的挑戰(zhàn)

經過復盤和 Review 之后慰枕,我們發(fā)現(xiàn)未來的挑戰(zhàn)很大,微服務不再“微”了即纲,業(yè)務復雜度提升之后具帮,服務就會變得膨脹。其次低斋,網(wǎng)狀結構的服務集群蜂厅,任何輕微的延遲,都可能導致的網(wǎng)絡放大效應膊畴。另外復雜的服務拓撲掘猿,如何做到故障的快速定位和處理,這也是 AIOps 需要重點解決的難題唇跨。最后稠通,就是單元化之后,從集群為單位的運維到以單元為單位的運維买猖,也給美團業(yè)務部署能力帶來很大的挑戰(zhàn)改橘。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市政勃,隨后出現(xiàn)的幾起案子唧龄,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件既棺,死亡現(xiàn)場離奇詭異讽挟,居然都是意外死亡,警方通過查閱死者的電腦和手機丸冕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門耽梅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胖烛,你說我怎么就攤上這事眼姐。” “怎么了佩番?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵众旗,是天一觀的道長。 經常有香客問我趟畏,道長贡歧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任赋秀,我火速辦了婚禮利朵,結果婚禮上,老公的妹妹穿的比我還像新娘猎莲。我一直安慰自己绍弟,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布著洼。 她就那樣靜靜地躺著樟遣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪身笤。 梳的紋絲不亂的頭發(fā)上年碘,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音展鸡,去河邊找鬼屿衅。 笑死,一個胖子當著我的面吹牛莹弊,可吹牛的內容都是我干的涤久。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼忍弛,長吁一口氣:“原來是場噩夢啊……” “哼响迂!你這毒婦竟也來了?” 一聲冷哼從身側響起细疚,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蔗彤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體然遏,經...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡贫途,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了待侵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丢早。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秧倾,靈堂內的尸體忽然破棺而出怨酝,到底是詐尸還是另有隱情,我是刑警寧澤那先,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布农猬,位于F島的核電站,受9級特大地震影響售淡,放射性物質發(fā)生泄漏盛险。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一勋又、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧换帜,春花似錦楔壤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至祟牲,卻和暖如春隙畜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背说贝。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工议惰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乡恕。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓言询,卻偏偏與公主長得像,于是被迫代替她去往敵國和親傲宜。 傳聞我的和親對象是個殘疾皇子运杭,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內容