123悬赏网_日本国产一区二区_发布悬赏任务_日本国产一区_广告任务平台

首頁(yè) > 活動(dòng)線報(bào) > 每日福利 > 京東到家訂單交易架構(gòu)演化

京東到家訂單交易架構(gòu)演化

發(fā)布時(shí)間:2024-07-08 16:08:07

背景
交易系統(tǒng)可能不是技術(shù)難度最深的,但是業(yè)務(wù)復(fù)雜度最高的,一個(gè)訂單從提交到最后真正生產(chǎn)成功要經(jīng)歷幾十個(gè)系統(tǒng),涉及的接口交互,MQ等可能達(dá)上百個(gè)。任何一個(gè)環(huán)節(jié)出問(wèn)題都會(huì)導(dǎo)致這一單的異常,而且交易不像單純的資訊門(mén)戶可以靠靜態(tài)化或者緩存抗住大并發(fā),交易系統(tǒng)里面涉及到大量的資源(庫(kù)存,優(yōu)惠券,優(yōu)惠碼等)消費(fèi),訂單生成等需要寫(xiě)入持久化的操作不是單純的異步或者緩存化可以解決的,而且對(duì)庫(kù)存等敏感信息不能出現(xiàn)并發(fā)扣減等。

細(xì)節(jié)的設(shè)計(jì)非常多,下面挑出比較典型的一些方面,給大家介紹下京東到家交易系統(tǒng)的架構(gòu)設(shè)計(jì)和關(guān)鍵問(wèn)題的處理方案。

歷程
系統(tǒng)Set化
初期的訂單系統(tǒng)和首頁(yè),單品頁(yè),購(gòu)物車(chē)業(yè)務(wù)邏輯層等都是在一個(gè)大項(xiàng)目里。非常適合初期人員少,業(yè)務(wù)復(fù)雜度低,快速迭代,不斷探索試錯(cuò)的過(guò)程,但是隨著業(yè)務(wù)的發(fā)展,出現(xiàn)了以下問(wèn)題:

系統(tǒng)的流量和業(yè)務(wù)復(fù)雜度也越來(lái)越大,大家共用一個(gè)大項(xiàng)目進(jìn)行開(kāi)發(fā)部署,相互影響,協(xié)調(diào)成本變高;
不同的業(yè)務(wù)模塊,流量和重要級(jí)別不同需要的部署策略和容災(zāi)降級(jí)限流等措施也不一樣,要分而治之;

解決方案
項(xiàng)目Set化,這個(gè)過(guò)程中要注意Set化的邊界問(wèn)題,粒度太大了效果不好,太小了設(shè)計(jì)過(guò)度了,反而會(huì)增加維護(hù)和開(kāi)發(fā)成本;


分庫(kù)分表
問(wèn)題
隨著訂單的并發(fā)量的不斷攀升,特別是在雙十一,618等大促的時(shí)候,單組DB(一主多從)存在著明顯的壓力,單個(gè)主庫(kù)的連接數(shù)是有限的。大單量,大并發(fā)的時(shí)候,數(shù)據(jù)庫(kù)越來(lái)越成為了我們的瓶頸。

解決方案
針對(duì)接單數(shù)據(jù)庫(kù)我們采取的常規(guī)做法分庫(kù),根據(jù)訂單號(hào)進(jìn)行Hash分布到不同的多個(gè)數(shù)據(jù)庫(kù)中,代碼方面我們是繼承了Spring的AbstractRoutingDataSource,實(shí)現(xiàn)了determineCurrentLookupKey方法。對(duì)業(yè)務(wù)代碼只有很少的耦合。

另外下發(fā)到個(gè)人中心數(shù)據(jù)庫(kù)的訂單信息,每天不斷的累計(jì)到DB中,存在以下風(fēng)險(xiǎn):

MySQL的單表容量超過(guò)單機(jī)限制
穿透緩存到達(dá)DB的數(shù)據(jù)查詢也是非常有問(wèn)題的。
目前我們采取對(duì)個(gè)人中心的表按照pin進(jìn)行分庫(kù)分表。
但是對(duì)于后端生產(chǎn)系統(tǒng)對(duì)于訂單數(shù)據(jù)的查詢操作,特別是涉及到多條件組合的情況,由于數(shù)據(jù)量大,多個(gè)表數(shù)據(jù)的關(guān)聯(lián),無(wú)論分不分表或者讀寫(xiě)分離對(duì)這個(gè)場(chǎng)景都不能很好的解決。

