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

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