老K所在的滬上知名電商公司,幾年前被京東收購了,所以對京東的整個(gè)技術(shù)架構(gòu)體系還是比較熟悉,做過深入研究,本文ppt來自京東商城技術(shù)團(tuán)隊(duì)的內(nèi)部分享材料,其中一些涉及太多技術(shù)細(xì)節(jié)的ppt沒有放出來,但在文字中都有提到。
京東商城系統(tǒng),融合了自營模式、商城模式、三方平臺(tái)等模式,跟淘寶、天貓以商城模式為主的電商系統(tǒng)相比,業(yè)務(wù)模式上要豐富很多,包括許多WMS、TMS、OMS的部分。國內(nèi)中小型電商公司,如果要學(xué),最好是學(xué)習(xí)京東的業(yè)務(wù)架構(gòu),因?yàn)闃I(yè)務(wù)模式上相近一些。
01超大型電商系統(tǒng)架構(gòu)目標(biāo)
1.構(gòu)建超大型電商交易平臺(tái),兼顧效率和性能,達(dá)到高人效、高時(shí)效和低成本的目標(biāo)。
2.低成本,增加服務(wù)的重用性,提高開發(fā)效率,降低人力成本;利用成熟開源技術(shù),降低軟硬件成本;利用虛擬化技術(shù),減少服務(wù)器成本。
3.高擴(kuò)展,系統(tǒng)架構(gòu)簡單清晰,應(yīng)用系統(tǒng)間耦合低,容易水平擴(kuò)展,業(yè)務(wù)功能增改方便快捷。
4.高可用,自動(dòng)化運(yùn)維。整體系統(tǒng)可用性99.99%,單個(gè)系統(tǒng)可用性99.999%。全年故障時(shí)間整個(gè)系統(tǒng)不超過50分鐘,單個(gè)系統(tǒng)故障不超過5分鐘。
02京東商城業(yè)務(wù)架構(gòu)設(shè)計(jì)原則
1.業(yè)務(wù)平臺(tái)化
業(yè)務(wù)平臺(tái)化,相互獨(dú)立。如交易平臺(tái)、倉儲(chǔ)平臺(tái)、物流平臺(tái)、支付平臺(tái)、廣告平臺(tái)等 ?;A(chǔ)業(yè)務(wù)下沉,可復(fù)用。如用戶、商品、類目、促銷、時(shí)效等。
2.核心業(yè)務(wù)、非核心業(yè)務(wù)分離
電商核心業(yè)務(wù)與非核心業(yè)務(wù)分離,核心業(yè)務(wù)精簡(利于穩(wěn)定),非核心業(yè)務(wù)多樣化。如,主交易服務(wù)、通用交易服務(wù) 。
3.區(qū)分主流程、輔流程
分清哪些是電商的主流程。運(yùn)行時(shí),優(yōu)先保證主流程的順利完成,輔流程可以采用后臺(tái)異步的方式。避免輔流程的失敗導(dǎo)致主流程的回滾。如,下單時(shí),同步調(diào)用快照,異步通知臺(tái)賬、發(fā)票 。
4.隔離不同類型的業(yè)務(wù)
交易業(yè)務(wù)是簽訂買家和賣家之間的交易合同,需要優(yōu)先保證高可用性,讓用戶能快速下單,履約業(yè)務(wù)對可用性沒有太高要求,可以優(yōu)先保證一致性 ,閃購業(yè)務(wù)對高并發(fā)要求很高,應(yīng)該跟普通業(yè)務(wù)隔離。
03應(yīng)用架構(gòu)設(shè)計(jì)原則
1、穩(wěn)定性原則
一切以穩(wěn)定為中心;架構(gòu)盡可能簡單、清晰;不過度設(shè)計(jì)。
2、接耦/拆分
穩(wěn)定部分與易變部門分離;核心業(yè)務(wù)與非核心業(yè)務(wù)分離;電商主流程與輔流程分離;應(yīng)用與數(shù)據(jù)分離;服務(wù)與實(shí)現(xiàn)細(xì)節(jié)分離。
3、抽象化
應(yīng)用抽象化:應(yīng)用只依賴服務(wù)抽象,不依賴服務(wù)實(shí)現(xiàn)細(xì)節(jié)、位置。
數(shù)據(jù)庫抽象化:應(yīng)用只依賴邏輯數(shù)據(jù)庫,不需要關(guān)心物理庫的位置和分片。
服務(wù)器抽象化:應(yīng)用虛擬化部署,不需要關(guān)心實(shí)體機(jī)配置,動(dòng)態(tài)調(diào)配資源。
4、松耦合
跨域調(diào)用異步化,不同業(yè)務(wù)域之間盡量異步接耦。
非核心業(yè)務(wù)盡量異步化,核心和非核心業(yè)務(wù)之間,盡量異步接耦。
5、容錯(cuò)設(shè)計(jì)
服務(wù)自治:服務(wù)能彼此獨(dú)立修改、部署、發(fā)布和管理。避免引發(fā)連鎖反應(yīng)。
集群容錯(cuò):應(yīng)用系統(tǒng)集群,避免單點(diǎn)。
多機(jī)房容災(zāi):多機(jī)房部署,多活。
04京東商城應(yīng)用架構(gòu)分層
表現(xiàn)層。包含首頁、列表頁、詳情頁。
業(yè)務(wù)流程層。商品系統(tǒng)、交易系統(tǒng)、訂單系統(tǒng)、財(cái)務(wù)系統(tǒng)、物流系統(tǒng)等。
服務(wù)層,服務(wù)構(gòu)建層,其中包含:商品服務(wù)、交易服務(wù)、訂單服務(wù)、財(cái)務(wù)服務(wù)、物流服務(wù)。
在治理方面,包括服務(wù)質(zhì)量層、數(shù)據(jù)架構(gòu)層、治理層等。
05京東商城應(yīng)用架構(gòu)拆分原則
1、水平擴(kuò)展。也就是復(fù)制的能力,應(yīng)用系統(tǒng)實(shí)現(xiàn)多機(jī)集群、提升并發(fā)能力,數(shù)據(jù)庫進(jìn)行讀寫分離,如商品讀庫、商品寫庫。
2、垂直拆分。指的是不同業(yè)務(wù)系統(tǒng)的拆分,如商品系統(tǒng)、交易系統(tǒng);數(shù)據(jù)庫方面也是相應(yīng)拆成商品庫、訂單庫。
3、業(yè)務(wù)分片。同業(yè)務(wù)進(jìn)行分片,比如秒殺系統(tǒng)、常規(guī)下單系統(tǒng),要分開;數(shù)據(jù)庫方面,如把訂單表按ID取模運(yùn)算后分庫分表。
4、水平拆分。服務(wù)層面,功能與非功能分開,穩(wěn)定業(yè)務(wù)與易變業(yè)務(wù)分開;數(shù)據(jù)庫方面,冷熱數(shù)據(jù)分離、歷史數(shù)據(jù)分離。
06京東商城服務(wù)設(shè)計(jì)的依賴原則
1、依賴穩(wěn)定的部分。穩(wěn)定部分不依賴易變的部分、易變的部分可以依賴穩(wěn)定的部分、堅(jiān)決避免循環(huán)依賴。
2、跨域弱依賴??鐦I(yè)務(wù)域調(diào)用的時(shí)候,盡可能異步弱依賴。
3、基于服務(wù)依賴?;诜?wù)不能向上依賴流程服務(wù);組合服務(wù)、流程服務(wù)可以向下依賴基本服務(wù)。條件是基本服務(wù)要穩(wěn)定。
4、非功能性服務(wù)依賴。非功能性服務(wù)不能依賴功能性服務(wù);功能性服務(wù)可依賴非功能性服務(wù)。條件:非功能性服務(wù)穩(wěn)定。
5、平臺(tái)服務(wù)依賴。平臺(tái)服務(wù)不依賴上層應(yīng)用;上層應(yīng)用可依賴平臺(tái)服務(wù);條件:平臺(tái)服務(wù)穩(wěn)定。
6、核心服務(wù)依賴。核心服務(wù)不依賴非核心服務(wù);非核心服務(wù)可依賴核心服務(wù);條件:核心服務(wù)穩(wěn)定。
07服務(wù)設(shè)計(jì)基本原則
1、無狀態(tài)。盡量不要把狀態(tài)數(shù)據(jù)保存在本機(jī),接口調(diào)用冪等性。
2、可復(fù)用。復(fù)用顆粒度是有業(yè)務(wù)邏輯的抽象服務(wù),不是服務(wù)實(shí)現(xiàn)細(xì)節(jié)。服務(wù)引用只依賴于服務(wù)抽象。
3、松耦合??鐦I(yè)務(wù)調(diào)用,盡可能異步解耦。必須同步調(diào)用時(shí),設(shè)置超時(shí)和隊(duì)列大小。相對穩(wěn)定的基本服務(wù)與易變流程服務(wù)分層。
4、可治理。制定服務(wù)契約、服務(wù)可降級、服務(wù)可限流、服務(wù)可開關(guān)、服務(wù)可監(jiān)控、白名單機(jī)制。
08京東商城數(shù)據(jù)架構(gòu)設(shè)計(jì)原則
1、統(tǒng)一數(shù)據(jù)視圖。保證數(shù)據(jù)的及時(shí)性,一致性、準(zhǔn)確性、完整性。
2、數(shù)據(jù)、應(yīng)用分離。應(yīng)用系統(tǒng)只依賴邏輯數(shù)據(jù)庫;應(yīng)用系統(tǒng)不直接訪問其它宿主數(shù)據(jù)庫,只能通過服務(wù)訪問。
3、數(shù)據(jù)異構(gòu)。源數(shù)據(jù)和目標(biāo)數(shù)據(jù)內(nèi)容相同時(shí),做索引異構(gòu),如商品庫不同維度。內(nèi)容不同時(shí),做數(shù)據(jù)庫異構(gòu),如訂單買家?guī)旌唾u家?guī)臁?/p>
4、數(shù)據(jù)讀寫分離。訪問量大的數(shù)據(jù)庫做讀寫分離,數(shù)據(jù)量大的數(shù)據(jù)庫做分庫,不同業(yè)務(wù)域數(shù)據(jù)庫做分區(qū)隔離,重要數(shù)據(jù)配置備庫。
5、用Mysql等主流數(shù)據(jù)庫。除成本因素外,Mysql數(shù)據(jù)庫擴(kuò)展能力強(qiáng),運(yùn)維積累了大量豐富經(jīng)驗(yàn)。
6、合理使用緩存。數(shù)據(jù)庫有能力支撐時(shí),盡量不要引入緩存。合理利用緩存做容災(zāi)。
09京東商城技術(shù)架構(gòu)總覽
1、基本平臺(tái)。數(shù)據(jù)存取方面的技術(shù)組件包括:緩存服務(wù)有JFS/Jimstore、圖片服務(wù)JSS、即時(shí)服務(wù)JDW、索引服務(wù)Search、數(shù)據(jù)庫服務(wù)DBS。
2、集成層。服務(wù)流程引擎PAF、服務(wù)中間件SAF、MQ服務(wù)JDMQ、數(shù)據(jù)庫中間件JDAL、調(diào)度服務(wù)JDWorker、業(yè)務(wù)規(guī)則服務(wù)JDRules、配置服務(wù)JDCenter、推送服務(wù)JMP。
3、質(zhì)量層。監(jiān)控服務(wù)UMP、日志服務(wù)Loghub、風(fēng)控系統(tǒng)JDriskM、應(yīng)用管理jdcenter。
其它還包括治理層、虛擬平臺(tái)、運(yùn)營管理等等。
10京東商城系統(tǒng)運(yùn)維原則
1、可監(jiān)控。服務(wù)的TPS和RT是否符合SLA,是否出現(xiàn)超預(yù)期流量。
2、應(yīng)用可回滾,功能可降級。應(yīng)用出現(xiàn)問題時(shí),要求能回滾到上一版本,或做功能降級。
3、在線擴(kuò)容。超預(yù)期流量時(shí),應(yīng)用系統(tǒng)可選擇在線水平擴(kuò)展。
4、安全保證。確保系統(tǒng)和保密性和完整性。具有足夠的防攻擊能力。
5、可容錯(cuò)性。核心應(yīng)用要求多活,避免單點(diǎn)設(shè)計(jì),并且自身有容錯(cuò)和修復(fù)能力。故障恢復(fù)時(shí)間短。
6、可故障轉(zhuǎn)移。多機(jī)房部署,發(fā)生故障時(shí)能及時(shí)切換。
以上跟大家分享了京東商城業(yè)務(wù)架構(gòu)、技術(shù)架構(gòu)、數(shù)據(jù)架構(gòu),以及架構(gòu)原則、運(yùn)維原則。
文章來源:K班出身 ,作者M(jìn)r.K;
編者:云朵匠 | 數(shù)商云(微信ID:shushangyun_com)
【數(shù)商云www.zhimaihui.cn】致力于提供企業(yè)級的電商系統(tǒng)服務(wù),長期為大中型企業(yè)打造數(shù)據(jù)化、商業(yè)化、智能化的網(wǎng)上商城系統(tǒng)解決方案,同時(shí)我們還提供B2B電子商務(wù)平臺(tái)、B2B2C多用戶商城系統(tǒng)、B2C電子商務(wù)系統(tǒng)、跨境進(jìn)口電商平臺(tái)、供應(yīng)鏈管理系統(tǒng)、新零售電商平臺(tái)、直播電商系統(tǒng)等一系列系統(tǒng)定制開發(fā)服務(wù)。
評論