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

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

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

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

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

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

易車的大促首秀

在易車的 818 狂歡節(jié)中,數(shù)據(jù)庫的應(yīng)用場景有很多,其中實時數(shù)據(jù)看板是主要的應(yīng)用業(yè)務(wù)之一。看板可以實時展示易車 818 購車節(jié)的專題、活動、流量、線索、互動等數(shù)據(jù)表現(xiàn),是大數(shù)據(jù)平臺的整體數(shù)據(jù)輸出。

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

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

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

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

在情勢急迫下,田震想到了 TiDB。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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