一年一度的京東11.11又雙叒叕來了,給技術(shù)人最好的禮物就是技術(shù)指南!而經(jīng)過這些年的發(fā)展,購(gòu)物節(jié)早已不僅僅局限于電商行業(yè),現(xiàn)在各行各業(yè)其實(shí)都會(huì)采用類似方式做運(yùn)營(yíng)活動(dòng),汽車界有 818,小米有米粉節(jié)等等,這對(duì)包括數(shù)據(jù)庫在內(nèi)的基礎(chǔ)軟件提出了很多新挑戰(zhàn),同時(shí)也積累了諸多最佳實(shí)踐。
在京東11.11到來前,PingCAP與汽車之家、易車網(wǎng)、京東、小米等用戶展開一系列深入探討,希望為大家揭秘逐年飆漲的銷量背后隱藏著什么樣的技術(shù)難題?用什么技術(shù)架構(gòu)才能平穩(wěn)地抗住流量洪峰?
京東11.11的技術(shù)挑戰(zhàn)
每年的 618、11.11對(duì)于京東而言都是一次大考,而京東云作為京東集團(tuán)技術(shù)保障的基石,在此期間需要扛住京東零售核心業(yè)務(wù)和京東物流系統(tǒng) PB 級(jí)別的數(shù)據(jù)增長(zhǎng)壓力。面對(duì)每年京東11.11訂單量和成交額迅猛的增速,京東云數(shù)據(jù)庫作為大部分京東背后業(yè)務(wù)系統(tǒng)的核心,壓力自然不小。京東云資深產(chǎn)品經(jīng)理?xiàng)钅翆?duì)此深有感觸:許多和京東11.11有關(guān)的業(yè)務(wù)系統(tǒng)都需要數(shù)據(jù)庫的支持,如訂單、分析看板、報(bào)表數(shù)據(jù)、運(yùn)單數(shù)據(jù)等等。受商品活動(dòng)和優(yōu)惠時(shí)間的影響,用戶下單高峰往往在固定時(shí)間段,這些數(shù)據(jù)庫的訪問量會(huì)急速上升。他所在的數(shù)據(jù)庫團(tuán)隊(duì),從后臺(tái)監(jiān)控可以很明顯地看到一個(gè)個(gè)峰值。當(dāng)京東11.11全面開啟的瞬間,海量消費(fèi)者和訂單涌入,大量品牌和商家迅速創(chuàng)造了新的紀(jì)錄,CPU、QPS 等也開始飆升,有時(shí)候持續(xù)若干分鐘,有時(shí)候則會(huì)持續(xù)數(shù)小時(shí)不等。
如何做好保障?
京東云數(shù)據(jù)庫需要在京東11.11期間平穩(wěn)支撐京東集團(tuán)已經(jīng)上云的上千個(gè)核心業(yè)務(wù)系統(tǒng),前期的預(yù)案準(zhǔn)備和壓測(cè)、預(yù)案演練和實(shí)時(shí)監(jiān)控都是必不可少的環(huán)節(jié)。而京東云數(shù)據(jù)庫團(tuán)隊(duì)對(duì)此已經(jīng)積累起豐富的經(jīng)驗(yàn),他們將備戰(zhàn)分為 8 個(gè)步驟:(1)識(shí)別保障范圍;(2)業(yè)務(wù)量預(yù)估及預(yù)檢查;(3)預(yù)案整理;(4)監(jiān)控及報(bào)警梳理;(5)業(yè)務(wù)壓測(cè);(6)預(yù)案演練;(7)11.11值班;(8)技術(shù)復(fù)盤。根據(jù)以往經(jīng)驗(yàn),楊牧認(rèn)為京東11.11時(shí)的業(yè)務(wù)量會(huì)達(dá)到平時(shí)的 10 倍之多。這個(gè)數(shù)據(jù)量的峰值增長(zhǎng)必須準(zhǔn)備額外的資源來滿足,但由于京東云的數(shù)據(jù)庫已經(jīng)跑在云上,他們只需根據(jù)預(yù)先估計(jì)好的數(shù)據(jù)量做好資源規(guī)劃和分配,并做足壓力測(cè)試,確保后面數(shù)據(jù)庫的存儲(chǔ)容納量和性能就可以滿足要求。到流量洪峰真正到來時(shí),往往只需要靜靜等待就會(huì)平穩(wěn)度過,并不會(huì)出現(xiàn)什么極端情況。特別像京東物流大部分業(yè)務(wù)已經(jīng)上云,保障和準(zhǔn)備其實(shí)是無時(shí)無刻都在進(jìn)行中。云數(shù)據(jù)庫通過高可用架構(gòu)、自動(dòng)故障切換、彈性擴(kuò)容機(jī)制等一系列數(shù)據(jù)庫級(jí)別的技術(shù)手段,保證數(shù)據(jù)可備份,故障可切換,增量可擴(kuò)容,從容應(yīng)對(duì)京東11.11期間海量數(shù)據(jù)壓力。而在應(yīng)用 TiDB 后,這些工作變得更加簡(jiǎn)單。TiDB 采用的分布式架構(gòu)支撐海量數(shù)據(jù)擴(kuò)展,可以有效地解決單機(jī) MySQL 容量和性能的瓶頸問題。楊牧形容,在擴(kuò)容時(shí)只需根據(jù)業(yè)務(wù)方需要提前對(duì) TiDB、TiKV 進(jìn)行擴(kuò)容。而擴(kuò)容的工作也僅需在控制臺(tái)上點(diǎn)一點(diǎn)鼠標(biāo),然后安心地喝著茶等待就行了,大大提高了 DBA 的工作效率。同時(shí),TiDB 是開源的,不存在技術(shù)鎖定問題,也更容易在云上使用,甚至跨云部署。為了降低集團(tuán)內(nèi)部各團(tuán)隊(duì)使用 TiDB 的技術(shù)門檻,京東云與 PingCAP 聯(lián)合推出了云上的分布式數(shù)據(jù)庫 —— Cloud-TiDB,在京東云上提供 TiDB 服務(wù)。這樣一來,業(yè)務(wù)方所有和數(shù)據(jù)庫服務(wù)有關(guān)的事情不再需要設(shè)置自己的 DBA,完全委托給京東云即可。今年的 京東618 和 11.11 中,Cloud-TiDB 就已成功應(yīng)用于京東物流內(nèi)的物流業(yè)務(wù)費(fèi)用系統(tǒng)、物流大件分揀系統(tǒng)、運(yùn)單計(jì)提明細(xì)系統(tǒng)等多個(gè)業(yè)務(wù)中,應(yīng)用規(guī)模總體接近 6000 核,達(dá)到 30 個(gè)TiDB集群,在成本、效率和體驗(yàn)三大方面帶來了大幅提升。楊牧笑言,研發(fā)再也不用整天忙著優(yōu)化系統(tǒng)了,可以早點(diǎn)回家。運(yùn)維同學(xué)也不用再熬夜支持系統(tǒng)運(yùn)維,頭發(fā)都可以少掉幾根。
物流業(yè)務(wù)費(fèi)用系統(tǒng)
京東11.11中,大家買買買后最期盼的事情就是收到快遞。而在京東中,京東物流就承擔(dān)了將下單物品送到買家手中的職責(zé)。可想而知,京東物流業(yè)務(wù)費(fèi)用系統(tǒng)的數(shù)據(jù)量肯定非常大,幾個(gè)主表的數(shù)量分別是 20 億、50 億和 100 億,系統(tǒng)上線半年后數(shù)據(jù)翻倍到了 220 億。原先 MySQL 分庫分表的架構(gòu)就遇到了一些復(fù)雜的 SQL 不支持、跨分片統(tǒng)計(jì)報(bào)表難于實(shí)現(xiàn)等問題。
系統(tǒng)遷移到 TiDB 之后,整體的性能表現(xiàn)優(yōu)秀,寫入和更新的效率在 100 毫秒左右,查詢和 Sum 查詢只有二三十毫秒。一個(gè)幾百億數(shù)據(jù)量的系統(tǒng)從 MySQL 遷移到 TiDB,實(shí)際業(yè)務(wù)代碼零修改,系統(tǒng)只是更換了 JDBC 連接的用戶名和密碼,真正地實(shí)現(xiàn)了從 MySQL 到 TiDB 的零代碼修改和無縫遷移。TiDB 和 MySQL 良好的兼容性,降低了用戶的試錯(cuò)、測(cè)試和遷移的成本,且收益周期短,見效快。此外,楊牧特別指出,遷移到 TiDB 還給業(yè)務(wù)方帶來一個(gè)意外的驚喜。如果按兩年的周期計(jì)算,TiDB 的使用成本只有 MySQL 的37%。這主要是因?yàn)?TiDB 對(duì)數(shù)據(jù)的壓縮率非常好。比如在MySQL 里數(shù)據(jù)占到 10.8 TB,遷移到 TiDB 之后只有 3.2TB,而且這還是三副本的總數(shù)據(jù)量,TiDB 實(shí)實(shí)在在地幫助整個(gè)業(yè)務(wù)部分極大降低了 IT 的投入成本。
物流大件分揀系統(tǒng)
京東物流大件分揀系統(tǒng)的一些實(shí)時(shí)看板和核心報(bào)表跑在 MySQL 上。隨著數(shù)據(jù)量增加,而且 SQL 比較復(fù)雜,報(bào)表和看板的性能比較低,用戶體驗(yàn)不佳。分庫分表的方式對(duì)代碼侵入性比較大,架構(gòu)需要大幅調(diào)整,風(fēng)險(xiǎn)較高。
在 618 期間,京東物流采用TiDB 支撐業(yè)務(wù)的實(shí)時(shí)看板和核心報(bào)表,在 MySQL 和TiDB 之間,用自研的蜂巢系統(tǒng)進(jìn)行數(shù)據(jù)的準(zhǔn)實(shí)時(shí)同步。從 MySQL 遷移到 TiDB 后,總共數(shù)百個(gè)指標(biāo),整體性能實(shí)現(xiàn)了 8 倍提升。
運(yùn)單計(jì)提明細(xì)系統(tǒng)
運(yùn)單計(jì)提明細(xì)系統(tǒng)用來記錄部分運(yùn)單的明細(xì)數(shù)據(jù),每天的數(shù)據(jù)增長(zhǎng)在千萬級(jí)別,單表最大記錄接近200 億條。從數(shù)據(jù)量看用 MySQL 難以支撐,京東物流嘗試過使用 Presto,但使用成本比較高,后來使用 ElasticSearch 做查詢,但也存在著不穩(wěn)定的情況,維護(hù)工作量很大。
業(yè)務(wù)系統(tǒng)遷移到 TiDB 之后解決了海量數(shù)據(jù)的問題,TiDB 可以毫無壓力地支撐百億級(jí)的數(shù)據(jù)量。TiDB 成本比起以前使用的 MySQL + ElasticSearch 方案降低了 30%。TiDB 性能滿足業(yè)務(wù)的要求,從百億的單表里面查詢出業(yè)務(wù)數(shù)據(jù)的 TP99 大概在 500 毫秒左右。此外,TiDB 整個(gè)表結(jié)構(gòu)的調(diào)整修改操作非常簡(jiǎn)單,帶來了運(yùn)維敏捷和成本下降。經(jīng)過 618 、11.11 的嚴(yán)酷考驗(yàn),TiDB 在京東集團(tuán)的多個(gè) 0 級(jí)系統(tǒng)中應(yīng)用穩(wěn)定,沒有出現(xiàn)任何事故,各業(yè)務(wù)方反饋都比較好,已經(jīng)成為集團(tuán)內(nèi)部的標(biāo)桿案例。這也給了楊牧他們充足的信心,在接下來的時(shí)間中可以繼續(xù)在集團(tuán)內(nèi)部推動(dòng)使用 TiDB ,以技術(shù)的進(jìn)步推動(dòng)業(yè)務(wù)發(fā)展,預(yù)計(jì) 2021年底規(guī)模還將再翻一倍,達(dá)到 10000 核規(guī)模。
2025-04-29 22:24
2025-04-29 22:23
2025-04-29 22:22
2025-04-29 22:22
2025-04-29 22:21
2025-04-29 22:20
2025-04-29 22:19
2025-04-29 22:18
2025-04-29 22:17
2025-04-29 22:16