120萬(wàn)人同時(shí)在線考試,這么大的流量如何支撐?
三月原本是全國(guó)各地中小學(xué)生逐步開(kāi)啟新學(xué)期的日子,但這場(chǎng)突如其來(lái)的疫情使得1.8億中小學(xué)生只能紛紛在家開(kāi)啟“停課不停學(xué)”的學(xué)習(xí)生活,線上教育也順勢(shì)成為了這一特殊時(shí)期首選的學(xué)習(xí)方式。
但突如其來(lái)的流量洪峰,卻讓許多線上教育平臺(tái)力不從心。開(kāi)學(xué)不久,包括學(xué)習(xí)通、慕課網(wǎng)等在內(nèi)的多家在線教育平臺(tái)都出現(xiàn)了“卡頓”和“死機(jī)”的情況,“學(xué)習(xí)通崩了”這一詞條一度登上了微博熱搜。
與此同時(shí),阿里云教育領(lǐng)域客戶的擴(kuò)容需求也在飛速增長(zhǎng),其中數(shù)據(jù)庫(kù)擴(kuò)容需求更是十分強(qiáng)烈,阿里云數(shù)據(jù)庫(kù)通過(guò)分鐘級(jí)擴(kuò)容,保障了滬江教育、猿輔導(dǎo)、VIPKID、洋蔥學(xué)院等多家教育平臺(tái)的平穩(wěn),為學(xué)生們構(gòu)建起了線上戰(zhàn)“疫”的防火墻。
猿輔導(dǎo)是國(guó)內(nèi)知名在線教育機(jī)構(gòu),旗下有猿輔導(dǎo)、猿題庫(kù)、小猿搜題、小猿口算、斑馬英語(yǔ)五款核心在線教育APP,為學(xué)生和家長(zhǎng)提供在線輔導(dǎo)、拍照答疑、智能題庫(kù)、自動(dòng)批改等相關(guān)的智能教育服務(wù)。
作為K-12在線教育領(lǐng)域的首個(gè)獨(dú)角獸公司,猿輔導(dǎo)在疫情期間非但沒(méi)有出現(xiàn)卡頓、延遲等問(wèn)題,反而發(fā)起了一場(chǎng)120萬(wàn)學(xué)生同時(shí)在線的英語(yǔ)模擬考試,系統(tǒng)10分鐘內(nèi)直接出分,并生成智能診斷分析報(bào)告。
“為了提升百萬(wàn)人的答題體驗(yàn),猿輔導(dǎo)對(duì)使用的阿里云PolarDB云數(shù)據(jù)庫(kù)進(jìn)行了臨時(shí)彈性擴(kuò)容。”猿輔導(dǎo)運(yùn)維負(fù)責(zé)人張文治說(shuō),他們?cè)u(píng)估過(guò)很多數(shù)據(jù)庫(kù)產(chǎn)品,PolarDB性能好,能夠通過(guò)快速擴(kuò)容為用戶體驗(yàn)提供支持與保障。
01延時(shí)、卡頓、高成本,自建方案打不贏這場(chǎng)仗
在線教育行業(yè)面臨著海量的題庫(kù)、音視頻答題資料、用戶數(shù)據(jù)以及日志等巨大的數(shù)據(jù)存儲(chǔ)需求,這些都對(duì)猿輔導(dǎo)后臺(tái)數(shù)據(jù)存儲(chǔ)和處理能力都提出了嚴(yán)峻的要求。
猿輔導(dǎo)之前采用的是自建數(shù)據(jù)庫(kù)的解決方案,在周末或者在線模考的時(shí)候,同時(shí)在線人數(shù)會(huì)瞬間激增,原本的自建數(shù)據(jù)庫(kù)方案難以應(yīng)對(duì)這樣的訪問(wèn)峰值,導(dǎo)致大約三分之一的學(xué)生無(wú)法正常進(jìn)入在線考試。而答題的延時(shí)也從正常情況下的1秒之內(nèi)增長(zhǎng)到平均5秒,使得學(xué)生用戶的答題體驗(yàn)急劇下降。
與此同時(shí),猿輔導(dǎo)的用戶量每年飛速增長(zhǎng),自建MySQL數(shù)據(jù)庫(kù)的CPU利用率已經(jīng)達(dá)到了70%以上。此外,猿輔導(dǎo)的DBA原本由運(yùn)維人員兼職,但是面對(duì)這樣紛繁復(fù)雜的數(shù)據(jù)庫(kù)管理任務(wù),兼職DBA力不從心,而招聘專職DBA卻預(yù)計(jì)會(huì)需要每年至少100萬(wàn)的成本。
總之,自建數(shù)據(jù)庫(kù)方案難以應(yīng)對(duì)訪問(wèn)峰值,難以滿足業(yè)務(wù)高速發(fā)展的需求,并且難以管理,且會(huì)增大人力成本等問(wèn)題,這些都是擺在高速發(fā)展的猿輔導(dǎo)面前的巨大挑戰(zhàn)。
02技術(shù)戰(zhàn)“疫”,PolarDB助力猿輔導(dǎo)應(yīng)對(duì)業(yè)務(wù)高峰
面對(duì)上述的諸多挑戰(zhàn),猿輔導(dǎo)基于阿里云PolarDB實(shí)現(xiàn)了新的數(shù)據(jù)庫(kù)解決方案。猿輔導(dǎo)之所以選用阿里云PolarDB數(shù)據(jù)庫(kù),除了PolarDB數(shù)據(jù)庫(kù)具有較高的性能,并且能夠與MySQL實(shí)現(xiàn)100%兼容之外,更加看重PolarDB的彈性伸縮能力和容量最高可達(dá)100T的能力。
🔶PolarDB分鐘級(jí)彈性能力輕松應(yīng)對(duì)各種業(yè)務(wù)場(chǎng)景
因?yàn)樵齿o導(dǎo)的業(yè)務(wù)特點(diǎn),用戶訪問(wèn)量在平時(shí)可以輕松應(yīng)對(duì),但是在周末以及考試期間達(dá)到業(yè)務(wù)訪問(wèn)的高峰,因此應(yīng)對(duì)數(shù)據(jù)庫(kù)問(wèn)題的主要難點(diǎn)在于用戶的高并發(fā)訪問(wèn)所造成的讀寫爭(zhēng)用,進(jìn)而使得I/O較高,而如果一直購(gòu)買高配置的MySQL數(shù)據(jù)庫(kù),成本難以接受。而猿輔導(dǎo)通過(guò)使用阿里云PolarDB,借助其快速?gòu)椥缘哪芰?,在業(yè)務(wù)的高峰期臨時(shí)增加數(shù)據(jù)庫(kù)配置和集群規(guī)模,與之前的方案相比整體成本大大降低。
對(duì)于猿輔導(dǎo)這樣具有明顯業(yè)務(wù)峰值特征的產(chǎn)品而言,最為看重的就是PolarDB的分鐘級(jí)彈性能力。而在其強(qiáng)大的彈性能力的背后其實(shí)是PolarDB存儲(chǔ)與計(jì)算分離設(shè)計(jì)。
所謂分離就是計(jì)算節(jié)點(diǎn)(DB Engine)和存儲(chǔ)節(jié)點(diǎn)(DB Store)在不同的物理服務(wù)器上,任何落地到存儲(chǔ)設(shè)備的I/O操作均為網(wǎng)絡(luò)I/O。而且,借助PolarFS經(jīng)過(guò)網(wǎng)絡(luò)訪問(wèn)PolarStore的測(cè)試性能效果基本能夠與本地單副本SSD持平。而PolarDB的存儲(chǔ)與計(jì)算分離的架構(gòu),除了可以降低存儲(chǔ)成本,保證主備數(shù)據(jù)強(qiáng)一致、不丟數(shù)據(jù)之外,還帶來(lái)了一個(gè)巨大的優(yōu)勢(shì),就是讓數(shù)據(jù)庫(kù)的彈性伸縮變得極為簡(jiǎn)單、便捷。
阿里云PolarDB分層架構(gòu)圖
正如上圖所示,PolarDB采用了分層架構(gòu),從上層的代理PolarProxy提供了讀寫分離、SQL加速等功能,到中間的數(shù)據(jù)庫(kù)引擎節(jié)點(diǎn)PolarDB構(gòu)造了一寫多讀的數(shù)據(jù)庫(kù)集群,再到底層的分布式存儲(chǔ)PolarStore為上層提供多節(jié)點(diǎn)掛載的數(shù)據(jù)共享,每一層各司其職,共同構(gòu)建了PolarDB云數(shù)據(jù)庫(kù)集群。
從PolarDB產(chǎn)品定義上看,用戶購(gòu)買的節(jié)點(diǎn)數(shù)和規(guī)格大小(比如4核16G)指的是中間這一層PolarDB的配置,上層PolarProxy可以根據(jù)PolarDB的配置自適應(yīng)調(diào)整,用戶不需購(gòu)買也不用關(guān)心性能和容量。底層PolarStore的容量是自動(dòng)擴(kuò)容,只須按照實(shí)際使用容量付費(fèi)。
通常意義的擴(kuò)展性,一般有縱向(Scale up)和橫向(Scale out)和兩種方式,縱向是指提升配置,橫向是指配置不變,但增加節(jié)點(diǎn)。對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),都是先縱向,比如4核不夠升到8核。但終歸會(huì)遇到瓶頸,一方面性能提升非線性,跟數(shù)據(jù)庫(kù)引擎自身的設(shè)計(jì)和應(yīng)用訪問(wèn)模型有關(guān)(比如MySQL的多線程設(shè)計(jì),如果只有一個(gè)session,那么很難體現(xiàn)出多核的優(yōu)勢(shì)),另一方面,計(jì)算物理服務(wù)器配置有上限,存在天花板。因此終極手段還是橫向擴(kuò)展,增加節(jié)點(diǎn)數(shù)。
阿里云控制臺(tái)PolarDB升降配操作示意圖
🔶PolarDB的底層技術(shù)實(shí)現(xiàn)
對(duì)于PolarDB而言,其彈性能力可以概括為“橫向最多可以到16個(gè)節(jié)點(diǎn),縱向最高可到88核,并且存儲(chǔ)容量動(dòng)態(tài)擴(kuò)展,毋須配置”。那么,在這樣強(qiáng)大的彈性能力的背后,PolarDB的底層技術(shù)究竟是怎樣實(shí)現(xiàn)的呢?接下來(lái)就從縱向、橫向兩個(gè)方面介紹。
縱向擴(kuò)展(升級(jí)/降級(jí)配置):得益于存儲(chǔ)與計(jì)算分離,PolarDB數(shù)據(jù)庫(kù)節(jié)點(diǎn)的配置可以單獨(dú)升級(jí)或降級(jí),如果當(dāng)前服務(wù)器資源不足,還可以快速地遷移到其他服務(wù)器,整個(gè)過(guò)程目前只需要5-10分鐘,中間不需要任何的數(shù)據(jù)搬遷,只是如果涉及到跨機(jī)遷移,未來(lái)還可以通過(guò)PolarProxy消除升級(jí)對(duì)業(yè)務(wù)應(yīng)用的影響。
因?yàn)槟壳巴患簝?nèi)的所有節(jié)點(diǎn)必須綁定升級(jí),因此PolarDB采用了Rolling Upgrade滾動(dòng)升級(jí)的方式,通過(guò)控制升級(jí)的節(jié)奏、搭配主備切換來(lái)進(jìn)一步減少不可用時(shí)間。
同時(shí)目前PolarDB新版本將會(huì)支持warm buffer pool 功能, 也就是說(shuō)升級(jí)以后, 不需要重新加載buffer pool 的數(shù)據(jù), 避免升級(jí)重啟導(dǎo)致的性能抖動(dòng), 是整個(gè)升配流程更加的順滑.橫向擴(kuò)展(增/減節(jié)點(diǎn)):由于存儲(chǔ)是共享的,因此可以快速增加節(jié)點(diǎn),而不需要任何的數(shù)據(jù)COPY。整個(gè)過(guò)程也只需要5-10分鐘,如果是增加節(jié)點(diǎn),對(duì)業(yè)務(wù)應(yīng)用沒(méi)有任何影響,如果是減少節(jié)點(diǎn),那么僅對(duì)落到該節(jié)點(diǎn)執(zhí)行的連接有影響,重新連接即可。
目前在Polar DB 新版本支持warm buffer pool 功能后, 新加入的節(jié)點(diǎn)能夠迅速提供跟老節(jié)點(diǎn)一樣的性能, 無(wú)需從存儲(chǔ)中讀取數(shù)據(jù)就可以有用戶最常用的page 的內(nèi)容, 可以提供更順滑的體驗(yàn). 當(dāng)增加節(jié)點(diǎn)之后,PolarProxy可以動(dòng)態(tài)感知并自動(dòng)加入到讀寫分離后端的讀節(jié)點(diǎn)中,對(duì)于使用集群訪問(wèn)地址(讀寫分離地址)連接PolarDB的應(yīng)用程序可以立馬享受到更好的性能和吞吐。
在猿輔導(dǎo)的應(yīng)用場(chǎng)景中, 答題場(chǎng)景類似于雙十一的搶購(gòu)場(chǎng)景, 老師發(fā)布題目, 這個(gè)時(shí)候, 所有的學(xué)生需要同時(shí)對(duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)行修改. 通過(guò)PolarDB 的秒殺場(chǎng)景plugin, 能夠增強(qiáng)PolarDB 在大壓力情況下的并發(fā)能力, 有效解決了突增場(chǎng)景帶來(lái)寫入壓力。
03小結(jié)
猿輔導(dǎo)將數(shù)據(jù)庫(kù)遷移到阿里云PolarDB之后,在業(yè)務(wù)平峰的時(shí)候,能夠同時(shí)支撐大體量學(xué)生在線進(jìn)行課程學(xué)習(xí),并且業(yè)務(wù)根本不會(huì)感覺(jué)到壓力。而當(dāng)應(yīng)對(duì)業(yè)務(wù)高峰的時(shí)候,只需要提前一小時(shí)進(jìn)行準(zhǔn)備,就能夠?qū)I(yè)務(wù)能力臨時(shí)提升至足以應(yīng)對(duì)100萬(wàn)學(xué)生并發(fā)訪問(wèn)的等級(jí)。
而且,由于PolarDB數(shù)據(jù)庫(kù)資源可以按需彈性伸縮,因此在猿輔導(dǎo)從MySQL遷移到PolarDB之后節(jié)省了5個(gè)只讀庫(kù)的容量,節(jié)省了近70%的數(shù)據(jù)庫(kù)費(fèi)用支出。此外,在線數(shù)據(jù)庫(kù)維護(hù)工作量能夠降低95%,無(wú)需資深的專業(yè)DBA坐鎮(zhèn),因此大大降低了數(shù)據(jù)庫(kù)維護(hù)的人力成本。最后,如果從業(yè)務(wù)維度來(lái)看,猿輔導(dǎo)在遷移到PolarDB之后,大大提升了用戶體驗(yàn)。
疫情以來(lái),阿里云通過(guò)支撐釘釘、優(yōu)酷、國(guó)家中小學(xué)網(wǎng)絡(luò)云平臺(tái)以及各類社會(huì)化教學(xué)機(jī)構(gòu),服務(wù)全國(guó)近1.8億中小學(xué)生在家上課,成為最大的在線教育類技術(shù)服務(wù)平臺(tái)。