引言:即時貨運(yùn)看似簡單,表面看僅僅是貨運(yùn)最原始的配送模式,即:點(diǎn)對點(diǎn)配送。并且,在互聯(lián)網(wǎng)成為基礎(chǔ)設(shè)施的明天,大數(shù)據(jù)、云估算、物聯(lián)網(wǎng)等先進(jìn)技術(shù)都將至?xí)r貨運(yùn)配送體系中得到應(yīng)用,數(shù)據(jù)驅(qū)動,智能調(diào)撥已然成為即時貨運(yùn)的核心競爭力。假如即時貨運(yùn)與上游的傳統(tǒng)貨運(yùn)體系和智慧供應(yīng)鏈對接,將打通傳統(tǒng)貨運(yùn)配送最難的末端網(wǎng)路,促使智慧供應(yīng)鏈向智慧供應(yīng)網(wǎng)轉(zhuǎn)型,即時貨運(yùn)的小趨勢將促進(jìn)智慧貨運(yùn)大趨勢發(fā)展。美團(tuán)即時貨運(yùn)系統(tǒng)在國外穩(wěn)居領(lǐng)先地位,美團(tuán)的即時貨運(yùn)的腦部是怎樣建設(shè)的?明天向你們推薦一篇美團(tuán)資深技術(shù)專家宋斌的文章,供你們參考。(王繼祥)
團(tuán)外賣的即時貨運(yùn)分布式高并發(fā)系統(tǒng)是怎樣建設(shè)的?背景
美團(tuán)外賣早已發(fā)展了三年,即時貨運(yùn)探求也經(jīng)歷了3年多的時間,業(yè)務(wù)從零孵化到初具規(guī)模,在整個過程中積累了一些分布式高并發(fā)系統(tǒng)的建設(shè)經(jīng)驗(yàn)。最主要的收獲包括兩點(diǎn):
即時貨運(yùn)業(yè)務(wù)對故障和高延后的容忍度極低外賣配送系統(tǒng),在業(yè)務(wù)復(fù)雜度提高的同時也要求系統(tǒng)具備分布式、可擴(kuò)充、可容災(zāi)的能力。即時貨運(yùn)系統(tǒng)階段性的逐漸施行分布式系統(tǒng)的構(gòu)架升級,最終解決了系統(tǒng)宕機(jī)的風(fēng)險。
圍繞成本、效率、體驗(yàn)核心三要素,即時貨運(yùn)體系大量結(jié)合AI技術(shù),從定價、ETA、調(diào)度、運(yùn)力規(guī)劃、運(yùn)力干預(yù)、補(bǔ)貼、核算、語音交互、LBS挖掘、業(yè)務(wù)運(yùn)維、指標(biāo)監(jiān)控等方面,業(yè)務(wù)突破結(jié)合構(gòu)架升級,達(dá)到促規(guī)模、保體驗(yàn)、降成本的療效。
本文主要介紹在美團(tuán)即時貨運(yùn)分布式系統(tǒng)構(gòu)架逐層演化的進(jìn)展中,遇見的技術(shù)障礙和挑戰(zhàn):
美團(tuán)即時貨運(yùn)構(gòu)架
美團(tuán)即時貨運(yùn)配送平臺主要圍繞三件事展開:一是面向用戶提供履約的SLA,包括估算送達(dá)時間ETA、配送費(fèi)定價等;二是在多目標(biāo)(成本、效率、體驗(yàn))優(yōu)化的背景下,匹配最合適的騎手;三是提供騎手完整履約過程中的輔助決策,包括智能語音、路徑推薦、到店提醒等。
在一系列服務(wù)背后,是美團(tuán)強(qiáng)悍的技術(shù)體系的支持,并由此沉淀出的配送業(yè)務(wù)構(gòu)架體系,基于構(gòu)架建立的平臺、算法、系統(tǒng)和服務(wù)。龐大的貨運(yùn)系統(tǒng)背后離不開分布式系統(tǒng)構(gòu)架的支撐,并且這個構(gòu)架更要保證高可用和高并發(fā)。
分布式構(gòu)架,是相對于集中式構(gòu)架而言的一種構(gòu)架體系。分布式構(gòu)架適用CAP理論(一致性,可用性,分區(qū)容忍性)。在分布式構(gòu)架中,一個服務(wù)布署在多個對等節(jié)點(diǎn)中,節(jié)點(diǎn)之間通過網(wǎng)路進(jìn)行通訊,多個節(jié)點(diǎn)共同組成服務(wù)集群來提供高可用、一致性的服務(wù)。
初期,美團(tuán)根據(jù)業(yè)務(wù)領(lǐng)域界定成多個垂直服務(wù)構(gòu)架;隨著業(yè)務(wù)的發(fā)展,從可用性的角度考慮做了分層服務(wù)構(gòu)架。后來,業(yè)務(wù)發(fā)展越發(fā)復(fù)雜,從運(yùn)維、質(zhì)量等多個角度審視后,逐漸演化到微服務(wù)構(gòu)架。這兒主要依循了兩個原則:不宜過早的步入到微服務(wù)構(gòu)架的設(shè)計(jì)中,好的構(gòu)架是演化下來的不是提早設(shè)計(jì)下來的。
分布式系統(tǒng)實(shí)踐
上圖是比較典型的美團(tuán)技術(shù)體系下的分布式系統(tǒng)結(jié)構(gòu):依托了美團(tuán)公共組件和服務(wù),完成了分區(qū)擴(kuò)容、容災(zāi)和監(jiān)控的能力。后端流量會通過HLB來分發(fā)和負(fù)載均衡;在分區(qū)內(nèi),服務(wù)與服務(wù)會通過OCTO進(jìn)行通訊,提供服務(wù)注冊、自動發(fā)覺、負(fù)載均衡、容錯、灰度發(fā)布等等服務(wù)。其實(shí)也可以通過消息隊(duì)列進(jìn)行通訊,比如Kafka、。在儲存層使用Zebra來訪問分布式數(shù)據(jù)庫進(jìn)行讀寫操作。借助CAT(美團(tuán)開源的分布式監(jiān)控系統(tǒng))進(jìn)行分布式業(yè)務(wù)及系統(tǒng)日志的采集、上報和監(jiān)控。分布式緩存使用+的組合。分布式任務(wù)調(diào)度則是通過Crane。
在實(shí)踐過程還要解決幾個問題,比較典型的是集群的擴(kuò)充性,有狀態(tài)的集群可擴(kuò)充性相對較差,難以快速擴(kuò)容機(jī)器,難以減輕流量壓力。同時,也會出現(xiàn)節(jié)點(diǎn)熱點(diǎn)的問題,包括資源不均勻、CPU使用不均勻等等。
首先,配送后臺技術(shù)團(tuán)隊(duì)通過構(gòu)架升級,將有狀態(tài)節(jié)點(diǎn)弄成無狀態(tài)節(jié)點(diǎn),通過并行估算的能力,讓小的業(yè)務(wù)節(jié)點(diǎn)去分擔(dān)估算壓力,借以實(shí)現(xiàn)快速擴(kuò)容。
第二是要解決一致性的問題,對于既要寫DB也要寫緩存的場景,業(yè)務(wù)寫緩存難以保障數(shù)據(jù)一致性,美團(tuán)內(nèi)部主要通過來解決,是一個高可用、低延時、高并發(fā)、保證數(shù)據(jù)一致性的數(shù)據(jù)庫變更實(shí)時傳輸系統(tǒng)。通過上游可以監(jiān)控業(yè)務(wù)變更,通過管線將變更信息傳遞給ES和其他DB,或則是其他KV系統(tǒng),借助的高可用特點(diǎn)來保證數(shù)據(jù)最終是可以同步到其他系統(tǒng)中。
第三是我們?nèi)匀辉诨ň鉀Q的事情,就是保障集群高可用,主要從三個方面來入手,事前較多的是做全鏈路壓測評,估峰值容量;周期性的集群健康性檢測;隨機(jī)故障演習(xí)(服務(wù)、機(jī)器、組件)。事中做異常報案(性能、業(yè)務(wù)指標(biāo)、可用性);快速的故障定位(單機(jī)故障、集群故障、IDC故障、組件異常、服務(wù)異常);故障前后的系統(tǒng)變更搜集。事后重點(diǎn)做系統(tǒng)回滾;擴(kuò)容、限流、熔斷、降級;核裝備兜底。
單IDC的快速布署&容災(zāi)
單IDC故障以后,入口服務(wù)做到故障辨識,手動流量切換;單IDC的快速擴(kuò)容,數(shù)據(jù)提早同步,服務(wù)提早布署,Ready然后打開入口流量;要求所有做數(shù)據(jù)同步、流量分發(fā)的服務(wù)外賣配送系統(tǒng),都具備手動故障監(jiān)測、故障服務(wù)手動切除;根據(jù)IDC為單位擴(kuò)縮容的能力。
多中心嘗試
美團(tuán)IDC以分區(qū)為單位,存在資源滿排,分區(qū)未能擴(kuò)容。美團(tuán)的方案是多個IDC組成虛擬中心,以中心為分區(qū)的單位;服務(wù)無差異的布署在中心內(nèi);中心容量不夠,直接降低新的IDC來擴(kuò)容容量。
單元化嘗試
相比多中心來說,單元化是進(jìn)行分區(qū)容災(zāi)和擴(kuò)容的更優(yōu)方案。關(guān)于流量路由,美團(tuán)主要是依據(jù)業(yè)務(wù)特性,采用區(qū)域或城市進(jìn)行路由。數(shù)據(jù)同步上,異地會出現(xiàn)延后狀況。SET容災(zāi)上要保證同本地或異地SET出現(xiàn)問題時,可以快速把SET切換到其他SET上來承當(dāng)流量。
智能貨運(yùn)的核心技術(shù)能力和平臺沉淀
機(jī)器學(xué)習(xí)平臺,是一站式線下到線上的模型訓(xùn)練和算法應(yīng)用平臺。之所以建立這個平臺,目的是要解決算法應(yīng)用場景多,重復(fù)造輪子的矛盾問題,以及線上、線下數(shù)據(jù)質(zhì)量不一致。假如流程不明晰不連貫,會出現(xiàn)迭代效率低,特點(diǎn)、模型的應(yīng)用上線布署出現(xiàn)數(shù)據(jù)質(zhì)量等障礙問題。
是一個以穩(wěn)定性保障為目標(biāo)的智能化業(yè)務(wù)運(yùn)維AIOps平臺。主要用于處理系統(tǒng)故障時報案源好多,會有大量的重復(fù)報案,有效信息很容易被吞沒等各類問題。據(jù)悉,過往小規(guī)模分布式集群的運(yùn)維故障主要靠人和經(jīng)驗(yàn)來剖析和定位,效率低下,處理速率慢,每次故障處理得到的預(yù)期不穩(wěn)定,在有效性和及時性方面未能保證。所以須要AIOps平臺來解決那些問題。
未來的挑戰(zhàn)
經(jīng)過復(fù)盤和以后,我們發(fā)覺未來的挑戰(zhàn)很大,微服務(wù)不再“微”了,業(yè)務(wù)復(fù)雜度提高以后,服務(wù)都會顯得膨脹。其次,網(wǎng)狀結(jié)構(gòu)的服務(wù)集群,任何輕微的延后,都可能造成的網(wǎng)路放大效應(yīng)。另外復(fù)雜的服務(wù)拓?fù)洌趺醋龅焦收系目焖俣ㄎ缓吞幚恚@也是AIOps須要重點(diǎn)解決的困局。最后,就是單元化以后,從集群為單位的運(yùn)維到以單元為單位的運(yùn)維,也給美團(tuán)業(yè)務(wù)布署能力帶來很大的挑戰(zhàn)。
作者簡介
宋斌,美團(tuán)資深技術(shù)專家,常年參與分布式系統(tǒng)構(gòu)架、高并發(fā)系統(tǒng)穩(wěn)定性保障相關(guān)工作。目前兼任即時貨運(yùn)團(tuán)隊(duì)后臺技術(shù)負(fù)責(zé)人。2013年加入美團(tuán),參與過美團(tuán)外賣C端、即時貨運(yùn)體系從零搭建。如今率領(lǐng)團(tuán)隊(duì)負(fù)責(zé)調(diào)度、清結(jié)算、LBS、定價等業(yè)務(wù)系統(tǒng)、算法數(shù)據(jù)平臺、穩(wěn)定性保障平臺等技術(shù)平臺的研制和運(yùn)維。近來重點(diǎn)關(guān)注AIOps方向,探求在高并發(fā)、分布式系統(tǒng)構(gòu)架下,怎樣更好的做好系統(tǒng)穩(wěn)定性保障。
==========
免責(zé)聲明:部分文章信息來源于網(wǎng)絡(luò)以及網(wǎng)友投稿,本站只負(fù)責(zé)對文章進(jìn)行整理、排版、編輯,出于傳遞更多信息之目的,并不意味著贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,如本站文章和轉(zhuǎn)稿涉及版權(quán)等問題,請作者在及時聯(lián)系本站,我們會盡快為您處理。
資訊中心
熱門資訊
- 美團(tuán)外賣的抽成規(guī)則 餓了么抽點(diǎn)比例是多少
- 外賣好評30字有哪些 常見的外賣評語大全
- 木屋燒烤價目表一覽 微信外賣訂餐系統(tǒng)推薦
- 海底撈排隊(duì)取號微信是多少 海底撈是怎么預(yù)約排隊(duì)
- 如何通過微信掃碼支付找到支付人微信號?看這里!
- 胡桃里消費(fèi)人均大概是多少錢 二維碼掃碼點(diǎn)餐系統(tǒng)哪個好用
- 美團(tuán)外賣怎么點(diǎn)兩份?步驟及注意事項(xiàng)!!
- 肯德基優(yōu)惠券怎么獲得 肯德基微信外賣怎么點(diǎn)
- 連鎖收銀系統(tǒng)對連鎖門店運(yùn)營會有怎么樣的影響?
- 微信公眾號點(diǎn)餐是怎么實(shí)現(xiàn) 餐飲商家怎么制作外賣訂餐系統(tǒng)