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