[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!


京東商城系統,融合了自營模式、商城模式、三方平臺等模式,跟淘寶、天貓以商城模式為主的電商系統相比,業務模式上要豐富很多,包括許多WMS、TMS、OMS的部分。國內中小型電商公司,如果要學,最好是學習京東的業務架構,因為業務模式上相近一些。

01

超大型電商系統架構目標

1.構建超大型電商交易平臺,兼顧效率和性能,達到高人效、高時效和低成本的目標。

2.低成本,增加服務的重用性,提高開發效率,降低人力成本;利用成熟開源技術,降低軟硬件成本;利用虛擬化技術,減少服務器成本。

3.高擴展,系統架構簡單清晰,應用系統間耦合低,容易水平擴展,業務功能增改方便快捷。

4.高可用,自動化運維。整體系統可用性99.99%,單個系統可用性99.999%。全年故障時間整個系統不超過50分鐘,單個系統故障不超過5分鐘。

02

京東商城業務架構設計原則

1.業務平臺化

業務平臺化,相互獨立。如交易平臺、倉儲平臺、物流平臺、支付平臺、廣告平臺等 。基礎業務下沉,可複用。如用戶、商品、類目、促銷、時效等。

2.核心業務、非核心業務分離

電商核心業務與非核心業務分離,核心業務精簡(利於穩定),非核心業務多樣化。如,主交易服務、通用交易服務 。

[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!


3.區分主流程、輔流程

分清哪些是電商的主流程。運行時,優先保證主流程的順利完成,輔流程可以採用後臺異步的方式。避免輔流程的失敗導致主流程的回滾。如,下單時,同步調用快照,異步通知臺賬、發票 。

4.隔離不同類型的業務

交易業務是簽訂買家和賣家之間的交易合同,需要優先保證高可用性,讓用戶能快速下單,履約業務對可用性沒有太高要求,可以優先保證一致性 ,閃購業務對高併發要求很高,應該跟普通業務隔離。

[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!


京東業務架構實例 (來源於@京東技術部)

03

應用架構設計原則

1、穩定性原則

一切以穩定為中心;架構儘可能簡單、清晰;不過度設計。

2、接耦/拆分

穩定部分與易變部門分離;核心業務與非核心業務分離;電商主流程與輔流程分離;應用與數據分離;服務與實現細節分離。

3、抽象化

應用抽象化:應用只依賴服務抽象,不依賴服務實現細節、位置。

數據庫抽象化:應用只依賴邏輯數據庫,不需要關心物理庫的位置和分片。

服務器抽象化:應用虛擬化部署,不需要關心實體機配置,動態調配資源。

4、松耦合。

跨域調用異步化,不同業務域之間儘量異步接耦。

非核心業務儘量異步化,核心和非核心業務之間,儘量異步接耦。

5、容錯設計。

服務自治:服務能彼此獨立修改、部署、發佈和管理。避免引發連鎖反應。

集群容錯:應用系統集群,避免單點。

多機房容災:多機房部署,多活。

04

京東商城應用架構分層

表現層。包含首頁、列表頁、詳情頁。

業務流程層。商品系統、交易系統、訂單系統、財務系統、物流系統等。

服務層,服務構建層,其中包含:商品服務、交易服務、訂單服務、財務服務、物流服務。

在治理方面,包括服務質量層、數據架構層、治理層等。

[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!


京東應用架構分層 (來源於@京東技術部)

05

京東商城應用架構拆分原則

1、水平擴展。也就是複製的能力,應用系統實現多機集群、提升併發能力,數據庫進行讀寫分離,如商品讀庫、商品寫庫。

2、垂直拆分。指的是不同業務系統的拆分,如商品系統、交易系統;數據庫方面也是相應拆成商品庫、訂單庫。

3、業務分片。同業務進行分片,比如秒殺系統、常規下單系統,要分開;數據庫方面,如把訂單表按ID取模運算後分庫分表。

4、水平拆分。服務層面,功能與非功能分開,穩定業務與易變業務分開;數據庫方面,冷熱數據分離、歷史數據分離。

06

京東商城服務設計的依賴原則

1、依賴穩定的部分。穩定部分不依賴易變的部分、易變的部分可以依賴穩定的部分、堅決避免循環依賴。

2、跨域弱依賴。跨業務域調用的時候,儘可能異步弱依賴。

3、基於服務依賴。基於服務不能向上依賴流程服務;組合服務、流程服務可以向下依賴基本服務。條件是基本服務要穩定。

4、非功能性服務依賴。非功能性服務不能依賴功能性服務;功能性服務可依賴非功能性服務。條件:非功能性服務穩定。

5、平臺服務依賴。平臺服務不依賴上層應用;上層應用可依賴平臺服務;條件:平臺服務穩定。

6、核心服務依賴。核心服務不依賴非核心服務;非核心服務可依賴核心服務;條件:核心服務穩定。

07

服務設計基本原則

1、無狀態。儘量不要把狀態數據保存在本機,接口調用冪等性。

2、可複用。複用顆粒度是有業務邏輯的抽象服務,不是服務實現細節。服務引用只依賴於服務抽象。

3、松耦合。跨業務調用,儘可能異步解耦。必須同步調用時,設置超時和隊列大小。相對穩定的基本服務與易變流程服務分層。

4、可治理。制定服務契約、服務可降級、服務可限流、服務可開關、服務可監控、白名單機制。

[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!


京東商城應用架構實例圖 (來源於@京東技術部)

08

京東商城數據架構設計原則

1、統一數據視圖。保證數據的及時性,一致性、準確性、完整性。

2、數據、應用分離。應用系統只依賴邏輯數據庫;應用系統不直接訪問其它宿主數據庫,只能通過服務訪問。

3、數據異構。源數據和目標數據內容相同時,做索引異構,如商品庫不同維度。內容不同時,做數據庫異構,如訂單買家庫和賣家庫。

4、數據讀寫分離。訪問量大的數據庫做讀寫分離,數據量大的數據庫做分庫,不同業務域數據庫做分區隔離,重要數據配置備庫。

5、用Mysql等主流數據庫。除成本因素外,Mysql數據庫擴展能力強,運維積累了大量豐富經驗。

6、合理使用緩存。數據庫有能力支撐時,儘量不要引入緩存。合理利用緩存做容災。

[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!


[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!


09

京東商城技術架構總覽

1、基本平臺。數據存取方面的技術組件包括:緩存服務有JFS/Jimstore、圖片服務JSS、即時服務JDW、索引服務Search、數據庫服務DBS。

2、集成層。服務流程引擎PAF、服務中間件SAF、MQ服務JDMQ、數據庫中間件JDAL、調度服務JDWorker、業務規則服務JDRules、配置服務JDCenter、推送服務JMP。

3、質量層。監控服務UMP、日誌服務Loghub、風控系統JDriskM、應用管理jdcenter。

其它還包括治理層、虛擬平臺、運營管理等等。

[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!


10

京東商城系統運維原則

1、可監控。服務的TPS和RT是否符合SLA,是否出現超預期流量。

2、應用可回滾,功能可降級。應用出現問題時,要求能回滾到上一版本,或做功能降級。

3、在線擴容。超預期流量時,應用系統可選擇在線水平擴展。

4、安全保證。確保系統和保密性和完整性。具有足夠的防攻擊能力。

5、可容錯性。核心應用要求多活,避免單點設計,並且自身有容錯和修復能力。故障恢復時間短。

6、可故障轉移。多機房部署,發生故障時能及時切換。

[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!


以上跟大家分享了京東商城業務架構、技術架構、數據架構,以及架構原則、運維原則。


[技能~技術]京東商城,超大型電商系統架構設計原則與實踐!



分享到:


相關文章: