阿里雲POLARDB如何幫助猿輔導打造「孩子喜歡老師好」的網課平臺?

海量的題庫、音視頻答題資料、用戶數據以及日誌,對猿輔導後臺數據存儲和處理能力都提出了嚴峻的要求。而因爲教育輔導行業的業務特色,猿輔導也面臨着業務峯值對於數據庫能力的巨大挑戰。本文就爲你們介紹阿里雲POLARDB如何幫助猿輔導打造「孩子喜歡老師好」的網課平臺。數據庫

圖片描述

猿輔導業務背景
猿輔導是國內知名在線教育機構,旗下有猿輔導、猿題庫、小猿搜題、小猿口算、斑馬英語五款核心在線教育APP,爲學生和家長提供在線輔導、拍照答疑、智能題庫、自動批改等相關的智能教育服務。猿輔導擁有百億級的K-12學習行爲數據庫,並率先將AI、大數據等前沿技術應用於教育場景。後端

猿輔導自建數據庫方案所面對的挑戰
猿輔導以前採用的是自建數據庫的解決方案,可是由於自身業務特色,在週末或者在線模考的時候,同時在線人數會瞬間激增,而本來的自建數據庫方案難以應對這樣的訪問峯值,所以會有大約三分之一的學生沒法正常進入在線考試。而答題的延時也從正常狀況下的1秒以內增加到平均5秒,使得學生用戶的答題體驗急劇降低。與此同時,猿輔導的用戶量每一年飛速增加,自建MySQL數據庫的CPU利用率已經達到了70%以上。此外,猿輔導的DBA本來由運維人員兼職,可是面對這樣紛繁複雜的數據庫管理任務,兼職DBA力不從心,而招聘專職DBA卻預計會須要每一年至少100萬的成本。總之,自建數據庫方案難以應對訪問峯值,難以知足業務高速發展的需求,而且難以管理,且會增大人力成本等問題,這些都是擺在高速發展的猿輔導面前的巨大挑戰。服務器

猿輔導基於POLARDB數據庫解決方案
面對上述的諸多挑戰,猿輔導基於阿里雲POLARDB實現了新的數據庫解決方案。猿輔導之因此選用阿里雲POLARDB數據庫,除了POLARDB數據庫具備較高的性能,而且可以MySQL實現100%兼容以外,更加看重POLARDB的彈性伸縮能力和容量最高可達100T的能力。由於猿輔導的業務特色,用戶訪問量在平時能夠輕鬆應對,可是在週末以及考試期間達到業務訪問的高峯,所以應對數據庫問題的主要難點在於用戶的高併發訪問所形成的讀寫爭用,進而使得I/O較高,而若是一直購買高配置的MySQL數據庫,成本難以接受。而猿輔導經過使用阿里雲POLARDB,藉助其快速彈性的能力,在業務的高峯期臨時增長數據庫配置和集羣規模,與以前的方案相比總體成本大大下降。網絡

圖片描述

猿輔導基於阿里雲POLARDB分鐘級彈性數據庫集羣
對於猿輔導這樣具備明顯業務峯值特徵的產品而言,最爲看重的就是POLARDB的分鐘級彈性能力。而在其強大的彈性能力的背後實際上是POLARDB存儲與計算分離設計。所謂分離就是計算節點(DB Engine)和存儲節點(DB Store)在不一樣的物理服務器上,任何落地到存儲設備的I/O操做均爲網絡I/O。並且,藉助PolarFS通過網絡訪問PolarStore的測試性能效果基本可以與本地單副本SSD持平。而POLARDB的存儲與計算分離的架構,除了能夠下降存儲成本,保證主備數據強一致、不丟數據以外,還帶來了一個巨大的優點,就是讓數據庫的彈性伸縮變得極爲簡單、便捷。session

圖片描述

阿里雲POLARDB分層架構圖
正如上圖所示,POLARDB採用了分層架構,從上層的代理PolarProxy提供了讀寫分離、SQL加速等功能,到中間的數據庫引擎節點POLARDB構造了一寫多讀的數據庫集羣,再到底層的分佈式存儲PolarStore爲上層提供多節點掛載的數據共享,每一層各司其職,共同構建了POLARDB雲數據庫集羣。多線程

