一張京東618訂單的奇妙之旅
適逢“買買買”的京東618大促,大家一定對這幅圖相當熟悉。

其實這張圖片中展示的只是從提交訂單,到收到商品全過程上百個片段中的小小縮影。今天,京技院在618指揮中心,帶你完整走一通從網上提交訂單到收到包裹的奇妙之旅。Come on,Follow me!毫秒級完成的個性化推薦與搜索
你是否已發現,不同的用戶打開京東主頁所看到的商品是不完全一樣的,這是京東憑借強大的大數據實現的個性化推薦。
后臺系統通過分析上億件商品的價格、評價等信息,再結合您所有的瀏覽記錄、購買偏好等數據,綜合分析出您可能需要的商品,并***時間在你的首頁體現。
完全實現了針對你的個性化推薦,這所有的數據分析和商品篩選都在毫秒級時間內完成。當你輸入商品的關鍵詞,搜索系統首先會進行意圖分析,同時,在線部分會調用用戶畫像系統獲得您的個性化特征。
為了快速而準確的返回搜索結果,搜索背后依托的大數據平臺,上千臺服務器開始做排序特征挖掘、全量索引、實時價格庫存更新等運算工作,最終通過結果頁呈現。這一過程中大量的數據在服務器間流轉,但所用時間仍然在毫秒級。提交訂單后,生產訂單前在京東,每次提交訂單會要求控制在100ms以內完成。在如此快速的響應時間內,后臺系統將經歷非常復雜的業務邏輯:
- 用戶身份檢查
- 庫存狀態校驗
- 庫存預占
- 支付密碼校驗
- 京豆、余額、優惠券查詢
- 生成訂單號
- 更新購物車
- 保存訂單
……
用戶每一個提交訂單的動作,對于京東系統來說,都是一條***的指令。完成訂單提交這個動作的過程中,多達上百個系統正在準確而高速的運轉著。
包括交易引擎會根據指令,安排訂單流轉的行程并通知訂單中心(您可以在訂單中心隨時查看整個生產過程)、財務中心(需要準備多少錢)、倉儲中心(由哪個庫房生產等),保證您的訂單有條不紊的進入后續的生產流程中,這個過程需要300毫秒。訂單的履約生產過程
訂單成功提交后即進入履約階段,訂單履約中心(OFC)專門提供訂單生成后的履約工作,確保實物流轉和訂單信息的秒級精準同步。OFC將完成:過濾存在風險的訂單、生產信息準備、生產計劃的制定等工作,***把滿足生產條件的訂單傳遞到庫房進行物流生產。
同時還肩負著將下游系統主數據、訂單處理狀態回傳給訂單中心、庫存中心的任務,是客戶訂單業務最核心的后臺支撐系統。
當訂單生成后,還會有一系列動作,那就是做訂單的拆分、時效計算、轉移、預分揀、發票數據準備、面單數據準備等一系列步驟。因為在訂單中的商品,比如電腦、圖書、日常用品等,他們是存放在不同倉庫里的。這就需要將一個大訂單拆分成多個小訂單進行生產,這就是訂單拆分。系統會根據用戶購買商品的種類、大小、有無現貨、距離遠近等,綜合計算出一個***方案,依此對訂單進行拆分。同時將下單時使用的優惠券、京豆、禮品卡等,合理的分攤在每個拆分后的新訂單上,包括根據不同商品品類對應不同工商稅務要求,發出電子發票的任務。
訂單拆分完成后,OFC會調用訂單時效模塊,邏輯上會考慮生產時效、生產成本、庫存、客戶體驗等多個因素,給出一個優化的方案。之后,OFC會調用青龍系統的預分揀模塊,通過匹配用戶填寫收貨地址和配送站點,并考慮生產能力和負載情況,分配***的配送站點。然后調用訂單時效模塊,修正訂單可到達客戶的時間;調用發票模塊準備好發票數據;調用面單模塊準備好面單數據。
訂單一切準備工作就緒后,OFC下傳模塊會將符合生產條件(庫存狀態、時效211/311/411)的訂單立刻下傳到庫房。訂單狀態變更為:
“您的訂單已經進入***庫準備出庫”
“您的訂單預計***日送達您手中”
這是京東配送的產品處理流程,第三方商家訂單的處理流程相對簡單,不需要判斷是否滿足生產條件,而是經過預分揀環節,確定京東是否可配送后,就下發到商家后臺系統,由商家完成訂單后續備貨、發貨流程。到了這里,我們的訂單終于下傳到庫房。以上龐大復雜的鏈路是不是耗時很久呢?當然不!訂單從下單到庫房的時間已經從30分鐘優化到5秒,為京東的1小時達、211、411等各種超快配送服務提供了保證。因此,以上的各個環節,用戶的感受都是在提交訂單的瞬間完成的。
時效系統(promise)根據發貨倉庫、配貨中心、送貨地址、地圖、實時路況等數據,核算出***路線,并完成精準送達時間的計算。
而且,為了更快更好的把貨物送到用戶手里,今年京東還推出了移動倉庫服務,通過實時定位和調度移動倉,同時還涉及到庫存數量,根據覆蓋地區范圍和時效的多維度變化以及移動貨車各項風險分析控制,實現更加快速的送達服務。一個包裹的實物旅程為了更好的服務于用戶,京東在全國多地建造了目前國內規模***、技術***進的物流中心“亞洲一號”,庫房實現了自動化分揀系統。在這里,庫房生產拉開序幕。經過庫房揀貨組、復核組、打包組接力,訂單庫房生產結束。
訂單狀態變更為:
“您的訂單已揀貨完成”
“掃描員已經掃描”
“打包成功”
“揀貨完成”
為了揀貨效率,減少庫房行走路徑,通常會將多個訂單同一商品合并揀貨,再將所有的商品分攤到相關訂單,這個過程叫“分貨”。這個過程非常復雜,特別是存在一單一品和一單多品的訂單。京東自創的“籃子”分揀設備和智能顯示屏,能大大提高分貨效率和準確性。接下來,將訂單商品在復核臺上掃描確認,進行商品打包操作。復核、打包操作完成也會回傳狀態給訂單跟蹤系統。到這里,庫房內的生產操作基本完成了。
庫房生產還有一項非常重要的工作是打印發票,主要分為離線發票和在線發票,離線發票是OFC將發票打印模板和發票數據信息提前推送給庫房,在線發票是庫房根據訂單號獲取開票模板,通過調用發票接口完成。發票類型有普通發票、增值稅發票和電子發票,普通發票是財務部門通過稅控機打印后回傳,再交由青龍配送系統進行配送;增值稅發票下單時會要求填寫郵寄地址,同樣也是通過青龍系統預分揀模塊計算出配送中心;電子發票由用戶自行下載打印。
打包完成的商品會被送往分揀中心,分揀中心將送往配送中心的所有訂單準備就緒。訂單狀態變更為:
“您的訂單在【***分揀中心】發揀完成”
“您的訂單在【***分揀中心】發貨完成,準備送往【***配送站】”
商品打包完成后,通過龍門架對接分揀機傳送到分揀中心,通常分揀中心就在庫房隔壁。分揀中心會對包裹進行收貨、驗貨、分貨、裝車、發車,分揀中心同時將狀態回傳給訂單跟蹤系統。
訂單經過幾個小時的車程抵達配送中心,完成驗貨。晨光初曉,勤勞的配送小哥載上與您的承諾,開啟嶄新一天的旅程。尾聲一張京東訂單的故事講完了,這里描述的系統僅僅是京東成千上萬系統中的冰山一角。一張張的訂單背后除了京東強悍的物流配送系統,更體現出了京東技術體系和大數據的強勁實力與大智慧。本文作者:京東架構師委員會&辦公室Jingo組
全文刊登在《京東架構師》第六期
本文為原創作品,為尊重作者的勞動成果,請轉發務必注明出處及作者。