溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

發(fā)布時(shí)間:2021-10-12 10:46:20 來源:億速云 閱讀:175 作者:柒染 欄目:云計(jì)算

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

 背景

美團(tuán)外賣已經(jīng)發(fā)展了五年,即時(shí)物流探索也經(jīng)歷了 3 年多的時(shí)間,業(yè)務(wù)從零孵化到初具規(guī)模,在整個(gè)過程中積累了一些分布式高并發(fā)系統(tǒng)的建設(shè)經(jīng)驗(yàn)。最主要的收獲包括兩點(diǎn):

即時(shí)物流業(yè)務(wù)對(duì)故障和高延遲的容忍度極低,在業(yè)務(wù)復(fù)雜度提升的同時(shí)也要求系統(tǒng)具備分布式、可擴(kuò)展、可容災(zāi)的能力。即時(shí)物流系統(tǒng)階段性的逐步實(shí)施分布式系統(tǒng)的架構(gòu)升級(jí),最終解決了系統(tǒng)宕機(jī)的風(fēng)險(xiǎn)。圍繞成本、效率、體驗(yàn)核心三要素,即時(shí)物流體系大量結(jié)合 AI 技術(shù),從定價(jià)、ETA、調(diào)度、運(yùn)力規(guī)劃、運(yùn)力干預(yù)、補(bǔ)貼、核算、語音交互、LBS 挖掘、業(yè)務(wù)運(yùn)維、指標(biāo)監(jiān)控等方面,業(yè)務(wù)突破結(jié)合架構(gòu)升級(jí),達(dá)到促規(guī)模、保體驗(yàn)、降成本的效果。

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

主要介紹在美團(tuán)即時(shí)物流分布式系統(tǒng)架構(gòu)逐層演變的進(jìn)展中,遇到的技術(shù)障礙和挑戰(zhàn):

訂單、騎手規(guī)模大,供需匹配過程的超大規(guī)模計(jì)算問題。遇到節(jié)假日或者惡劣天氣,訂單聚集效應(yīng),流量高峰是平常的十幾倍。物流履約是線上連接線下的關(guān)鍵環(huán)節(jié),故障容忍度極低,不能宕機(jī),不能丟單,可用性要求極高。數(shù)據(jù)實(shí)時(shí)性、準(zhǔn)確性要求高,對(duì)延遲、異常非常敏感。

美團(tuán)即時(shí)物流架構(gòu)

美團(tuán)即時(shí)物流配送平臺(tái)主要圍繞三件事展開:一是面向用戶提供履約的 SLA,包括計(jì)算送達(dá)時(shí)間 ETA、配送費(fèi)定價(jià)等;二是在多目標(biāo)(成本、效率、體驗(yàn))優(yōu)化的背景下,匹配最合適的騎手;三是提供騎手完整履約過程中的輔助決策,包括智能語音、路徑推薦、到店提醒等。

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

在一系列服務(wù)背后,是美團(tuán)強(qiáng)大的技術(shù)體系的支持,并由此沉淀出的配送業(yè)務(wù)架構(gòu)體系,基于架構(gòu)構(gòu)建的平臺(tái)、算法、系統(tǒng)和服務(wù)。龐大的物流系統(tǒng)背后離不開分布式系統(tǒng)架構(gòu)的支撐,而且這個(gè)架構(gòu)更要保證高可用和高并發(fā)。

分布式架構(gòu),是相對(duì)于集中式架構(gòu)而言的一種架構(gòu)體系。分布式架構(gòu)適用 CAP 理論(Consistency 一致性,Availability 可用性,Partition Tolerance 分區(qū)容忍性)。在分布式架構(gòu)中,一個(gè)服務(wù)部署在多個(gè)對(duì)等節(jié)點(diǎn)中,節(jié)點(diǎn)之間通過網(wǎng)絡(luò)進(jìn)行通信,多個(gè)節(jié)點(diǎn)共同組成服務(wù)集群來提供高可用、一致性的服務(wù)。

早期,美團(tuán)按照業(yè)務(wù)領(lǐng)域劃分成多個(gè)垂直服務(wù)架構(gòu);隨著業(yè)務(wù)的發(fā)展,從可用性的角度考慮做了分層服務(wù)架構(gòu)。后來,業(yè)務(wù)發(fā)展越發(fā)復(fù)雜,從運(yùn)維、質(zhì)量等多個(gè)角度考量后,逐步演進(jìn)到微服務(wù)架構(gòu)。這里主要遵循了兩個(gè)原則:不宜過早的進(jìn)入到微服務(wù)架構(gòu)的設(shè)計(jì)中,好的架構(gòu)是演進(jìn)出來的不是提前設(shè)計(jì)出來的。

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

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

上圖是比較典型的美團(tuán)技術(shù)體系下的分布式系統(tǒng)結(jié)構(gòu):依托了美團(tuán)公共組件和服務(wù),完成了分區(qū)擴(kuò)容、容災(zāi)和監(jiān)控的能力。前端流量會(huì)通過 HLB 來分發(fā)和負(fù)載均衡;在分區(qū)內(nèi),服務(wù)與服務(wù)會(huì)通過 OCTO 進(jìn)行通信,提供服務(wù)注冊(cè)、自動(dòng)發(fā)現(xiàn)、負(fù)載均衡、容錯(cuò)、灰度發(fā)布等等服務(wù)。當(dāng)然也可以通過消息隊(duì)列進(jìn)行通信,例如 Kafka、RabbitMQ。在存儲(chǔ)層使用 Zebra 來訪問分布式數(shù)據(jù)庫進(jìn)行讀寫操作。利用 CAT(美團(tuán)開源的分布式監(jiān)控系統(tǒng))進(jìn)行分布式業(yè)務(wù)及系統(tǒng)日志的采集、上報(bào)和監(jiān)控。分布式緩存使用 Squirrel+Cellar 的組合。分布式任務(wù)調(diào)度則是通過 Crane。