從POLARDB產品定義上看,用戶購買的節點數和規格大小(好比4核16G)指的是中間這一層POLARDB的配置,上層PolarProxy能夠根據POLARDB的配置自適應調整,用戶不需購買也不用關心性能和容量。底層PolarStore的容量是自動擴容,只須按照實際使用容量付費。架構

一般意義的擴展性,通常有縱向(Scale up)和橫向(Scale out)和兩種方式,縱向是指提高配置,橫向是指配置不變,但增長節點。對於數據庫來講,都是先縱向,好比4核不夠升到8核。但終歸會遇到瓶頸,一方面性能提高非線性,跟數據庫引擎自身的設計和應用訪問模型有關(好比MySQL的多線程設計,若是隻有一個session,那麼很難體現出多核的優點),另外一方面,計算物理服務器配置有上限,存在天花板。所以終極手段仍是橫向擴展,增長節點數。併發

圖片描述

阿里雲控制檯POLARDB升降配操做示意圖
對於POLARDB而言,其彈性能力能夠歸納爲「橫向最多能夠到16個節點,縱向最高可到88核,而且存儲容量動態擴展,毋須配置」。那麼,在這樣強大的彈性能力的背後,POLARDB的底層技術到底是怎樣實現的呢?接下來就從縱向、橫向和存儲三個方面介紹。運維

縱向擴展(升級/降級配置):得益於存儲與計算分離,POLARDB數據庫節點的配置能夠單獨升級或降級,若是當前服務器資源不足,還能夠快速地遷移到其餘服務器,整個過程目前只須要5-10分鐘,中間不須要任何的數據搬遷,只是若是涉及到跨機遷移,將來還能夠經過PolarProxy消除升級對業務應用的影響。由於目前同一集羣內的全部節點必須綁定升級,所以POLARDB採用了Rolling Upgrade滾動升級的方式,經過控制升級的節奏、搭配主備切換來進一步減小不可用時間。分佈式

橫向擴展(增/減節點):因爲存儲是共享的,所以能夠快速增長節點,而不須要任何的數據COPY。整個過程也只須要5-10分鐘,若是是增長節點,對業務應用沒有任何影響,若是是減小節點,那麼僅對落到該節點執行的鏈接有影響,從新鏈接便可。當增長節點以後,PolarProxy能夠動態感知並自動加入到讀寫分離後端的讀節點中,對於使用集羣訪問地址(讀寫分離地址)鏈接POLARDB的應用程序能夠立馬享受到更好的性能和吞吐。

毋須管理的存儲空間:POLARDB的存儲空間不須要關心,按量付費,每小時自動結算。在目前的設計中,I/O能力與數據庫節點的規格有關,規格越大,IOPS和I/O吞吐量越高,在節點上對I/O有隔離和限制,可以避免多個數據庫集羣之間的I/O爭搶。本質上,數據是被保存在由大量服務器構成的存儲池中,因爲可靠性要求,每一個數據塊複製出3個副本,保存在不一樣機架的不一樣服務器上。而存儲池可以進行自我管理,動態擴容、平衡,避免存儲碎片和數據熱點。

使用POLARDB爲猿輔導帶來的收益猿輔導將數據庫遷移到阿里雲POLARDB以後,在業務平峯的時候,可以同時支撐大致量學生在線進行課程學習,而且業務根本不會感受到壓力。而當應對業務高峯的時候,只須要提早一小時進行準備,就可以將業務能力臨時提高至足以應對100萬學生併發訪問的等級。並且,因爲POLARDB數據庫資源能夠按需彈性伸縮,所以在猿輔導從MySQL遷移到POLARDB以後節省了5個只讀庫的容量,節省了近70%的數據庫費用支出。此外,在線數據庫維護工做量可以下降95%,無需資深的專業DBA坐鎮,所以大大下降了數據庫維護的人力成本。最後,若是從業務維度來看,猿輔導在遷移到POLARDB以後,大大提高了用戶體驗。

相關文章
相關標籤/搜索