這種場(chǎng)景下我們采用了ES,在寫(xiě)入DB的時(shí)候同步寫(xiě)入ES。你可能會(huì)問(wèn)ES失敗了,數(shù)據(jù)不一致怎么辦,ES失敗了DB回滾,Worker標(biāo)識(shí)狀態(tài),重新迎接下一次輪詢。

前端下單和后端生產(chǎn)分離
問(wèn)題
ToC端和ToB端的業(yè)務(wù)場(chǎng)景不同,前端對(duì)互聯(lián)網(wǎng)用戶的更多的是快速響應(yīng),抗住流量壓力,而后端的場(chǎng)景需要穩(wěn)定的全量的數(shù)據(jù),要在接單的數(shù)據(jù)庫(kù)基礎(chǔ)上進(jìn)行補(bǔ)全數(shù)據(jù);兩個(gè)端職責(zé)不同,不能互相影響;

解決方案
ToC和ToB分離,前端App或者H5用戶下單和后端訂單真正的生產(chǎn)相分離;前端訂單系統(tǒng)掛掉了,不影響后端的生產(chǎn);后端的生產(chǎn)掛了,對(duì)用戶的下單也是無(wú)感知的。只是對(duì)配送的時(shí)效體驗(yàn)上會(huì)有影響,不是阻斷性的。

我們ToC的訂單系統(tǒng)和ToB的是兩個(gè)不同的獨(dú)立數(shù)據(jù)庫(kù),互不影響;訂單管道的Woker都是基于TBSchedule的分布式管理,多個(gè)Woker并行處理,下發(fā)時(shí)機(jī)都在毫秒級(jí);


并行控制提升效率
問(wèn)題
交易的流程依賴的系統(tǒng)非常多,拿提單按鈕來(lái)舉例,結(jié)算頁(yè)的”提單”按鈕,點(diǎn)一次就會(huì)觸發(fā)20+個(gè)接口。隨著業(yè)務(wù)復(fù)雜度的提升,單純的串行執(zhí)行效率越來(lái)越低,前端用戶的體驗(yàn)越來(lái)越差。我們要求TP999在500ms以內(nèi)的響應(yīng)速度。

解決方案
我們梳理了服務(wù)的依賴關(guān)系等,對(duì)沒(méi)有前后依賴的接口進(jìn)行放到線程池里面異步執(zhí)行,類似:查詢庫(kù)存,查詢商品信息,查詢促銷信息等都并行執(zhí)行。此步執(zhí)行的時(shí)間,是并行接口里面最長(zhǎng)的一個(gè)執(zhí)行的時(shí)間。這樣一來(lái)整個(gè)提單的操作提升了幾百毫秒。

另外資源(庫(kù)存,優(yōu)惠券,優(yōu)惠碼,促銷等)的消費(fèi)和回滾,我們也采用了并行的方式,每一種資源類都實(shí)現(xiàn)消費(fèi)和回滾的接口。如下圖:


每個(gè)資源類都是一個(gè)Task的成員變量,Task實(shí)現(xiàn)了Callable接口。這樣一來(lái),不但整個(gè)提單大接口的效率提升了,對(duì)于資源消費(fèi)和回滾環(huán)節(jié),程序和業(yè)務(wù)的擴(kuò)展性提升了很多。比如新增一種資源,這時(shí)候只需實(shí)現(xiàn)消費(fèi)和回滾接口,然后扔到線程池里面就完成了。


異步
在服務(wù)端可能需要針對(duì)提單請(qǐng)求做一些附屬的事情,這些事情其實(shí)用戶并不關(guān)心或者用戶不需要立即拿到這些事情的處理結(jié)果,這種情況就比較適合用異步的方式處理這些事情,思路就是將訂單交易的業(yè)務(wù)整理出來(lái),哪些是不影響主流程的,例如:發(fā)短信,保存最近使用地址,清除購(gòu)物車(chē)商品,下發(fā)訂單給個(gè)人中心等等。這些都是在提單之后的異步線程去做。對(duì)于下發(fā)給個(gè)人中心的操作,如果失敗,我們會(huì)有Woker補(bǔ)償機(jī)制;

我們這里使用的是線程池的模式進(jìn)行異步處理的,處理過(guò)程中有幾個(gè)問(wèn)題需要注意下:

