跨境物流鏈路怎麼做?菜鳥工程師打造了全球通關“神器”

阿里技術_發表於2018-12-03

640?wx_fmt=jpeg

阿里妹導讀:2018天貓雙11物流訂單量創新高,突破10億件,這是一次史無前例的物流洪峰。天貓雙11十年來,見證了物流業從手寫地址、人工分揀,到電子面單、機器人分揀。無論是物流園區、幹線運輸,還是秒級通關、末端配送,都通過技術高效連線,智慧物流骨幹網正在加快實現行業數字化、智慧化升級。


因此,阿里技術推出《菜鳥智慧新物流》專題,邀請菜鳥技術人,為你揭祕物流核心技術。今天第一期,讓我們一起走近神祕的“神鯨網路全球通關平臺”,全方位瞭解新技術時代下的跨境智慧關務


前言


“跨境”,這是在當今行業一個非常 fashion的名詞。從2014年起,海關總署陸續頒發多項跨境貿易政策,給跨境進出口業務帶來了諸多紅利。2014年也被很多業內人士稱為跨境進口電商元年。也許你會聽到這樣一段對話:


A:Hey,兄dei,你是做什麼的?2_02.png

B:哦,我搞跨境物流的。smiley_0.png

A:是嘛,跨境這幾年很火啊!政府在大力扶持這一塊,我看很多公司都在做一塊,有前途!smiley_52.png

B:哪有?道路坎坷,很艱辛的,不過累並快樂著,我也挺看好這塊的!2_11.png


在整個跨境物流鏈路中,會涉及到多個角色:倉、幹線、關務、快遞等。關務是跨境物流鏈路最核心的環節,需要協同海關,國檢等政府部門完成整個進出口國的通關操作。這塊不僅業務複雜,而且存在諸多不確定性。為此,我們搭建了“神鯨網路全球通關平臺”。旨在對接海關,協同CP(cainiao partner),從線下到線上,以全球化、資料化、智慧化為方向,以快速、輕量、多型為核心目標,為跨境電商客戶提供全球一體化的通關解決方案!


痛點和挑戰


如下是整個通關全鏈路業務流程,包含資質備案、風控、出入區、跨境通關、稅匯等核心領域。整個鏈路互動節點繁多,不同國家,甚至不同監管區在申報模式,互動方式,通關能力上都存在很大差別,另外由於申報鏈路冗長,任何一個節點出現抖動都有可能導致整個通關發生異常,進而導致申報時效拖長,為保障使用者能夠正常通關,我們往往需要投入更多的成本去解決申報鏈路過程發生的種種問題。所以,如何有效使用海關通關能力,給到跨境商戶穩定的、高效的、統一的一站式通關解決方案?這是我們需要攻克的核心難題。


640?wx_fmt=png


應對策略


通關異常繁多,申報時效冗長,大促成本飆高是大部分跨境通關企業碰到的問題。如何去異常,打時效,降成本,保障通關絲般順滑?基於此,在神鯨網路通關平臺中,我們做了諸多舉措,有一體化監控的星宮大盤,陽關道批量申報,政企協同全鏈路摸高壓測以及守護神智慧輔助系統等等。今年的雙十一大促上,因為有這些強有力的後盾,加上海關通關能力再創新高,大家在喝茶+聊天中度過了一個輕鬆愉快的雙十一。今天,我們重點來交流下星宮大盤、批量申報和智慧輔助系統。


星宮大盤,一體化監控


整個通關鏈路長,依賴系統多,如果有一個全鏈路的監控系統進行護衛,不僅可以實時窺視整個鏈路流轉情況,還可以做到異常的實時跟蹤處理。為此,我們搭建了關務資料中心,承載關務所有資料,並依託它構建了整個星宮大盤產品,將業務監控,指標監控,系統監控一體化,真正實現360度無死角主動監控。如下圖(注:下圖中資料非真實資料,僅做示例):


640?wx_fmt=png


★ 資料中心


資料中心涵蓋了整個關務生態的資料,通過實時+離線兩種方式,很好的支撐了實時業務監控和指標監控等核心業務。如下是整個資料中心核心架構,包含訊息接入,指標計算,資料儲存等核心模組。


640?wx_fmt=png


作為一個資料產品,最基本的的訴求就是能保證資料實時性、準確性,那怎麼在大促情況下能夠做到99.99%資料準確性這是資料中心面臨的最大的一個挑戰。


★ 實時性(秒級生效)


業務系統通過訊息埋點的方式記錄各個鏈路節點資料,通過阿里訊息中介軟體訊息非同步推送給資料中心。資料中心擁有一個支援水平擴充套件的龐大的伺服器叢集,具有強大的訊息處理能力,保證訊息的實時消費。


通過快取+非同步儲存的方式提升整體訊息處理能力; 儲存之前先往快取存一份,後面熱點查詢優先從快取獲取資料,提高查詢效率,資料插入如果超時或者失敗立即建立排程任務進行非同步重試插入。


