京東 B2B 業務的定位是讓各類型的企業都可以在京東的 B 平台上進行采購、建立采購關系。
京東 B2B 的用戶群體主要分為 2 類,一類是大 B 用戶、另一類是小 B 用戶。比如聯通、移動公司跟京東建立的采購關系,就是 B 平台的大 B 用戶;如果有一家小超市需要在京東 B 平台上進行采購,那么它就是 B 平台的小 B 用戶。
京東 B 平台需要支持各類型的用戶群,因此必須要有自己的業務系統做支撐,比如訂單、商品、價格、用戶、權限、審核等系統。
京東 B 平台的發展分為3個階段:
1)第一階段(2014年)
B2B 浪潮開始興起,京東在2014年與聯通公司達成合作,意味着京東正式邁入B2B時代的大 B 行業。
2)第二階段(2015-2016年)
農村電商開始興起,線下門店積極順應互聯網的發展趨勢,將傳統的零售搬到了線上;在這個階段,京東成立新通路事業部開展此業務,從此京東正式邁入了小 B 行業。
3)第三階段(2017年至今)
在之前大、小 B 業務的基礎上,京東的 B2B 業務在2017年得到快速發展,完美應對這個階段產生的種種挑戰,並發量、數據量均成幾十倍的增長。
業務架構 1.0 分為 3 層:
-
業務層:主要是 B 平台的所有業務線
-
服務層:包含訂單、價格、商品、用戶等 SOA 服務系統
-
存儲層:使用 mysq l數據庫進行存儲
服務問題改進
系統耦合改進
系統耦合的問題,通過引入 jmq 消息中間件進行解決。消息無序的問題,采用樂觀鎖進行解決,主要是依靠數據的版本對比來解決。
數據庫改進
數據公用的問題,解決方案還是進行拆分:
-
第一步,將各個業務系統 SOA 服務的數據,單獨存儲在自己的數據庫,訂單有訂單專門的數據庫、商品有商品專門的數據庫,服務之間互相不受影響。
-
第二步,在第一個步拆分后,有的業務數據量單表數量還是很大,需要對表進行拆分,我們采用 jproxy(不支持分表)進行分庫,按業務的相關主鍵 id,進行 hash(id)%count(分庫數量),支持水平擴展