分享雙11實(shí)時(shí)物流訂單的優(yōu)秀實(shí)踐
隨著雙11的開啟,物流業(yè)也迎來了年度大考。2021年雙11期間,遞四方作為物流倉儲(chǔ)服務(wù)方,布局倉庫和分揀點(diǎn)超40+個(gè),50w+平米作業(yè)場(chǎng)地,單日訂單峰值達(dá)千萬級(jí)別,海量購物訂單由遞四方配送到家,消費(fèi)者由尾款人秒變收貨人。
一、業(yè)務(wù)介紹
遞四方成立于2004年,創(chuàng)業(yè)在深圳,是國內(nèi)最早的國際物流和全球倉儲(chǔ)服務(wù)物流供應(yīng)鏈服務(wù)商,主要為從事跨境電商的客戶、平臺(tái)以及普通用戶提供倉儲(chǔ)物流服務(wù),以GPN(直發(fā)訂單)和GFN(海外倉儲(chǔ))兩張網(wǎng)絡(luò)為客戶提供更好的全球跨境電商優(yōu)質(zhì)生態(tài)環(huán)境,致力于幫助中國企業(yè)走向全球,目前在全球超過100+家分支機(jī)構(gòu),服務(wù)全球約100萬家跨境電商商戶與超過2億跨境電商終端用戶。
二、業(yè)務(wù)挑戰(zhàn)
為了應(yīng)對(duì)雙11單日峰值達(dá)到千萬級(jí)別訂單的狀況,遞四方運(yùn)用大數(shù)據(jù)合理優(yōu)化資源,提前做好全球倉儲(chǔ)人力、物力、運(yùn)力配置,保障倉儲(chǔ)各流程高效、有序進(jìn)行。從今年10月中下旬開始,上海轉(zhuǎn)運(yùn)中心和東莞轉(zhuǎn)運(yùn)中心相繼啟動(dòng)。截至目前,遞四方陸續(xù)在華東、華北、華南新建、擴(kuò)建超級(jí)樞紐、攬收倉至40余個(gè),繼續(xù)加大在全國的布局;在國內(nèi)擁有40個(gè)+分公司/分撥服務(wù)網(wǎng)點(diǎn),全國50萬+平方米辦公/作業(yè)場(chǎng)地面積。
在業(yè)務(wù)方面,遞四方借助自主研發(fā)分揀系統(tǒng)和云技術(shù),快速進(jìn)行條碼識(shí)別,按指令分揀,實(shí)現(xiàn)稱重分揀一體化全面覆蓋,保證每一票貨物都可自動(dòng)識(shí)別、精準(zhǔn)分揀出庫。稱重及分揀,已從傳統(tǒng)人工模式升級(jí)為100%人工管控模式。此外,遞四方信息科技的黑科技硬件——紅光在此次“雙11”首次亮相。在分揀效率不變的情況下,遞四方信息科技用光幕等技術(shù)手段,對(duì)分揀機(jī)落格包裹進(jìn)行核驗(yàn),將庫內(nèi)錯(cuò)分率降低至萬分之三,達(dá)到業(yè)界領(lǐng)先水平。尤其針對(duì)倉庫環(huán)節(jié),不斷加大對(duì)庫內(nèi)的自動(dòng)化、數(shù)字化、智能化建設(shè),結(jié)合大數(shù)據(jù)、AI算法、云計(jì)算等手段進(jìn)行系統(tǒng)的研發(fā)升級(jí),引進(jìn)高科技設(shè)備來提升產(chǎn)能、保障時(shí)效。
隨著雙11期間訂單量劇增、應(yīng)用的復(fù)雜度提升,我們的業(yè)務(wù)系統(tǒng)也經(jīng)受著嚴(yán)峻的挑戰(zhàn),原來的實(shí)時(shí)數(shù)倉架構(gòu)已經(jīng)不能滿足業(yè)務(wù)當(dāng)前的需求。在尋找新的解決方案時(shí),我們對(duì)比了業(yè)界常用的大數(shù)據(jù)實(shí)時(shí)查詢數(shù)據(jù)庫,比如HBase、ClickHouse、Druid,但在千億級(jí)別數(shù)據(jù)多表連接查詢時(shí)都遇到了瓶頸,無法滿足業(yè)務(wù)實(shí)時(shí)性、服務(wù)穩(wěn)定性的要求。
實(shí)時(shí)數(shù)倉在遞四方的應(yīng)用場(chǎng)景應(yīng)用主要有以下幾個(gè)方面:攬收、庫內(nèi)操作、倉間調(diào)撥、清關(guān)交郵預(yù)警監(jiān)控,這里面包含著單票運(yùn)轉(zhuǎn)操作的每一個(gè)步驟。這些場(chǎng)景都需要做到實(shí)時(shí)監(jiān)控,并且實(shí)時(shí)做出決策來提高物流的的整體時(shí)效。尤其是在雙十一高峰期的情況下,如果人力或資源分配不足,很容易使某一環(huán)節(jié)堵塞,進(jìn)而影響整體物流的時(shí)效。在技術(shù)的層面,我們有很多個(gè)業(yè)務(wù)系統(tǒng),這些系統(tǒng)之間既有一致性也有獨(dú)立性,一個(gè)復(fù)雜指標(biāo)涉及到多個(gè)系統(tǒng)多張表,因此我們實(shí)時(shí)數(shù)倉對(duì)表連接查詢能力非常強(qiáng),而且對(duì)數(shù)據(jù)的更新插入速度也有著很高的要求。
今年雙11,我們對(duì)支撐業(yè)務(wù)的實(shí)時(shí)數(shù)倉系統(tǒng)進(jìn)行了升級(jí),通過新一代基于flink+hologres的實(shí)時(shí)數(shù)倉系統(tǒng),在物流訂單量相較于去年增加多倍的情況下,仍然能夠?qū)崟r(shí)監(jiān)控每一票訂單的物流情況、每一個(gè)倉庫的作業(yè)情況,并且實(shí)時(shí)數(shù)倉整體成本下降50%,真正做到了“多、快、好、省”。
下面我們將會(huì)具體介紹遞四方實(shí)時(shí)數(shù)倉的升級(jí)演進(jìn)之路。
三、遞四方實(shí)時(shí)數(shù)倉之路
1.實(shí)時(shí)數(shù)倉1.0
在剛開始做第一版實(shí)時(shí)數(shù)倉的時(shí)候,時(shí)間窗口比較緊,我們要把有限的精力放到數(shù)據(jù)建模以及業(yè)務(wù)開發(fā)中,所以在對(duì)比了數(shù)據(jù)庫的吞吐性以及處理能力后,我們選擇了ADB。ADB在數(shù)量大很大的情況下,查詢速度、插入速度都很快,而且支持DTS、OTTER等數(shù)據(jù)同步接入,同步性能很好。
數(shù)據(jù)源是阿里云的PolarDB、MySQL、RDS等數(shù)據(jù)庫,采用阿里云的DataWork數(shù)據(jù)同步,把增量數(shù)據(jù)實(shí)時(shí)同步到ADB中,然后在ADB中做數(shù)據(jù)實(shí)時(shí)的計(jì)算,數(shù)據(jù)的任務(wù)調(diào)度在DataWork中完成。
但是當(dāng)時(shí)遇到了一個(gè)非常大的問題,就是ADB的并發(fā)有限,計(jì)算任務(wù)耗費(fèi)了大量的資源。在各種大屏、實(shí)時(shí)報(bào)表拉取數(shù)據(jù)的時(shí)候,高并發(fā)的情況下,ADB的延遲很高,給我們實(shí)時(shí)服務(wù)穩(wěn)定性帶來了非常大的挑戰(zhàn)。
2.實(shí)時(shí)數(shù)倉2.0
經(jīng)歷了第一個(gè)版本的實(shí)時(shí)數(shù)倉后,我們總結(jié)了實(shí)時(shí)數(shù)倉的兩個(gè)重要特性,一是實(shí)時(shí),二是服務(wù)的穩(wěn)定性。
第一個(gè)版本的實(shí)時(shí)數(shù)倉不能很好地滿足穩(wěn)定性,我們決定對(duì)新的實(shí)時(shí)數(shù)倉進(jìn)行一個(gè)深入的研究和探索,在阿里云上看到了很多關(guān)于Hologres的應(yīng)用,其性能表現(xiàn)極其出色,帶來了不錯(cuò)的效果。在對(duì)比了業(yè)界不同的實(shí)時(shí)數(shù)倉架構(gòu)后,我們最終選擇了Flink+Hologres組合作為實(shí)時(shí)數(shù)倉。
這里一共有2條路徑:
- 第一條路徑是:通過DTS把Binlog數(shù)據(jù)同步到DataHub,然后使用Flink從DataHub中消費(fèi)數(shù)據(jù),把計(jì)算結(jié)果存儲(chǔ)在Hologres中,這條路徑主要是用于計(jì)算一些訪問頻率高且數(shù)據(jù)量大的數(shù)據(jù),比如待攬收單量、入庫單量、待完成單量等。
- 第二條路徑是:業(yè)務(wù)系統(tǒng)的Binlog數(shù)據(jù)通過DataWorks同步到Hologres中。Hologres中分了3層,ODS層用于存放原始數(shù)據(jù),直接加載原始日志、數(shù)據(jù),數(shù)據(jù)保持原貌不做處理。一般情況下,以增量的方式從業(yè)務(wù)系統(tǒng)導(dǎo)入到ODS層,數(shù)據(jù)模型和粒度都與業(yè)務(wù)系統(tǒng)保持一致。DWD層數(shù)據(jù)明細(xì)層,對(duì)ODS層數(shù)據(jù)進(jìn)行清洗。DWS為匯總層,主要存放寬表。這里主要是考慮到粒度的不一樣,在Hologres中多表連接查詢能夠發(fā)揮其最大的作用。整個(gè)架構(gòu)的任務(wù)調(diào)度依賴于DataWorks。
本次采用的批流一體即席計(jì)算查詢混合模式,既發(fā)揮了Flink流計(jì)算的能力,也充分利用了Hologres強(qiáng)大的連表查詢能力?;ヂ?lián)網(wǎng)普遍運(yùn)用的HBase、ClickHouse、Druid等作為實(shí)時(shí)查詢數(shù)據(jù)庫,我們的業(yè)務(wù)復(fù)雜度是互聯(lián)網(wǎng)的若干倍,這些實(shí)時(shí)數(shù)據(jù)庫并不能完全滿足我們的需求,架構(gòu)互有優(yōu)劣,但我們的架構(gòu)是未來五六年內(nèi)業(yè)務(wù)高速增長(zhǎng)的最佳選擇。
四、遞四方與實(shí)時(shí)數(shù)倉Hologres
1.為什么選擇Hologres
那么為什么會(huì)選擇Hologres呢?通過調(diào)研發(fā)現(xiàn)它有幾個(gè)特點(diǎn),比較適合實(shí)際情況。
- 第一是Hologres的實(shí)時(shí)能力,滿足目前遞四方的實(shí)時(shí)數(shù)倉需求,支持百億級(jí)表與億級(jí)表之間的JOIN,秒級(jí)查詢響應(yīng),還支持實(shí)時(shí)寫入、批量數(shù)據(jù)導(dǎo)入,擁有超高導(dǎo)入性能,且并發(fā)能力極強(qiáng)。
- 第二是Hologres 采用存儲(chǔ)計(jì)算分離架構(gòu),數(shù)據(jù)存儲(chǔ)在阿里云分布式文件系統(tǒng)pangu中(類比開源HDFS),方便按需單獨(dú)擴(kuò)展計(jì)算或者存儲(chǔ)。對(duì)快速行業(yè)來說,大促和日常所需要資源不一樣,能夠快速擴(kuò)縮容,滿足業(yè)務(wù)的動(dòng)態(tài)需求。同時(shí)Hologres支持異構(gòu)數(shù)據(jù)源交互分析以及離線數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)的聯(lián)邦查詢,Hologres已經(jīng)和MaxCompute無縫打通,能夠直接在Hologres中加速查詢MaxCompute離線表。
- 第三是維護(hù)成本低、運(yùn)行穩(wěn)定,Hologres作為實(shí)時(shí)數(shù)倉存儲(chǔ)成本大約是ADB的1/3。資源靈活性高,可以像MaxCompute一樣靈活的升降配置,與阿里云大數(shù)據(jù)組件兼容性高,能降低運(yùn)維成本和提高研發(fā)效能,不會(huì)對(duì)技術(shù)架構(gòu)帶來很大負(fù)擔(dān)。
2.Hologres應(yīng)用場(chǎng)景
在面向分析OLAP系統(tǒng)里面,Hologres承擔(dān)了實(shí)時(shí)和離線數(shù)據(jù)的查詢,由于Hologres既支持高并發(fā)寫入,又能夠滿足及時(shí)查詢,同時(shí)還能夠支持OLAP分析,在我們的不同粒度的表進(jìn)行連接的時(shí)候,能夠充分發(fā)揮其優(yōu)勢(shì)。下面列舉2個(gè)不同的場(chǎng)景對(duì)其做一個(gè)詳細(xì)的說明。
場(chǎng)景一:庫內(nèi)操作場(chǎng)景
實(shí)時(shí)的數(shù)據(jù)從Binlog解析到ODS層,同時(shí)微批任務(wù)將分鐘級(jí)別(范圍可調(diào))的統(tǒng)計(jì)數(shù)據(jù)計(jì)算到DWS寬表,同時(shí)跟離線的數(shù)據(jù)進(jìn)行插入更新,就可以得到實(shí)時(shí)的全量數(shù)據(jù)表,調(diào)度采取DataWorks的調(diào)度,每5分鐘調(diào)度1次。
場(chǎng)景2:倉間調(diào)撥場(chǎng)景
對(duì)于一些數(shù)據(jù)量小的表,依賴于Hologres強(qiáng)大的Join能力,通過視圖來構(gòu)建DWS中間層,如下圖所示:
DWD是對(duì)ODS層過濾的視圖,DWS層是DWD層聚合層的寬表,每次查詢DWS層的時(shí)候,就相當(dāng)于所有表重新查詢了一次。這種查詢語句是非常復(fù)雜的,對(duì)于關(guān)系型數(shù)據(jù)庫來說,可能有性能瓶頸會(huì)非常緩慢。但是對(duì)于Hologres來說,毫秒級(jí)別查詢完成毫無壓力,做到了實(shí)時(shí)響應(yīng),并且節(jié)省了調(diào)度資源,同時(shí)也提升了查詢的靈活性。
3.Hologres目前的不足
在使用Hologres期間也發(fā)現(xiàn)的一些不滿足實(shí)際需求的地方:一是非空列不能建立索引,多個(gè)億級(jí)別表連接在沒有索引的情況下,查詢速度下降。二是Hologres兼容Postgre生態(tài),但支持的函數(shù)不多,在開發(fā)上與MaxCompute相比有一定的難度。
五、業(yè)務(wù)價(jià)值
整個(gè)雙11期間,遞四方通過升級(jí)實(shí)時(shí)數(shù)倉技術(shù),基于Flink+Hologres搭建的實(shí)時(shí)數(shù)倉支撐了實(shí)時(shí)大屏的高頻刷新訪問,實(shí)時(shí)監(jiān)控物流動(dòng)態(tài),促進(jìn)了業(yè)務(wù)高效運(yùn)行,讓消費(fèi)者的快遞更快到家。整個(gè)架構(gòu)升級(jí)給業(yè)務(wù)帶來的價(jià)值有以下幾個(gè)方面:
- 穩(wěn)定:基于Hologres持續(xù)高穩(wěn)定的輸出,整體雙11期間不論是實(shí)時(shí)數(shù)據(jù)寫入、還是數(shù)據(jù)的讀取都表現(xiàn)出了極強(qiáng)的穩(wěn)定性。整個(gè)雙11期間,真正做到了0故障率。
- 實(shí)時(shí):實(shí)時(shí)的攬收、庫內(nèi)操作、中轉(zhuǎn)調(diào)撥等實(shí)時(shí)大屏,對(duì)我們的運(yùn)營提供了非常強(qiáng)有力的實(shí)時(shí)數(shù)據(jù)支撐,整體時(shí)效比去年提高了不少,給用戶帶來良好的物流體驗(yàn),提高了公司的服務(wù)水平。
- 云原生:除了上面兩個(gè)核心價(jià)值之外,由于雙11期間是流量高峰期,比日常流量高出上千倍,通過Hologres可以實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)縮容,滿足我們對(duì)資源的不同需求,從而也降低了運(yùn)維成本。
這是遞四方參與的第7個(gè)雙11狂歡節(jié),遞四方在這次的物流大考中交出了滿意的答卷。隨著業(yè)務(wù)迅猛增長(zhǎng),遞四方也在不斷演進(jìn)背后的實(shí)時(shí)數(shù)倉技術(shù)來支撐更豐富的倉儲(chǔ)物流場(chǎng)景,讓物流從“手工化”逐漸轉(zhuǎn)變?yōu)?ldquo;智能化”。