在實(shí)踐過程還要解決幾個(gè)問題,比較典型的是集群的擴(kuò)展性,有狀態(tài)的集群可擴(kuò)展性相對(duì)較差,無法快速擴(kuò)容機(jī)器,無法緩解流量壓力。同時(shí),也會(huì)出現(xiàn)節(jié)點(diǎn)熱點(diǎn)的問題,包括資源不均勻、CPU 使用不均勻等等。

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

首先,配送后臺(tái)技術(shù)團(tuán)隊(duì)通過架構(gòu)升級(jí),將有狀態(tài)節(jié)點(diǎn)變成無狀態(tài)節(jié)點(diǎn),通過并行計(jì)算的能力,讓小的業(yè)務(wù)節(jié)點(diǎn)去分擔(dān)計(jì)算壓力,以此實(shí)現(xiàn)快速擴(kuò)容。

第二是要解決一致性的問題,對(duì)于既要寫 DB 也要寫緩存的場(chǎng)景,業(yè)務(wù)寫緩存無法保障數(shù)據(jù)一致性,美團(tuán)內(nèi)部主要通過 Databus 來解決,Databus 是一個(gè)高可用、低延時(shí)、高并發(fā)、保證數(shù)據(jù)一致性的數(shù)據(jù)庫變更實(shí)時(shí)傳輸系統(tǒng)。通過 Databus 上游可以監(jiān)控業(yè)務(wù) Binlog 變更,通過管道將變更信息傳遞給 ES 和其他 DB,或者是其他 KV 系統(tǒng),利用 Databus 的高可用特性來保證數(shù)據(jù)最終是可以同步到其他系統(tǒng)中。

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

第三是我們一直在花精力解決的事情,就是保障集群高可用,主要從三個(gè)方面來入手,事前較多的是做全鏈路壓測(cè)評(píng),估峰值容量;周期性的集群健康性檢查;隨機(jī)故障演練(服務(wù)、機(jī)器、組件)。事中做異常報(bào)警(性能、業(yè)務(wù)指標(biāo)、可用性);快速的故障定位(單機(jī)故障、集群故障、IDC 故障、組件異常、服務(wù)異常);故障前后的系統(tǒng)變更收集。事后重點(diǎn)做系統(tǒng)回滾;擴(kuò)容、限流、熔斷、降級(jí);核武器兜底。

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

單 IDC 的快速部署 & 容災(zāi)

單 IDC 故障之后,入口服務(wù)做到故障識(shí)別,自動(dòng)流量切換;單 IDC 的快速擴(kuò)容,數(shù)據(jù)提前同步,服務(wù)提前部署,Ready 之后打開入口流量;要求所有做數(shù)據(jù)同步、流量分發(fā)的服務(wù),都具備自動(dòng)故障檢測(cè)、故障服務(wù)自動(dòng)摘除;按照 IDC 為單位擴(kuò)縮容的能力。

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

多中心嘗試

美團(tuán) IDC 以分區(qū)為單位,存在資源滿排,分區(qū)無法擴(kuò)容。美團(tuán)的方案是多個(gè) IDC 組成虛擬中心,以中心為分區(qū)的單位;服務(wù)無差別的部署在中心內(nèi);中心容量不夠,直接增加新的 IDC 來擴(kuò)容容量。

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

單元化嘗試

相比多中心來說,單元化是進(jìn)行分區(qū)容災(zāi)和擴(kuò)容的更優(yōu)方案。關(guān)于流量路由,美團(tuán)主要是根據(jù)業(yè)務(wù)特點(diǎn),采用區(qū)域或城市進(jìn)行路由。數(shù)據(jù)同步上,異地會(huì)出現(xiàn)延遲狀況。SET 容災(zāi)上要保證同本地或異地 SET 出現(xiàn)問題時(shí),可以快速把 SET 切換到其他 SET 上來承擔(dān)流量。

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

智能物流的核心技術(shù)能力和平臺(tái)沉淀

機(jī)器學(xué)習(xí)平臺(tái),是一站式線下到線上的模型訓(xùn)練和算法應(yīng)用平臺(tái)。之所以構(gòu)建這個(gè)平臺(tái),目的是要解決算法應(yīng)用場(chǎng)景多,重復(fù)造輪子的矛盾問題,以及線上、線下數(shù)據(jù)質(zhì)量不一致。如果流程不明確不連貫,會(huì)出現(xiàn)迭代效率低,特征、模型的應(yīng)用上線部署出現(xiàn)數(shù)據(jù)質(zhì)量等障礙問題。

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

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

如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)

上述就是小編為大家分享的如何利用進(jìn)行JARVIS美團(tuán)即時(shí)物流的分布式系統(tǒng)架構(gòu)設(shè)計(jì)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI