30天完成數(shù)據(jù)庫(kù)替換 頂住10倍大促流量壓力,TiDB+易車(chē)是如何做到的?

導(dǎo)語(yǔ):一年一度的雙十一又雙叒叕來(lái)了,給技術(shù)人最好的禮物就是大促技術(shù)指南! 而經(jīng)過(guò)這些年的發(fā)展,大促早已不僅僅局限于電商行業(yè),現(xiàn)在各行各業(yè)其實(shí)都會(huì)采用類似方式做運(yùn)營(yíng)活動(dòng),汽車(chē)界有 818,電商有 618 、11.11 等等,各種各樣的大促場(chǎng)景,對(duì)包括數(shù)據(jù)庫(kù)在內(nèi)的基礎(chǔ)軟件提出了很多新挑戰(zhàn),同時(shí)也積累了諸多最佳實(shí)踐。

在雙十一到來(lái)前,PingCAP 與汽車(chē)之家、易車(chē)網(wǎng)、京東、中通等用戶展開(kāi)一系列深入探討,希望為大家揭秘逐年飆升的銷(xiāo)量背后隱藏著什么樣的技術(shù)難題?用什么技術(shù)架構(gòu)才能平穩(wěn)地扛住流量洪峰?

汽車(chē)界的“大促”狂歡節(jié)

成立于 2000 年的易車(chē),是國(guó)內(nèi)最早一批汽車(chē)互聯(lián)網(wǎng)平臺(tái)企業(yè)之一,為汽車(chē)用戶提供專業(yè)、豐富的互聯(lián)網(wǎng)資訊服務(wù),提升用戶在選車(chē)、購(gòu)車(chē)、用車(chē)和換車(chē)過(guò)程中的全程體驗(yàn)。

在今年“ 818 ” 期間,易車(chē)與浙江衛(wèi)視聯(lián)合推出了一臺(tái)綜合汽車(chē)工藝秀、明星歌舞演出和明星綜藝秀的車(chē)界“春晚”——“易車(chē)超級(jí) 818 汽車(chē)狂歡夜”。在為汽車(chē)用戶帶來(lái)視聽(tīng)盛宴、購(gòu)車(chē)福利的同時(shí),晚會(huì)還推出超 150 臺(tái)半價(jià)車(chē)的超值福利,觀眾可邊看晚會(huì)邊搶 5 折售賣(mài)的好車(chē),同時(shí)還有購(gòu)車(chē)紅包、抵扣券、車(chē)款直降等多重優(yōu)惠,得到實(shí)實(shí)在在的購(gòu)車(chē)福利。截至晚會(huì)結(jié)束,全平臺(tái)觀看直播人次達(dá)2.24億,獲得線上訂單4.39萬(wàn),累計(jì)成交額(GMV)64.2億元。

易車(chē)的大促首秀

在易車(chē)的 818 狂歡節(jié)中,數(shù)據(jù)庫(kù)的應(yīng)用場(chǎng)景有很多,其中實(shí)時(shí)數(shù)據(jù)看板是主要的應(yīng)用業(yè)務(wù)之一??窗蹇梢詫?shí)時(shí)展示易車(chē) 818 購(gòu)車(chē)節(jié)的專題、活動(dòng)、流量、線索、互動(dòng)等數(shù)據(jù)表現(xiàn),是大數(shù)據(jù)平臺(tái)的整體數(shù)據(jù)輸出。

由于易車(chē)的這場(chǎng)汽車(chē)狂歡夜是臺(tái)網(wǎng)互動(dòng)的直播活動(dòng),搖一搖(紅包、半價(jià)車(chē)、易車(chē)幣)和主會(huì)場(chǎng)分會(huì)場(chǎng)直播節(jié)目的投票都是用戶參與度最高、數(shù)據(jù)流量最大的環(huán)節(jié)。在整個(gè)活動(dòng)過(guò)程中,不僅要求數(shù)據(jù)庫(kù)能夠存儲(chǔ)海量數(shù)據(jù),同時(shí)還要求能夠應(yīng)對(duì)高并發(fā)、低延遲等場(chǎng)景需求。這里的數(shù)據(jù)庫(kù)不僅會(huì)作為數(shù)據(jù)存儲(chǔ)的介質(zhì),還會(huì)作為實(shí)時(shí)計(jì)算的數(shù)據(jù)源頭,配合流量數(shù)據(jù),實(shí)現(xiàn)秒級(jí)數(shù)據(jù)實(shí)時(shí)播報(bào)。

數(shù)據(jù)庫(kù)和 Flink 是整個(gè)系統(tǒng)中非常重要的兩個(gè)組件,F(xiàn)link 的數(shù)據(jù)來(lái)源包括數(shù)據(jù)庫(kù)和業(yè)務(wù)流量數(shù)據(jù),所以數(shù)據(jù)庫(kù)不僅要滿足數(shù)據(jù)秒級(jí)實(shí)時(shí)推送,還要支持 Flink 高并發(fā)的讀寫(xiě)請(qǐng)求。

易車(chē)數(shù)據(jù)庫(kù)負(fù)責(zé)人田震坦言,易車(chē)今年是第一次做大促,沒(méi)有太多經(jīng)驗(yàn),量也不好預(yù)估,很多需求都是在最后才提出。為了保險(xiǎn)起見(jiàn),DBA 團(tuán)隊(duì)在設(shè)計(jì)大促方案時(shí)做了降級(jí)方案,但誰(shuí)都不希望真的實(shí)施降級(jí),這對(duì)用戶的體驗(yàn)太不友好。所以整個(gè) DBA 團(tuán)隊(duì)將主要精力放在壓測(cè)上,并按照平時(shí)的兩個(gè)數(shù)量級(jí)(100倍)來(lái)規(guī)劃數(shù)據(jù)庫(kù)壓測(cè)方案。

一開(kāi)始,易車(chē)考慮的首選數(shù)據(jù)庫(kù)依然是 MySQL。但在壓測(cè)過(guò)程中,為了保證計(jì)算結(jié)果的實(shí)時(shí)性,實(shí)時(shí)任務(wù)會(huì)頻繁對(duì)數(shù)據(jù)庫(kù)進(jìn)行大批量數(shù)據(jù)寫(xiě)入,MySQL 主從延遲高,極端情況下引起的 MySQL 主從切換,切換時(shí)間過(guò)長(zhǎng),導(dǎo)致數(shù)據(jù)庫(kù)出現(xiàn)短暫不可用狀態(tài)。同時(shí),實(shí)時(shí)任務(wù)會(huì)持續(xù)寫(xiě)入大量數(shù)據(jù),引起磁盤(pán)爆滿。在分秒必爭(zhēng)的直播過(guò)程中這肯定是無(wú)法容忍的。

在情勢(shì)急迫下,田震想到了 TiDB。

“在游泳中學(xué)游泳” TiDB 臨危受命

實(shí)際上,田震很早就接觸過(guò) TiDB ,那時(shí)候他一度認(rèn)為 TiDB 是一款海外產(chǎn)品,了解 TiDB 主要也是從海外社區(qū)開(kāi)始的。但出于謹(jǐn)慎的原因,田震希望將產(chǎn)品研究透徹再正式上線。本次大促給了雙方合作一個(gè)完美的契機(jī),他形容這一過(guò)程就像是“在游泳中學(xué)游泳”。

TiDB 社區(qū)的技術(shù)支持給了易車(chē) DBA 們非常重要的幫助,從七月正式立項(xiàng),僅用了不到一個(gè)月時(shí)間就完成了選型、方案設(shè)計(jì)、壓測(cè)、上線部署,并在“818”中有驚無(wú)險(xiǎn)地將大促流量平穩(wěn)承載過(guò)來(lái)。

30天完成數(shù)據(jù)庫(kù)替換 頂住10倍大促流量壓力,TiDB+易車(chē)是如何做到的?

818 汽車(chē)狂歡數(shù)據(jù)看板業(yè)務(wù)架構(gòu)圖

在整個(gè) 818 活動(dòng)中,TiDB 被用作 818 汽車(chē)狂歡節(jié)數(shù)據(jù)看板的核心數(shù)據(jù)庫(kù)。易車(chē)準(zhǔn)備了兩套 TiDB 集群,和實(shí)時(shí)計(jì)算的主備方案一一對(duì)應(yīng)。業(yè)務(wù)研發(fā)通過(guò)雙寫(xiě)的方式把數(shù)據(jù)同時(shí)寫(xiě)入兩個(gè)集群,一部分業(yè)務(wù)的查詢連接集群 1 ,另一部分業(yè)務(wù)的查詢連接集群 2,當(dāng)其中一個(gè)集群出現(xiàn)問(wèn)題,應(yīng)用端就會(huì)切換到另外一個(gè)集群。兩個(gè) TiDB 集群都是部署了 3 個(gè) TiDB Server、3 個(gè) PD Server、6 個(gè) TiKV 節(jié)點(diǎn)、2 個(gè) TiFlash 節(jié)點(diǎn)。此外,還準(zhǔn)備了 4 臺(tái)機(jī)器做擴(kuò)容以免數(shù)據(jù)量暴漲集群支撐不了。

最終,易車(chē) 818 汽車(chē)狂歡節(jié)期間數(shù)據(jù)量達(dá)到了平時(shí)的 10 倍以上,在直播最后蔡徐坤出場(chǎng)時(shí),數(shù)據(jù)庫(kù)流量更是直接翻了四倍,差點(diǎn)啟用事先準(zhǔn)備好兜底用的一鍵擴(kuò)容方案。在整個(gè)過(guò)程中,818 汽車(chē)狂歡數(shù)據(jù)看板業(yè)務(wù) SQL 999 始終控制在 8ms 以內(nèi),SQL 99 在 3ms 左右,QPS 達(dá)到 62k。

30天完成數(shù)據(jù)庫(kù)替換 頂住10倍大促流量壓力,TiDB+易車(chē)是如何做到的?

