京東商城系統,融合了自營模式、商城模式、三方平臺等模式,跟淘寶、天貓以商城模式為主的電商系統相比,業務模式上要豐富很多,包括許多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、可故障轉移。多機房部署,發生故障時能及時切換。
以上跟大家分享了京東商城業務架構、技術架構、數據架構,以及架構原則、運維原則。
作者:K,知名電商公司技術老K級人物。文出過暢銷書,武做過CTO,若不是生活所迫,誰願意一身才華。
閱讀更多 運營增長 的文章