線程池的隊(duì)列不建議使用無(wú)界隊(duì)列,它的默認(rèn)大小是整數(shù)的最大值,這樣在突發(fā)流量的時(shí)候會(huì)導(dǎo)致內(nèi)存暴漲,影響服務(wù);建議使用ArrayBlockingQueue
不推薦使用CallerRunsPolicy,即在線程和隊(duì)列都達(dá)到max的時(shí)候,退回此請(qǐng)求到主線程。這樣在突發(fā)流量或者接口提供方性能下降的時(shí)候?qū)е轮骶€程數(shù)暴增,影響整體服務(wù)。可以直接使用拒絕的策略,后續(xù)的Woker可以對(duì)異常單就行補(bǔ)償;
依賴治理
訂單交易上百個(gè)接口,幾十個(gè)系統(tǒng)交互。各服務(wù)直接的依賴關(guān)系如何治理是一個(gè)很重要的問(wèn)題。如下圖:


問(wèn)題
一個(gè)服務(wù)依賴這么多服務(wù),每個(gè)服務(wù)除自身的原因外,還受到網(wǎng)絡(luò)原因等其他外部因素的影響,高并發(fā)情況下任何一個(gè)依賴的服務(wù)的波動(dòng)都會(huì)造成整個(gè)大服務(wù)的阻塞,進(jìn)而導(dǎo)致系統(tǒng)“雪崩”。

解決方案
那這些服務(wù)特別是不是阻斷流程的服務(wù),我們可以采用降級(jí)的處理,例如調(diào)用超時(shí)了給設(shè)定默認(rèn)值,調(diào)用量比較大,所依賴的服務(wù)嚴(yán)重超時(shí)并影響整個(gè)調(diào)用方時(shí),可以通過(guò)配置直接提供有損服務(wù),不調(diào)用此服務(wù)。

我們解決此類問(wèn)題是使用自己開(kāi)發(fā)的基于Zookeeper的“魯班系統(tǒng)”,其原理就是Zookeeper相應(yīng)的Znode節(jié)點(diǎn)下的數(shù)據(jù)做為對(duì)接口的開(kāi)關(guān)或者降級(jí)情況的配置等。當(dāng)相應(yīng)的節(jié)點(diǎn)的數(shù)據(jù)發(fā)生變化的時(shí)候,對(duì)此節(jié)點(diǎn)監(jiān)聽(tīng)的所有服務(wù)器都會(huì)受到通知,并將此變更同步到本地的緩存中;本地緩存我們使用的ConcurrentHashMap。當(dāng)然也可以使用Guava Cache等開(kāi)源組件,注意并發(fā)的場(chǎng)景就可以了;


然后再結(jié)合我們的UMP監(jiān)控系統(tǒng)對(duì)系統(tǒng)的可用率,調(diào)用量等情況進(jìn)行降級(jí)時(shí)機(jī)的判定,對(duì)Zookeeper相應(yīng)節(jié)點(diǎn)的數(shù)據(jù)做動(dòng)態(tài)配置;

 


履約
問(wèn)題
針對(duì)訂單履約的過(guò)程清晰可追溯,我們自己開(kāi)發(fā)了UDP上報(bào)系統(tǒng),對(duì)一次提單中操作的所有接口,幾十個(gè)系統(tǒng)的交互進(jìn)行了詳細(xì)記錄;

解決方案
出參入?yún)ⅲ欠癞惓#琁P等信息均做了上報(bào)。通過(guò)Spring的AOP方式,開(kāi)發(fā)了一個(gè)自定義注解,對(duì)添加了注解的方法UDP方式寫(xiě)入到ES集群中;而且我們實(shí)現(xiàn)了工具化,任何項(xiàng)目引入我們的Jar包,做簡(jiǎn)單配置就可以向我們的UDP服務(wù)端上報(bào)信息了。隨著現(xiàn)在的信息量變大,我們正在考慮升級(jí)架構(gòu),UDP Client端發(fā)送信息到Kafka,然后Storm實(shí)時(shí)在線分析形成最終需要的數(shù)據(jù)落地到ES集群中;

此系統(tǒng)大大提升了我們定位解決問(wèn)題的效率。

 

每日福利更多>>

廣州友好合作城市韓國(guó)蔚山來(lái)穗推廣,白云機(jī)場(chǎng)至蔚山航線有望年內(nèi)開(kāi)通 真實(shí)車(chē)主泣血忠告:傳祺M8乾崑治好我的MPV PTSD! 五菱銀標(biāo)全新MPV諜照曝光,三排7座,插混系統(tǒng)更省錢(qián) 豐田普銳斯25年不換“新裝”?2026款北美低調(diào)上市,油耗仍是王牌 bp pulse與小鵬汽車(chē)合作的首座超充站落地廣州 濟(jì)南高新區(qū)章錦小學(xué):孩子們演示正確的洗手方法 傳祺M8:混動(dòng)油耗6.15L+綜合續(xù)航1200km,限時(shí)優(yōu)惠3.8萬(wàn)的豪華MPV 堅(jiān)守3.0T發(fā)動(dòng)機(jī) 全新寶馬M350諜照曝光 有望明年底投產(chǎn) 零陵:移風(fēng)易俗顯成效 巋山新風(fēng)撲面來(lái) 香港導(dǎo)演林奕華:梁祝舞臺(tái)劇的“專”“轉(zhuǎn)”“傳” 大眾ID.2量產(chǎn)版首曝:最親民純電掀背車(chē)即將登場(chǎng) 本田思域TYPE-R最終版,限量40臺(tái),轉(zhuǎn)型純電化? 美國(guó)FDA叫停吉利德HIV復(fù)方藥物臨床試驗(yàn) 從SUV王者到越野專家,長(zhǎng)城把″聚焦″這個(gè)方法論貫徹始終 國(guó)產(chǎn)煥新Model Y 或是特斯拉5月份澳大利亞銷量主要來(lái)源 小桔充電與比亞迪達(dá)成戰(zhàn)略合作 共建超充網(wǎng)絡(luò)開(kāi)放生態(tài) 一汽奧迪Q6L e-tron:讓華為智駕有“德味”,比“堆料”更懂本質(zhì) 蔚來(lái)精細(xì)化管理研發(fā)投入:CBU機(jī)制推行后,非必要研發(fā)項(xiàng)目不予立項(xiàng) 蘋(píng)果iPhone 13 5G手機(jī)128GB午夜色到手價(jià)1584元 多彩小直屏vivo S30系列發(fā)布 官方稱vivo X Fold5 將打破 X Fold3最輕記錄 榮耀 Earbuds 4i 耳機(jī)首銷:50dB 降噪、11mm 鍍鈦低音單元,249 元 帕沃森摸魚(yú)戰(zhàn)士手機(jī)殼限時(shí)特惠9.1元 榮耀進(jìn)軍機(jī)器人!手機(jī)廠商扎堆機(jī)器人賽道 環(huán)球、華納和索尼音樂(lè)正與兩初創(chuàng)公司磋商AI音樂(lè)權(quán)限 小米618推出線下主題科技展,國(guó)內(nèi)首款自主研發(fā)3 nm旗艦亮相展出 東風(fēng)汽車(chē)賀琳曼詳解車(chē)載光通信的技術(shù)研究與應(yīng)用實(shí)踐 大眾報(bào)業(yè)集團(tuán)駐地媒體聯(lián)合采訪團(tuán)走進(jìn)山東鳳凰制藥股份有限公司 滬深兩市今日成交額合計(jì)1.19萬(wàn)億,比亞迪成交額居首 吉利集團(tuán)旗下電池公司吉曜通行:預(yù)計(jì)到2027年形成70GWh電池產(chǎn)能規(guī)模
主站蜘蛛池模板: 冰晶石|碱性嫩黄闪蒸干燥机-有机垃圾烘干设备-草酸钙盘式干燥机-常州市宝康干燥 | 婚博会2024时间表_婚博会门票领取_婚博会地址-婚博会官网 | 上海小程序开发-小程序制作-上海小程序定制开发公司-微信商城小程序-上海咏熠 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 合肥钣金加工-安徽激光切割加工-机箱机柜加工厂家-合肥通快 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 陕西视频监控,智能安防监控,安防系统-西安鑫安5A安防工程公司 | 河南凯邦机械制造有限公司 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | NM-02立式吸污机_ZHCS-02软轴刷_二合一吸刷软轴刷-厦门地坤科技有限公司 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 绿叶|绿叶投资|健康产业_绿叶投资集团有限公司 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 深圳公司注册-工商注册公司-千百顺代理记账公司 | 厂厂乐-汇聚海量采购信息的B2B微营销平台-厂厂乐官网 | R507制冷剂,R22/R152a制冷剂厂家-浙江瀚凯制冷科技有限公司 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 协议书_协议合同格式模板范本大全| 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 烟台条码打印机_烟台条码扫描器_烟台碳带_烟台数据采集终端_烟台斑马打印机-金鹏电子-金鹏电子 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 短信营销平台_短信群发平台_106短信发送平台-河南路尚 | 喷涂流水线,涂装流水线,喷漆流水线-山东天意设备科技有限公司 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 西安耀程造价培训机构_工程预算实训_广联达实作实操培训 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 垃圾处理设备_餐厨垃圾处理设备_厨余垃圾处理设备_果蔬垃圾处理设备-深圳市三盛环保科技有限公司 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 |