基於中臺思想的物流系統設計(一)
一、總體設計
在中臺架構中,我們往往把一個系統劃分為基礎能力層和產品服務層。其中,基礎能力層聚焦於穩定收斂的業務模型和基礎服務本身,不會隨著業務和前臺產品的調整發生變化,平臺產品層則專注於通過流程編排類的技術手段,將基礎能力構建成業務的解決方案,解決共性和個性化的問題。
基於上面所說的中臺架構思想,我們把物流系統劃分位物流基礎能力層和物流產品服務層:
本文將從巨集觀上來分別介紹物流基礎能力和物流產品服務,至於微觀上對各個系統的設計則會在後續系列文章中介紹。
二、物流產品服務層
整個電商物流體系包含三個主要流程:使用者端流程、商家端流程和公共流程。這三個流程的互動如下圖所示
這三個流程中可以進一步劃分出不同的業務執行節點,針對這些業務節點,我們在物流產品服務層定義出業務介面,這些業務介面可以通過擴充套件點支撐不同的業務特性,同時,這些業務介面組合起來又形成了一套物流業務流程。
上面的說法比較抽象,下面會通過對每個業務節點的介紹,進一步說明這種設計思路。
1、物流服務
物流服務,其實就是一個物流解決方案,比如快遞發貨、倉配發貨、城市配送等等。對於每一個物流服務,對應都有不同的業務場景。比如普通電商直接使用快遞發貨就可以了,家電等大件商品就可能要倉配發貨,而外賣則需要城市配送。我們把物流服務定義成一個業務介面,前端業務通過不同的業務場景,傳入不同的引數,呼叫這個介面會給出一個特定的物流服務,這樣一來,我們把物流服務就收斂到了一個業務介面。同時,不同的物流服務的運費也是不一樣的,即使是同一種物流服務,在不同的送貨地址下,也會出現不一樣的運費,這裡我們也會抽象出一個運費計算的業務介面。
2、物流地址管理
在物流地址這塊,前端會有不同的地址管理需求,比如使用者手填的地址,根據經緯度儲存的地址,根據IP儲存的地址。我們把這些地址需求收斂到一套地址管理的業務介面中,前端只需要傳入不同的引數,就可以很方便的管理地址。
3、下單
下單這個業務節點主要提供物流訂單建立的邏輯。不同場景的物流訂單建立通過這個介面進行收斂。舉個例子:使用者在我們的電商平臺上買完東西支付後,電商系統會發非同步訊息,物流系統接收後會建立一個普通的物流訂單,如果隨著業務發展,公司需要對接一些分銷商的ERP介面,讓他們直接通過ERP同步建立物流訂單,這時候就可以複用這個介面,只不過是入參和業務型別變了,內部的建立流程會做一些擴充套件性調整。
4、發貨
發貨這個節點和上面其他節點一樣,首先,它是一個正常物流流程中必不可少的環節,其次,它的業務玩法很多,除了最簡單的直接發貨外,還會存在拆單發貨、延遲發貨、虛擬商品發貨等等,因此,我們會抽象出一個通用的業務介面,通過入參的不同和流程的擴充套件,去支撐不同的發貨。
5、確認發貨
從發貨到確認發貨,中間包含不同的業務場景,比如快遞發貨後,商家需要等待快遞員上門取件後,才能確認發貨,對於倉配發貨,必須等倉庫確認收到指令並回傳成功後才能確認發貨,而城市配送發貨,必須等外賣小哥取件後才能確認發貨。因此,確認發貨也需要抽象出一個業務介面,以便支撐不同的業務場景。
6、簽收
簽收節點目前的業務場景並不多,但是它是一個必要的業務節點,因此也抽象出一個業務介面,以便支撐未來的擴充套件性。
7、物流詳情
物流詳情目前僅僅是查詢,業務場景並不多,但是它是一個必要的業務節點,因此也抽象出一個業務介面,以便支撐未來的擴充套件性。
三、物流基礎能力層
基礎能力層聚焦於穩定收斂的業務模型和基礎服務本身,它為產品服務層提供穩定的原子介面。物流產品服務層的業務節點,對映到物流基礎能力層,就變成了4大基礎能力:物流訂單能力,物流地址能力,物流詳情能力,物流服務能力。
1、物流訂單能力
物流訂單能力定義了物流訂單的模型以及物流訂單狀態機,它會提供建立、修改、拆單、取消、關閉等原子介面,同時負責對訂單資料的儲存和檢索。物流訂單能力支撐了下單、發貨、確認收貨、簽收這些業務介面
2、物流地址能力
物流地址能力包含了四級地址庫、使用者地址、商家地址的資料儲存、檢索,這些資料通過上層業務介面,為使用者提供了豐富的物流地址資訊。
3、物流詳情能力
物流詳情能力定義了物流詳情的資料模型,並和不同的物流商進行對接,將不同物流商的資料轉換成我們自己的標準資料,這些資料會和平臺業務資料(訂單號、使用者ID等)進行關聯,對外提供豐富的物流詳情查詢介面。
4、物流服務能力
物流服務能力定義了物流服務模型、物流公司模型、運費模板模型,為物流產品服務層的物流服務業務介面以及運費計算提供了支援。
四、總結
本文從巨集觀上介紹了基於中臺思想的物流系統設計,整個中臺架構其實就是把不變的資料模型和經常變的業務模型進行隔離,通過業務流程編排的方式將變化的業務對映到標準的底層模型中。當然,整個物流系統不僅僅包含這些巨集觀設計,還包含了非常多的微觀設計,比如業務介面的設計、流程編排設計、高併發高可用設計、快取設計等等,在後續系列文章的中,我們將從微觀層面逐一介紹這些設計。
聯絡郵箱:[email protected]
(未經同意,請勿轉載)