★ 準確性(99.99%)


由於關務業務特殊性,星宮需要保證監控資料的準確性,傳統的方案一般是通過流計算的方式把資料統計出來,這種方案統計和詳情資料是分開的,可能會導致資料統計和真實資料存在誤差的情況,這對於星宮來說是不可接受的。為此,專案組另闢蹊徑採用實時詳情資料聚合的方案,這裡,我們引入了ES中介軟體,阿里中介軟體團隊針對ES做了非常多的優化,具有高效能的聚合能力,支援海量級資料的實時聚合。另外我們在資料結構儲存上面做了多層優化,比如:


  • 熱點查詢條件用int來邏輯對映,欄位儲存底層採用列儲存。

  • 為了加快檢索,儲存樹形結構把目錄載入到快取,猶如資料字典一樣。


另外為了保證資料消費不丟失,在客戶端啟動了多層重試機制,保證資料的最終一致性。今年大促上,資料中心表現出色,雙11當天QPS達到40000+ 平均耗時11ms,正是這種強大的資料消費能力保證了星宮資料實時性,另外億級別資料多維度聚合統計基本上都是秒級返回,真正做到了100%可用。


640?wx_fmt=png


批量申報,獨木橋變陽關道


由於海關各個節點大多采用MQ+FTP的技術架構,檔案數的個數會影響整體通道消費能力。另外總署的56號公告要求四單申報進行加簽操作,隨之帶來的將是驗籤成本的增加。為減輕總署通道壓力,並提升驗籤能力,我們採用了批量申報的策略,簡而言之就是將多個訂單聚合到一起進行申報,一次加簽操作,一次申報動作。如下:


640?wx_fmt=png


批量申報排程模組自研了一個輕量的批量排程框架實現,通過一個任務池彙總所有任務,按照不同業務規則聚合同型別的任務然後進行消費。如下:


640?wx_fmt=png


記得當時該專案剛上線時,還有一個小插曲,壓測下來發現整體效能遠遠達不到要求,這可急壞了整個專案組。任務消費過程大體分為:分頁撈取任務-》鎖定任務-》消費任務。其中撈取任務和鎖定任務過程是通過搶佔分散式鎖的方式來防止併發,避免同一個任務被多個執行緒撈取並消費。正式由於這個分散式鎖的限制以及單庫單表的DB瓶頸,導致整體效能一直上不去。


經過討論,最終我們採用了分散式鎖池+DB雜湊方案。即既然單個分散式鎖無法滿足要求,那麼設計成鎖池好了;既然單庫單表存在瓶頸,那按照業務關鍵字進行雜湊。分散式鎖池我們使用的是redis的Set資料結構+spop和sadd命令實現的,應用啟動時初始化指定個數的鎖放到Set資料結構中,然後通過spop隨機獲取一個模值撈取任務,任務鎖定後再通過sadd返還鎖,插入任務時也是通過鎖個數進行隨機雜湊到多個庫多個表中。通過該機制改造後,整體效能大大提升,資料庫壓力也降低了好幾倍。


這次微小的調整,卻帶來了巨大的效能提升,在今年雙十一大促上,批量申報也是大放異彩,整個通關審單時效大大降低,申報能力相比往年也有質的提升。如下是17年和18年雙十一某一屬地海關的平均審單時效對比,相比17年,今年的平均審單時效非常穩定,基本保持在20分鐘以內,海關上行和下行通道毫無壓力。


640?wx_fmt=png


如下是某海關30分鐘內審單完成率情況,相比往年,今年審單能力有巨大的飛躍,基本上是零堆積,申報速度跟審單速度幾乎持平。


640?wx_fmt=png


智慧輔助系統,關務守護神


今年是關務的智慧化元年,在正向申報鏈路上,我們推出了智慧限流與智慧hold單產品,自適應保護自身與海關係統。在人工成本降低的同時,保證了海關係統的最大吞吐能力。在異常處理上,我們基於規則引擎上線了異常智慧處理系統,通過不斷豐富異常處理規則,系統變得越來越聰明,基本上可以自動處理大部分海關異常。同時,作為關務智慧大腦,還為關務資料中心提供資料分析服務。智慧系統包含產品如下:


640?wx_fmt=png


★ 智慧限流


整個智慧限流的設計不僅支援叢集環境下任意介面秒級與分鐘級精準限流,還能根據介面的RT與失敗率等指標對介面流量進行動態調節。


1.技術架構:


640?wx_fmt=png


  • 智慧限流分三個主要模組:資源監控(對資源的請求量精準統計)、限流策略(請求量達到閾值後的操作)、智慧調控(依據一定的規則與演算法調節)。

  • 智慧限流整體採用了pipeline的設計模式,目前實現了單機限流、叢集限流和自適應限流三個閥門,只有全部通過閥門,請求才能被放行,否則就會被攔截。這種設計便於維護以及後期限流策略的擴充套件,例如在雙十一之前緊急增加的叢集分鐘級限流(開發測試僅半個人日)。

  • 單機限流和叢集限流都是固定限流,即人為提前設定好介面的限流值,如果請求量超過這個值,便會被流控。人工限流的關鍵是對請求量的精準統計。

  • 動態限流則會依賴一些指標進行實時計算和分析,系統按照一定規則自行判斷是否需要限流,這個限流是將介面能力分為檔位進行調整,既會下調,也會自動上調恢復介面的能力。


2.資源監控


資源監控是指統計某個介面的各種指標,包含請求量/失敗量/限流量等,這些指標基本上是在單臺機器上的統計。但是在限流場景,單機限流僅僅能保護機器本身,對於下游的保護,還是需要叢集限流功能,因此還需要對叢集環境下的資源訪問統計。


640?wx_fmt=png


  • 單機指標統計


單機指標主要是基於滑動視窗的原理進行統計,比如QPS(每秒的請求數)的統計是將1秒分為5個時間視窗,每個視窗統計200ms內的請求,最後做累加。


單機指標監控主要是做單機限流,單機限流的最大好處是能夠保障單臺機器不會被上游壓垮。而對下游而言,單機限流可用性較低,對叢集資料來說準確性不能保障。


  • 叢集指標統計


我們不僅僅要保護自己,還要保護下游系統,因此需要保證叢集環境下給到下游的量是精確可控制的。


叢集指標統計需要藉助分散式快取實現,通過使用incr原子累加功能,實現在分散式環境下對請求量的統計。


針對QPS的統計,快取的key由介面名稱+秒級時間戳(yyyyMMddmmSS)組成,例如:xxxx_20181118012012。


叢集統計的準確性依賴兩個點:一個是分散式快取的效能,另一個是分散式環境下每臺機器的時間一致性(NTP網路可以保證)。


智慧限流的快取使用的是阿里集團的tair(MDB),單次讀寫平均在5ms以內,對於併發量不是特別大的業務系統來說誤差完全可以接受。


3.限流策略


640?wx_fmt=png


通過對資源的準確監控,人工固定限流比較容易實現,只要比較下當前的實際qps值和設定的qps值大小即可,達到設定的限流值該請求就會被終止(目前通過丟擲指定型別的異常)。


無論是秒級還是分鐘級限流,只是監控的粒度不同,即統計的key的時間戳的區別,對於限流的邏輯完全一致。


在限流時,我們還會進行主動通知,便於人工干預。


異常智慧處理


異常智慧處理主要是在日常和大促後的掃尾階段發揮重要作用。它以關務知識大腦為核心,協同CP、小二、系統共同高效解決業務異常。處理的異常越多,沉澱的就越多,系統也會越來越智慧。


640?wx_fmt=png


關務異常存在繁、雜、多、變等特點,如果靠人工去處理每一個異常訂單,需要投入巨大的成本,時效也無法得到保障,在大促期間,異常訂單量更是以百倍級別增長。技術是第一生產力,我們需要機器代替人工處理這些異常,系統自動處理也就應運而生。


然而,經過不斷的實踐證明,短期單純依賴系統自動處理所有的異常是不現實的,有部分還是需要人工介入(比如備案問題),然後再利用系統進行重新申報。因此,異常智慧處理系統的目標是:搭建人機互動閉環機制,沉澱底層知識大腦,快速提高異常處理的智慧化程度。


在底層實現上,我們搭建了一套規則庫用於知識沉澱,上層實時監聽海關異常回執,實現大部分異常秒級處理;同時,啟動定時異常處理任務,每天定點撈取遺漏訂單進行處理;最後,為小二和CP推送需要人工介入的異常訂單,處理完後再推送到系統,由系統接著處理後續流程。


展望未來


在全球化的道路上,我們任重而道遠,AI智慧,大資料協同是未來的方向,基於人工智慧方式實現全球通關的絲般順滑,讓全球通關更簡單!這是我們的宗旨和目標,我們會一步一個腳印一直走下去!


640?wx_fmt=png


未來的路還很長,我們迫切需要有更多的能人異士加入,一起譜寫曠世不滅的傳奇。如果你足夠優秀,如果你不甘平庸,來吧,讓我們一起風騷前行!


640?wx_fmt=gif

你可能還喜歡

點選下方圖片即可閱讀


640?wx_fmt=jpeg

阿里巴巴為什麼選擇Apache Flink?


640?wx_fmt=jpeg

首次公開!2018雙11技術數字全記錄


640?wx_fmt=jpeg

雙11大隊長霜波:

從手忙腳亂到胸有成竹,我們如何走過這十年?


640?wx_fmt=jpeg


關注「阿里技術」

把握前沿技術脈搏

相關文章