導(dǎo)語:一年一度的雙十一又雙叒叕來了,給技術(shù)人最好的禮物就是大促技術(shù)指南! 而經(jīng)過這些年的發(fā)展,大促早已不僅僅局限于電商行業(yè),現(xiàn)在各行各業(yè)其實(shí)都會(huì)采用類似方式做運(yùn)營(yíng)活動(dòng),汽車界有 818,電商有 618 、11.11 等等,各種各樣的大促場(chǎng)景,對(duì)包括數(shù)據(jù)庫(kù)在內(nèi)的基礎(chǔ)軟件提出了很多新挑戰(zhàn),同時(shí)也積累了諸多最佳實(shí)踐。
在雙十一到來前,PingCAP 與汽車之家、易車網(wǎng)、京東、中通等用戶展開一系列深入探討,希望為大家揭秘逐年飆升的銷量背后隱藏著什么樣的技術(shù)難題?用什么技術(shù)架構(gòu)才能平穩(wěn)地扛住流量洪峰?
818 全球汽車節(jié)
中國(guó)互聯(lián)網(wǎng)有三大購(gòu)物節(jié),11.11、618 還有 818。
618 與 11.11 都是大家非常熟悉的,818 則比較特殊,它是專為購(gòu)車用戶打造的節(jié)日狂歡。汽車之家 “818 全球汽車夜” ,就是由汽車之家與湖南衛(wèi)視聯(lián)手打造的汽車行業(yè)頂級(jí)盛典,到今年已經(jīng)成功舉辦三屆。
相對(duì)于其它兩個(gè)購(gòu)物節(jié),818 可以說是全世界唯一的,其他任何汽車最發(fā)達(dá)的國(guó)家也沒有這類活動(dòng)。對(duì)此,汽車之家資深工程師張帆解釋道:“我個(gè)人感覺,現(xiàn)在做電商和線上交易的這一塊,地球上應(yīng)該沒有哪個(gè)國(guó)家能超越中國(guó)。而為什么汽車之家是最早來做這個(gè)事情的呢?首先,汽車之家是全球訪問量最大的汽車類型網(wǎng)站。正是有著這樣巨大的凝聚力與用戶基礎(chǔ),汽車之家才能做這個(gè)事情,才能在廣大用戶中帶來這樣的影響力。此外,這個(gè)活動(dòng)的初衷就是希望為汽車用戶和汽車愛好者,提供一個(gè)類似于 11.11、618 一樣真正能在買車的時(shí)候得到優(yōu)惠的機(jī)會(huì),因此廣受用戶歡迎。”
從 2019 年開始,汽車之家與湖南衛(wèi)視合作的 “818 全球汽車夜” 已經(jīng)持續(xù)了三年。與傳統(tǒng)大促不同,818 全球汽車夜通過電視直播和與 APP 活動(dòng)同步的方式將汽車購(gòu)物節(jié)推到高峰,為 8 月的汽車行業(yè)帶來一場(chǎng)購(gòu)車盛宴。
818 直播活動(dòng)帶來的挑戰(zhàn)
張帆坦言,在汽車之家的 818 活動(dòng)中,直播環(huán)節(jié)是最難的。與錄播完全不同,直播的過程中,會(huì)有非常多的變數(shù),也許會(huì)有節(jié)目時(shí)間的拉長(zhǎng),也許會(huì)有主持人的即興發(fā)揮,也許后臺(tái)還會(huì)有一些突發(fā)的數(shù)據(jù)處理。而作為整場(chǎng)晚會(huì)的亮點(diǎn),一元秒殺車、紅包抽獎(jiǎng)以及超級(jí)大錦鯉等活動(dòng),是用戶參與度最高,峰值流量出現(xiàn)的環(huán)節(jié)。這些活動(dòng)開始與結(jié)束的時(shí)機(jī),必須以秒級(jí)的精度來讓前臺(tái)、后臺(tái)配合。
直播當(dāng)天,汽車之家通常會(huì)專門派一支團(tuán)隊(duì)到湖南衛(wèi)視直播現(xiàn)場(chǎng),通過手機(jī)、電話、5G 對(duì)講機(jī)、在線視頻連線等多路通訊與位于北京的“作戰(zhàn)室”之間實(shí)時(shí)溝通。由于直播信號(hào)通常比現(xiàn)場(chǎng)信號(hào)晚一分鐘,當(dāng)前面主持人在說三二一秒殺開始后,后臺(tái)其實(shí)只有一分鐘的準(zhǔn)備時(shí)間。一分鐘后,就要讓電視機(jī)前的上百萬用戶在手機(jī)上真的能看到三、二、一,秒殺的按紐點(diǎn)亮,可以去按下它參與活動(dòng)。這個(gè)過程完全不能出錯(cuò),必須實(shí)現(xiàn)一比一同步。
整個(gè)過程對(duì)于后方“作戰(zhàn)室”中的張帆他們來說,感受非常直觀。這個(gè)“作戰(zhàn)室”內(nèi)有數(shù)據(jù)大屏、監(jiān)控大屏,以及現(xiàn)場(chǎng)直播的信號(hào)和直播看到的電視信號(hào)。每一次秒殺開始或紅包開始時(shí),監(jiān)控大屏中的幾條線就會(huì)隨著參與人數(shù)和互動(dòng)次數(shù)的增加呈現(xiàn)斷崖式的波動(dòng)。這些代表著業(yè)務(wù)指標(biāo)的線被他們稱作“心電圖”,而在直播中某些高人氣明星出場(chǎng)時(shí),這個(gè)波動(dòng)甚至?xí)绕渌麜r(shí)段高 2-4倍多。
與此同時(shí),現(xiàn)場(chǎng)的數(shù)據(jù)大屏也在以 1-2 秒的速度,實(shí)時(shí)展示大約 20 項(xiàng)數(shù)據(jù)指標(biāo),包括活動(dòng)參與人數(shù)、用戶互動(dòng)次數(shù)、獎(jiǎng)品發(fā)放情況,甚至細(xì)化到這一輪一元秒殺車活動(dòng)參與的用戶有哪些人,在什么地方,中了什么車。
這些實(shí)時(shí)的數(shù)據(jù)不僅會(huì)被后臺(tái)工作人員看到,同時(shí)數(shù)據(jù)也會(huì)實(shí)時(shí)展示到直播現(xiàn)場(chǎng)。這對(duì)現(xiàn)場(chǎng)活動(dòng)的氣氛起到了非常重要的烘托作用。舉例來說,當(dāng)用戶在屏幕前看到這場(chǎng)晚會(huì)人氣火爆,并真的有許多人參與到一元搶車互動(dòng)中,這對(duì)他而言就相當(dāng)于一個(gè)反向激勵(lì),繼而也參與其中。
在這個(gè)過程中,實(shí)時(shí)數(shù)據(jù)大屏不僅要解決實(shí)時(shí)交易問題,還要將實(shí)時(shí)分析數(shù)據(jù)反饋給現(xiàn)場(chǎng)的主持人。當(dāng)主持人幾乎實(shí)時(shí)地將中獎(jiǎng)信息公布出來時(shí),晚會(huì)氣氛也推到了高位,這對(duì)于吸引更多人參與其中起到了關(guān)鍵作用。而隨著秒殺的車越來越貴,越靠后系統(tǒng)所承受的波峰也越高。相對(duì)于汽車之家平時(shí)的業(yè)務(wù),晚會(huì)經(jīng)歷的流量翻了十倍都不止,對(duì)整個(gè)系統(tǒng)的壓力不言而喻。
汽車之家大促解決之道——分布式系統(tǒng)全家桶
大促場(chǎng)景通常要求系統(tǒng)具備快速擴(kuò)展與高可用的能力,而分布式系統(tǒng)天然就具有這種能力。汽車之家采用了全家桶式的分布式系統(tǒng),包括數(shù)據(jù)庫(kù)、隊(duì)列、緩存等。
其中,分布式數(shù)據(jù)庫(kù)主要表現(xiàn)出三種能力,分別是水平高擴(kuò)展性、容災(zāi)能力、云端能力。基于分布式架構(gòu)的 TiDB 從一開始就支持這些特性,并在汽車之家的場(chǎng)景中得到了很好的驗(yàn)證。
汽車之家數(shù)據(jù)庫(kù)負(fù)責(zé)人陶會(huì)祥表示,傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),如 MySQL 、SQL Server 等,在數(shù)據(jù)量特別大時(shí),常常會(huì)碰到一些數(shù)據(jù)庫(kù)單機(jī)承載能力上限的問題。 TiDB 從 TiDB Server,到 TiKV 、PD 都可以進(jìn)行水平擴(kuò)展,性能隨著水平擴(kuò)展可以得到線性提升,很好地滿足了汽車之家對(duì)于性能和擴(kuò)展性的要求。
818 對(duì)于汽車之家而言是一年中最重要的活動(dòng),系統(tǒng)必須保障絕對(duì)的可靠穩(wěn)定。所以這次 818 活動(dòng),汽車之家在公有云上采用了同城三中心部署 TiDB 集群,避免萬一某一個(gè)機(jī)房出了問題,影響整體活動(dòng)的服務(wù)質(zhì)量。
同城三數(shù)據(jù)中心方案,即同城有三個(gè)機(jī)房部署 TiDB 集群,同城三數(shù)據(jù)中心間的數(shù)據(jù)同步通過集群自身內(nèi)部( Raft 協(xié)議)完成。同城三數(shù)據(jù)中心可同時(shí)對(duì)外進(jìn)行讀寫服務(wù),任意一個(gè)數(shù)據(jù)中心故障時(shí),集群能自動(dòng)恢復(fù)服務(wù),不需要人工介入,并能保證數(shù)據(jù)一致性。TiDB 同城三中心架構(gòu)在 818 晚會(huì)期間順利地支撐了業(yè)務(wù),運(yùn)行表現(xiàn)十分穩(wěn)定。
汽車之家 818 TiDB 集群整體架構(gòu)圖
本次 818 項(xiàng)目中,汽車之家使用了 TiDB 最新的版本 5.1.1,MySQL 的版本是 Percona 5.7.25;
TiFlash 是 TiDB HTAP 形態(tài)的關(guān)鍵組件,它是 TiKV 的列存擴(kuò)展,主要用于 OLAP 業(yè)務(wù)。TiFlash 跨區(qū)部署提高容災(zāi)能力,汽車之家利用 TiFlash 解決統(tǒng)計(jì)分析類的 SQL,實(shí)時(shí)展示在大屏;
TiCDC 是一款通過拉取 TiKV 變更日志實(shí)現(xiàn)的 TiDB 增量數(shù)據(jù)同步工具,具有將數(shù)據(jù)還原到與上游任意 TSO 一致狀態(tài)的能力,支持其他系統(tǒng)訂閱數(shù)據(jù)變更。 TiCDC 跨區(qū)部署, 將 TiDB 集群數(shù)據(jù)實(shí)時(shí)同步至下游的 MySQL 數(shù)據(jù)庫(kù),作為故障應(yīng)急的備份,實(shí)現(xiàn)業(yè)務(wù)容災(zāi)能力的提升;
MySQL 跨區(qū)部署主從,作為 TiDB 集群的應(yīng)急、降級(jí)之用,實(shí)現(xiàn)業(yè)務(wù)容災(zāi)能力的提升。
數(shù)據(jù)庫(kù)壓測(cè)
在 818 活動(dòng)前,數(shù)據(jù)庫(kù)團(tuán)隊(duì)聯(lián)合業(yè)務(wù)方一起做了一輪一輪嚴(yán)格的故障演練壓測(cè),確保后端的高可用。
陶會(huì)祥透露,汽車之家的故障演練分為多種,光數(shù)據(jù)庫(kù)就會(huì)演練主庫(kù)故障和機(jī)房故障,一共做了三輪。每一輪測(cè)試中 TiDB 的表現(xiàn)都非常優(yōu)秀,KV 故障基本在幾十秒,只需 20 秒即可恢復(fù),即使機(jī)房故障也能在一分鐘之內(nèi)進(jìn)行自動(dòng)切換。
為了保障活動(dòng)平穩(wěn)支撐,PingCAP 社區(qū)技術(shù)專家連續(xù)三年為汽車之家提供了社區(qū)技術(shù)支持。在今年的壓測(cè)環(huán)節(jié)中,社區(qū)技術(shù)專家與汽車之家 DBA 一起完成了調(diào)優(yōu),良好地解決了寫入熱點(diǎn)問題,將性能翻了好幾倍。最終在 818 高峰時(shí)期,TiDB 順利支撐了晚會(huì)期間 APP 用戶 9048 萬次互動(dòng),并抗住了最大每秒 40 萬行的寫入,SQL 99 穩(wěn)定在 30ms 以下。TiCDC 性能表現(xiàn)也十分強(qiáng)勁,向下游 MySQL 同步速度高達(dá) 13 萬行每秒 ??缰行牡?TiFlash MPP 架構(gòu),為大屏近實(shí)時(shí)展示助力總次數(shù)、秒殺和搖獎(jiǎng)的每輪參與用戶等信息提供了強(qiáng)有力的支撐。
陶會(huì)祥都對(duì)大促中 TiDB 的表現(xiàn)給予十分高的評(píng)價(jià):TiDB 在這種十億以上的數(shù)據(jù)量級(jí)場(chǎng)景下是非常適合的,一是 TiDB 的分析能力是實(shí)時(shí)的,二是 TiDB 的數(shù)據(jù)存儲(chǔ)能力比傳統(tǒng)數(shù)據(jù)庫(kù),如 SQL Server 之類強(qiáng)太多。 TiDB 結(jié)合了傳統(tǒng)數(shù)倉(cāng)和傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)點(diǎn),非常適合應(yīng)用在大促這種量級(jí)的業(yè)務(wù)環(huán)境。
未來規(guī)劃
汽車之家的數(shù)據(jù)庫(kù)團(tuán)隊(duì)在本次 818 大促中,也總結(jié)出了非常多的最佳實(shí)踐:
如同城三中心五副本架構(gòu),機(jī)房之間延遲應(yīng)當(dāng)盡量小,最好控制在 2ms 以內(nèi);
OLTP 的業(yè)務(wù),通常壓測(cè)瓶頸在于 TiKV 的磁盤 IO 上,對(duì)于普通 SSD ,可以做成 RAID0 來提升 IOPS;
一旦某個(gè)可用區(qū)整體故障,正常不需要手動(dòng)干預(yù),但是為了避免性能下降嚴(yán)重,建議手動(dòng)將五副本調(diào)整為三副本;
合理設(shè)計(jì)表結(jié)構(gòu)和索引,盡量避免熱點(diǎn)問題,和業(yè)務(wù)一起做好充分壓測(cè),壓測(cè)期間盡早發(fā)現(xiàn)問題并優(yōu)化。
基于本次活動(dòng)中的良好表現(xiàn),陶會(huì)祥表示,汽車之家接下來還會(huì)在更多業(yè)務(wù)中推進(jìn) TiDB 上線。比如以前汽車之家的很多數(shù)據(jù)會(huì)跑在 Hive 里,需要到第二天才能知道昨天發(fā)生了什么事。如果應(yīng)用 TiDB ,可以針對(duì)運(yùn)營(yíng)需要的用戶數(shù)據(jù)、業(yè)務(wù)指標(biāo)的分析,去做秒級(jí)的準(zhǔn)實(shí)時(shí)推送,預(yù)計(jì)能夠?qū)⑦@一時(shí)間壓縮到 5-10秒。業(yè)務(wù)方可以立即知道上一刻用戶有什么變化,數(shù)據(jù)有什么更新。
(免責(zé)聲明:本網(wǎng)站內(nè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)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )