估值百億獨角獸愛學習教育集團:通過雲原生實踐與時間賽跑

image

作者:山獵

愛學習教育集團的前身爲高思教育,成立於2009年,以中小學課外培訓起家,曾經的定位是K12培訓機構;2014年,愛學習教育集團發力B端市場,目前在2B領域獲得了全國各地辦學機構的廣泛認可,由K12培訓機構升級爲K12教育供給平臺。

2019年4月份,愛學習教育集團完成由華平投資領投的1.4億美元D輪融資。2014年以前,作爲一家“教育產品研發”企業,愛學習教育集團爲3-18歲年齡層的孩子提供個性化的教育產品方案及所有與教育相關的服務,旗下擁有“思泉語文”、“高思數學”、“高思VIP一對一”、“中學理科”等互聯網教育產品:“樂樂課堂”、“愛學習”、“愛上古詩”“愛尖子”、“愛提分”等多個全國著名的學習子品牌,這些產品目前已經被大量的中小學輔導機構及公立學校引進,普遍提升了孩子的學習體驗和學習效果。

2014年,在不斷髮展進化當中,愛學習教育集團(當時還叫高思教育)毅然決然的轉型2B領域。據瞭解,到2029年,愛學習教育集團希望服務全球1億學生和500萬老師,助力50萬所學校,以引領行業的內容和科技給學生帶來美好的學習體驗。

在線教育市場競爭激烈,愛學習是如何脫穎而出?

豐富的互動場景提升用戶體驗,穩定性如何實現?

近些年,在線教育行業飛速發展,爲整個社會的知識傳播提供了前所未有的便利性。通過多種形式的在線教育平臺,學員與教師即使相隔萬里也可以開展教學活動,真正打破了時間和空間的限制。基於流媒體傳輸技術興起的在線課堂,可以讓師生擁有同處一個教室面對面授課聽課的真實體驗,受到了廣大用戶的歡迎。

流媒體傳輸技術是建設在線課堂類應用需要使用到的核心技術,但要打造一款真正優秀的在線課堂應用,僅僅依靠流媒體傳輸是不夠的,只有融入豐富的課堂互動場景才能提升用戶體驗,讓學員的學習效率倍增。這些互動場景包括提問、發言、跟讀、點贊、教材導航、白板內容實時展示等,儘可能的提升這些互動場景的操作流暢度,是一款在線課堂類應用競爭力的體現,也是衆多在線教育平臺技術團隊的共同追求。愛學習教育的研發團隊,就通過不斷迭代的技術手段,將在線課堂互動場景的用戶體驗提升到了極致。

線上用戶量的飛速增長對愛學習研發團隊來說是一個巨大挑戰,藉助於雲計算彈性伸縮能力,視頻直播可以直接使用雲服務以滿足高併發需求,但真正的難題是如何支撐互動場景的穩定運行。成熟的分佈式微服務架構通過節點水平擴容可以輕鬆的應對HTTP請求量的突增,但標準的HTTP通訊只能解決由客戶端到服務端的單向請求,如下圖所示:

image

在線課堂互動場景涉及不同用戶之間的互相通訊,以及服務器向客戶端的主動消息推送,需要建立類似這樣的通訊模型:

image

拿課堂發言的場景爲例,一位學生提交發言的文字內容後,同一個課堂的其他用戶都能夠看到這位學生的發言。爲了確保發言的內容不違規,最好的方式是服務端先對內容審覈一下,過濾掉其中的敏感信息後,再推送給課堂的其他用戶,類似這樣的流程:

image

因此,在線課堂互動的本質是服務端和客戶端之間的雙向消息通訊,建立一個健壯、可擴展、高性能、高成本的雙向消息通訊機制,這是實現線課堂互動場景的技術根基。標準的HTTP協議沒有辦法實現服務端主動向客戶端推送消息的業務場景,因此傳統的Web架構無法滿足在線課堂互動需求。對於這個難題,業界也存在多種解決方案,最簡單的方式是對HTTP進行少許改造,讓客戶端週期性對服務端進行詢問,以拿回屬於自己的消息,這就是基於HTTP的輪詢(Polling)方案:

image

這個方案能一定程度上實現服務端主動向客戶端推送消息,但性能極差,不但實時性滿足不了要求,在沒有消息的情況下還會產生大量空輪詢。此外還有一種基於HTTP的長輪詢(long polling)方案,是對普通輪詢方案的改進,能解決空輪詢問題,但優化程度非常有限,沒有辦法滿足互動場景對於實時性的要求。

在基於HTTP協議的方案中,能原生實現服務端與客戶端雙向通訊的是WebSocket方案,通過建立WebSocket連接,服務端能實時地將消息推送給客戶端,這也是一些基於網頁的輕量級IM所普遍採用的方案。愛學習的研發團隊也曾考慮過通過WebSocket方案實現課堂互動場景,但經過短暫的預研後,他們發現這個方案存在很大的侷限性。在課堂互動場景中,有兩個非常明顯的特點:

(1)單個消息往往會同時發送給客戶端。前面提到的發言場景就是一個很典型的例子,用戶在課堂上的發言會被這個課堂的所有其他用戶看到。

(2)在線的用戶量大,高峯期數萬個課堂同時開課。WebSocket方案需要讓服務端和每一個客戶端建立連接,如果需要推送同一筆消息給多個客戶端,需要在服務端自行實現這個邏輯。

image

當用戶量急劇上升的時候,這個架構對於服務端會造成巨大的壓力,很難支持海量用戶同時在線,因此愛學習的研發團隊決定棄用WebSocket方案,嘗試其他的方式來解決。

基於TCP或UDP自行實現應用層通訊協議也是愛學習進行過深入預研的方案,這種方式靈活度非常高,可以通過定製化的協議對消息的傳輸實現任意擴展,但要從頭到尾設計一套應用層通訊協議,是一項極其複雜的工作,需要處理多個難題,如:

• 連接異常如何處理?
• 客戶端斷線如何重連?
• 消息在傳輸過程中丟失如何重發?
• 身份驗證和權限管理如何實現?
• 如何保證服務端節點如何實現水平擴容?

這些都是開發要考慮的因素,愛學習的研發團隊雖然有能力將這些細節都照顧周全,設計一套適合於自身業務場景的通訊協議,但需要投入的時間成本是非常大的,面臨的風險也非常高。在業務快速發展的大背景下,研發團隊需要和時間賽跑,重新尋找可以快速支撐海量用戶同時在線的課堂互動方案。

通過不斷技術預研所積累下來的經驗,愛學習的研發團隊得出了最終的結論:在技術架構上要能做到如下幾點,才能滿足他們在線課堂互動的需求:

(1)能支撐海量客戶端同時在線;
(2)穩定,高可用;
(3)性能不滿足要求時,服務端能水平擴展;
(4)通過一箇中間模塊進行消息分發,減少消息複製的成本;
(5)簡單易用,可以快速上線。

這其中,能滿足4和5的最佳方案基於MQTT協議來實現。MQTT是一個基於客戶端-服務器的消息發佈/訂閱傳輸協議,爲低帶寬和不穩定的網絡環境中的設備提供可靠的網絡服務。MQTT協議具有設計思想開放、簡單、輕量、易用的特點,能提供一對多的消息發佈,從而解除應用程序之間的耦合,也提供了消息必達性的保障,是非常適合用於移動客戶端消息推送的。

image

但MQTT畢竟只是一個協議,需要有成熟穩定的產品來支撐,才能用於大規模的商用場景。開源界提供的幾套MQTT實現方案,都沒有經過嚴謹的測試和商用考驗,客戶端數量達到1000個以後性能急劇下降,根本無法支持萬級客戶端同時在線。

圍繞課堂互動場景,愛學習研發團隊和阿里雲技術專家進行了深入交流,通過數輪的評估測試後,終於決定使用阿里雲微消息隊列MQTT來搭建他們的在線課堂互動平臺。相比開源方案,阿里雲微消息隊列MQTT在阿里巴巴內部經過了多年的驗證和演進,能夠支撐千萬級設備在線連接,百萬級消息併發,以及毫秒級消息推送。其採用分佈式理念進行設計,無單點瓶頸,各組件之間均可以無限水平擴展,確保容量可彈性伸縮,並對用戶透明。

image

在這個架構中,位於互聯網上的客戶端設備通過標準的MQTT協議接入阿里雲微消息隊列MQTT。MQTT協議的SDK幾乎覆蓋了所有主流的開發語言,而且能非常好的適應移動客戶端網絡不穩定的情況。位於雲上的服務器集羣通過RocketMQ協議接入消息隊列RocketMQ,並通過RocketMQ與MQTT之間的協議轉換實現服務端與客戶端之間的雙向互通。

爲什麼要引入一個新的組件消息隊列RocketMQ,並讓服務端的實例通過RocketMQ協議接入呢?有三個主要原因:

(1)相比客戶端實例,服務端實例在規模上要小几個數量級,但單實例的消息吞吐量又比客戶端要大幾個數量級。在一個典型的在線課堂場景中,有數萬甚至幾十萬級的客戶端設備同時接入,而每個客戶端每秒鐘的消息收發量不會超過10條;服務端的情況就恰恰相反,100個實例的規模集羣已經是非常大規模的集羣了,而每個服務端實例1秒內可能要處理上萬筆消息。服務端和客戶端之間天然的區別這就決定了他們需要使用不同特性的通訊協議進行接入,以實現性能和效率的最大化。

(2)當服務端的處理能力存在不足時,消息需要在隊列上進行暫存。而RocketMQ的引入爲MQTT提供了消息的存儲。

(3)服務端集羣的多個實例之間隱含着對等和任務分攤的關係,通過RocketMQ的集羣消費模式恰好就能夠提供原生的負載均衡機制。

回到課堂發言的場景,發言內容提交以後,通過負載均機制,服務端集羣中的某一個實例拿到發言內容,在審覈完成後,只需要將消息投遞給MQTT 雲服務,就能分發給同一個課堂的其他用戶了。這樣對於服務端實例而言,只需要和MQTT雲服務建立一個連接,就能同時爲上萬個用戶提供服務。

image

業務高峯期,當服務端實例出現了性能瓶頸的時候,只需要增加服務端實例的數量,就能水平線性的提升。而MQTT雲服務本身的性能提升則更加簡單,只需要在規則上進行升配就可以實現,可以做到對應用完全無感知。

愛學習的研發團隊基於這套架構,半個月的時間就搭建了一套完整的課堂互動系統。開發團隊不需要在應用層關心弱網絡環境、斷線重連、異常處理、海量併發、系統高可用等複雜的技術問題,極大程度上降低了開發成本,提升了用戶體驗。

爲了支持“天空之城”計劃帶來的用戶量急劇上升,愛學習教育對這套系統進行了多次擴容,成功抗住了數次流量洪峯,確保了業務的穩定運行。(補充:爲響應教育部“停課不停學”的呼籲,幫助更多本地K12機構及時轉型線上,愛學習教育集團推出“天空之城”計劃,開放優質內容和在線直播能力。已有9000多家機構選擇通過愛學習在線平臺進行線上授課,愛學習正在幫助越來越多的機構順利轉型,共築“天空之城”。)

“天空之城”計劃受全社會的高度認可的同時,愛學習的研發團隊也對系統架構進行持續的迭代,並將MQTT技術用在更多的雲端雙向互通場景,以應付未來更多的挑戰。正如愛學習教育集團聯合創始人、集團總裁李川所言:“我們喜歡做價值更大的事兒,未來還有更美好的期待。”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章