挑戰
菜鳥物流作為承接全國最大流量的快遞運輸平台之一, 在重大購物狂歡節日中扮演了重要角色。近年來, 盡管菜鳥 物流的倉配系統進行了多業務端的優化, 但倉配業務鍊路長、節點多、分析次元複雜的業務特點, 使其在開發倉配 實時資料的過程中仍面臨了不少挑戰。如何保障其倉配實時資料的絲滑順暢, 建立帶有“倉配特色”的實時資料 版圖是菜鳥物流目前亟待解決的關鍵問題。
解決方案
實時資料的絲滑順暢離不開各業務系統的密切配合, 為此菜鳥物流從全局設計上制定了一套端到端的整體解決方 案。在資料模型、資料服務、資料應用、資料保障等多方面進行了優化。其中,與實時資料息息相關的資料計算, 菜鳥物流選擇了一站式、高性能實時大資料處理平台阿裡雲實時計算作為其主要的實時計算引擎。實時計算強大 的 SQL 功能, 提供 SQL 語義的流式資料分析能力(Flink SQL), 不僅支援兩條資料流 join ,并且可以在一段代碼 中實作多條資料流 join 操作;其子查詢功能、視圖功能、維表 join 功能等大幅降低了實時計算流資料分析的門 檻。實時計算強大的流計算性能,如 MiniBatch 優化、維表 cache&async、ignore delete、RocksDB 進行狀态管 理以及可以靈活配置資源參數等,經過菜鳥物流的多次壓測結果顯示阿裡雲實時計算的資料處理速度遠超預期。
另外,簡單描述兩個阿裡雲實時計算非常優秀的特性:高效的狀态管理機制, 實時計算過程中(如 group-by、join 等)都會産生大量的 state , 傳統的流計算引擎基本都是選擇外部存儲(如 HBase)作為 state 存儲方案,實時計 算的選擇是單機性能十分優異的 Gemini , 這個方案大大縮短了 IO latency , 進而獲得倍數的性能提升。強大的 Retraction 機制, 資料庫的同一記錄不斷變化,會往 TT 中流入多條消息, 如果依賴這個 TT 訂閱直接進 行一些彙總操作, 可能得到的記錄是不對的。舉例, 一筆訂單原計劃配送公司是 A , 後來計劃配送公司改為 B , 那麼 直接針對配送公司進行彙總可能得到的結果是 A 和 B 各一筆。此時, 借助實時計算的 Retraction 機制即可處理類似 的“變 Key ”場景, 可以先使用 last 函數作特殊處理, 然後再做聚合, 這樣能確定最終彙總資料的準确性。
業務優勢
菜鳥物流從全局設計、資料模型、資料計算、資料服務、資料應用、資料保障等各方面進行業務系統的整體優化, 搭建了菜鳥物流的倉配實時鍊路體系, 完善了帶有”倉配特色”的實時資料版圖。在資料計算上, 2018 年雙 11 期 間經過實時鍊路壓測的檢驗實作了 100% 的資料可用性;在資料服務上,能夠針對不同應用場景提供相應服務; 在資料保障上建設了倉配實時鍊路的主備方案、資料服務的主備雙活方案以及多條實時鍊路壓測“特色”方案。
客戶評價
我們經過調研發現阿裡雲實時計算強大的 Flink SQL 以及強大的流計算性能對菜鳥物流極具吸引力, 簡直是理 想的實時計算引擎。在實操中我們還用到了并發調優、MinBatch 調整、寫 TT 使用 hashFields 保序、特殊場景寫 ads ignore delete 等不少非常實用的開發和優化技能;當然,我們還挖掘出了實時計算非常驚豔的小功能, 如 First&Last、Retraction 機制、小而美的 nullValues 參數以及高效的狀态管理機制等。
實時計算 Flink 版産品交流群

阿裡雲實時計算Flink - 解決方案: https://developer.aliyun.com/article/765097 阿裡雲實時計算Flink - 場景案例: https://ververica.cn/corporate-practice 阿裡雲實時計算Flink - 産品詳情頁: https://www.aliyun.com/product/bigdata/product/sc