紅包搖一搖業(yè)務(wù)架構(gòu)圖

同時(shí),TiDB 也作為容災(zāi)方案被應(yīng)用在紅包搖一搖業(yè)務(wù)中,避免由于業(yè)務(wù)流量暴漲引起 MySQL 不可用的情況。一旦發(fā)生不可用,業(yè)務(wù)方可以直接將數(shù)據(jù)庫(kù)切換到 TiDB。TiDB 在整個(gè)業(yè)務(wù)中需要作為數(shù)據(jù)源、實(shí)時(shí)計(jì)算維表和實(shí)時(shí)計(jì)算結(jié)果存儲(chǔ)引擎三個(gè)角色。TiDB 通過(guò) TiCDC 將數(shù)據(jù)實(shí)時(shí)推送到 Kafka 中,為了保證 TiCDC 穩(wěn)定高效,易車(chē)為 TiDB 中的每個(gè)庫(kù)創(chuàng)建了一個(gè) TiCDC 任務(wù),將數(shù)據(jù)實(shí)時(shí)推送到指定 Kafka 中,然后 Flink 負(fù)責(zé)將同一個(gè) TOPIC 中的屬于不同庫(kù)表的數(shù)據(jù)進(jìn)行解析,分流到庫(kù)表對(duì)應(yīng)的 TOPIC 中,提供給實(shí)時(shí)計(jì)算業(yè)務(wù)使用。實(shí)時(shí)計(jì)算任務(wù)消費(fèi) Kafka 中的 TiDB 數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯計(jì)算,同時(shí)還需要從 TiDB 中查詢對(duì)應(yīng)的維度數(shù)據(jù),最終將計(jì)算結(jié)果再輸出到 TiDB 中。

高速增長(zhǎng)的挑戰(zhàn):技術(shù)棧統(tǒng)一

大促的極限場(chǎng)景總能發(fā)現(xiàn)一些平時(shí)注意不到的問(wèn)題,在易車(chē)的高速發(fā)展中,很多業(yè)務(wù)為了快速迭代、迅速上線,引入了非常多的技術(shù)棧,如 Lambda 、 Kappa 等大數(shù)據(jù)架構(gòu),Kylin、Druid、Clickhouse 等實(shí)時(shí)數(shù)倉(cāng)等等。但易車(chē) DBA 團(tuán)隊(duì)卻只有 6個(gè)人,管理如此多的技術(shù)棧無(wú)疑是一個(gè)很大的挑戰(zhàn)。

統(tǒng)一技術(shù)棧成為易車(chē) DBA 團(tuán)隊(duì)的最佳選擇,借著這次大促的機(jī)會(huì),易車(chē)希望用 TiDB 上線取代 Kylin、Druid、Clickhouse ,簡(jiǎn)化技術(shù)棧,DBA 團(tuán)隊(duì)也能將注意力放回專職工作上。

TiDB 的 HTAP 架構(gòu)是一個(gè)混合了交易型事務(wù)和分析處理的融合架構(gòu),由于都是在同一個(gè)架構(gòu)、同一套數(shù)據(jù)中,解決了易車(chē)實(shí)時(shí)數(shù)倉(cāng)數(shù)據(jù)流延遲的問(wèn)題。數(shù)據(jù)不用再?gòu)?OLTP 數(shù)據(jù)庫(kù)復(fù)制出來(lái),經(jīng)過(guò)漫長(zhǎng)的 ETL 清洗等過(guò)程進(jìn)入分析工具。

而 TiDB 對(duì) MySQL 的完美兼容,對(duì) DBA 和開(kāi)發(fā)者意味著不需要做什么改變,只要會(huì) SQL 就能使用。在以往應(yīng)用 Hadoop 或 Spark 時(shí),由于學(xué)習(xí)成本比較高,對(duì)使用造成了一定壁壘。

經(jīng)此一役,易車(chē)的業(yè)務(wù)方對(duì) TiDB 平添了許多期待與信任。未來(lái),易車(chē)的廣告、媒體平臺(tái)、網(wǎng)站、投放數(shù)據(jù)、廣告效果都希望能夠?qū)崟r(shí)看到,田震希望借用 TiDB 覆蓋易車(chē)整個(gè)混合技術(shù)棧的場(chǎng)景,與其他數(shù)據(jù)流進(jìn)行打通,這些都需要 TiDB HTAP 對(duì)實(shí)時(shí)數(shù)倉(cāng)進(jìn)行支持。

大促對(duì)于企業(yè)而言,除了支持業(yè)務(wù)創(chuàng)新,也是一次對(duì)自身技術(shù)架構(gòu)的大練兵和全鏈路演練。通過(guò)大促的極致考驗(yàn),企業(yè)的 IT 架構(gòu)、組織流程、人才技能都獲得了大幅提升。而在大促中的經(jīng)驗(yàn)和思考,也會(huì)加速企業(yè)日常的業(yè)務(wù)創(chuàng)新節(jié)奏,提升技術(shù)驅(qū)動(dòng)的創(chuàng)新效率,打造增長(zhǎng)新引擎。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )