簡介: iiMedia Research(艾媒諮詢)數據顯示,在線教育市場規模保持逐年增加的態勢,2019年在線教育市場規模已突破4000億元。在疫情的助推下,在線教育加速滲透,市場空間有望進一步打開,預計2020年中國在線教育市場規模將達到4538億元。服務器
做者:山獵網絡
愛學習教育集團的前身爲高思教育,成立於2009年,以中小學課外培訓起家,曾經的定位是K12培訓機構;2014年,愛學習教育集團發力B端市場,目前在2B領域得到了全國各地辦學機構的普遍承認,由K12培訓機構升級爲K12教育供給平臺。架構
2019年4月份,愛學習教育集團完成由華平投資領投的1.4億美圓D輪融資。2014年之前,做爲一家「教育產品研發」企業,愛學習教育集團爲3-18歲年齡層的孩子提供個性化的教育產品方案及全部與教育相關的服務,旗下擁有「思泉語文」、「高思數學」、「高思VIP一對一」、「中學理科」等互聯網教育產品:「樂樂課堂」、「愛學習」、「愛上古詩」「愛尖子」、「愛提分」等多個全國著名的學習子品牌,這些產品目前已經被大量的中小學輔導機構及公立學校引進,廣泛提高了孩子的學習體驗和學習效果。併發
2014年,在不斷髮展進化當中,愛學習教育集團(當時還叫高思教育)毅然決然的轉型2B領域。據瞭解,到2029年,愛學習教育集團但願服務全球1億學生和500萬老師,助力50萬所學校,以引領行業的內容和科技給學生帶來美好的學習體驗。負載均衡
在線教育市場競爭激烈,愛學習是如何脫穎而出?分佈式
豐富的互動場景提高用戶體驗,穩定性如何實現?
近些年,在線教育行業飛速發展,爲整個社會的知識傳播提供了史無前例的便利性。經過多種形式的在線教育平臺,學員與教師即便相隔萬里也能夠開展教學活動,真正打破了時間和空間的限制。基於流媒體傳輸技術興起的在線課堂,可讓師生擁有同處一個教室面對面授課聽課的真實體驗,受到了廣大用戶的歡迎。微服務
流媒體傳輸技術是建設在線課堂類應用須要使用到的核心技術,但要打造一款真正優秀的在線課堂應用,僅僅依靠流媒體傳輸是不夠的,只有融入豐富的課堂互動場景才能提高用戶體驗,讓學員的學習效率倍增。這些互動場景包括提問、發言、跟讀、點贊、教材導航、白板內容實時展現等,儘量的提高這些互動場景的操做流暢度,是一款在線課堂類應用競爭力的體現,也是衆多在線教育平臺技術團隊的共同追求。愛學習教育的研發團隊,就經過不斷迭代的技術手段,將在線課堂互動場景的用戶體驗提高到了極致。高併發
線上用戶量的飛速增加對愛學習研發團隊來講是一個巨大挑戰,藉助於雲計算彈性伸縮能力,視頻直播能夠直接使用雲服務以知足高併發需求,但真正的難題是如何支撐互動場景的穩定運行。成熟的分佈式微服務架構經過節點水平擴容能夠輕鬆的應對HTTP請求量的突增,但標準的HTTP通信只能解決由客戶端到服務端的單向請求,以下圖所示:性能
在線課堂互動場景涉及不一樣用戶之間的互相通信,以及服務器向客戶端的主動消息推送,須要創建相似這樣的通信模型:學習
拿課堂發言的場景爲例,一位學生提交發言的文字內容後,同一個課堂的其餘用戶都可以看到這位學生的發言。爲了確保發言的內容不違規,最好的方式是服務端先對內容審覈一下,過濾掉其中的敏感信息後,再推送給課堂的其餘用戶,相似這樣的流程:
所以,在線課堂互動的本質是服務端和客戶端之間的雙向消息通信,創建一個健壯、可擴展、高性能、高成本的雙向消息通信機制,這是實現線課堂互動場景的技術根基。標準的HTTP協議沒有辦法實現服務端主動向客戶端推送消息的業務場景,所以傳統的Web架構沒法知足在線課堂互動需求。對於這個難題,業界也存在多種解決方案,最簡單的方式是對HTTP進行少量改造,讓客戶端週期性對服務端進行詢問,以拿回屬於本身的消息,這就是基於HTTP的輪詢(Polling)方案:
這個方案能必定程度上實現服務端主動向客戶端推送消息,但性能極差,不但實時性知足不了要求,在沒有消息的狀況下還會產生大量空輪詢。此外還有一種基於HTTP的長輪詢(long polling)方案,是對普通輪詢方案的改進,能解決空輪詢問題,但優化程度很是有限,沒有辦法知足互動場景對於實時性的要求。
在基於HTTP協議的方案中,能原生實現服務端與客戶端雙向通信的是WebSocket方案,經過創建WebSocket鏈接,服務端能實時地將消息推送給客戶端,這也是一些基於網頁的輕量級IM所廣泛採用的方案。愛學習的研發團隊也曾考慮過經過WebSocket方案實現課堂互動場景,但通過短暫的預研後,他們發現這個方案存在很大的侷限性。在課堂互動場景中,有兩個很是明顯的特色:
(1)單個消息每每會同時發送給客戶端。前面提到的發言場景就是一個很典型的例子,用戶在課堂上的發言會被這個課堂的全部其餘用戶看到。
(2)在線的用戶量大,高峯期數萬個課堂同時開課。WebSocket方案須要讓服務端和每個客戶端創建鏈接,若是須要推送同一筆消息給多個客戶端,須要在服務端自行實現這個邏輯。
當用戶量急劇上升的時候,這個架構對於服務端會形成巨大的壓力,很難支持海量用戶同時在線,所以愛學習的研發團隊決定棄用WebSocket方案,嘗試其餘的方式來解決。
基於TCP或UDP自行實現應用層通信協議也是愛學習進行過深刻預研的方案,這種方式靈活度很是高,能夠經過定製化的協議對消息的傳輸實現任意擴展,但要從頭至尾設計一套應用層通信協議,是一項極其複雜的工做,須要處理多個難題,如:
• 鏈接異常如何處理?
• 客戶端斷線如何重連?
• 消息在傳輸過程當中丟失如何重發?
• 身份驗證和權限管理如何實現?
• 如何保證服務端節點如何實現水平擴容?
這些都是開發要考慮的因素,愛學習的研發團隊雖然有能力將這些細節都照顧周全,設計一套適合於自身業務場景的通信協議,但須要投入的時間成本是很是大的,面臨的風險也很是高。在業務快速發展的大背景下,研發團隊須要和時間賽跑,從新尋找能夠快速支撐海量用戶同時在線的課堂互動方案。
經過不斷技術預研所積累下來的經驗,愛學習的研發團隊得出了最終的結論:在技術架構上要能作到以下幾點,才能知足他們在線課堂互動的需求:
(1)能支撐海量客戶端同時在線;
(2)穩定,高可用;
(3)性能不知足要求時,服務端能水平擴展;
(4)經過一箇中間模塊進行消息分發,減小消息複製的成本;
(5)簡單易用,能夠快速上線。
這其中,能知足4和5的最佳方案基於MQTT協議來實現。MQTT是一個基於客戶端-服務器的消息發佈/訂閱傳輸協議,爲低帶寬和不穩定的網絡環境中的設備提供可靠的網絡服務。MQTT協議具備設計思想開放、簡單、輕量、易用的特色,能提供一對多的消息發佈,從而解除應用程序之間的耦合,也提供了消息必達性的保障,是很是適合用於移動客戶端消息推送的。
但MQTT畢竟只是一個協議,須要有成熟穩定的產品來支撐,才能用於大規模的商用場景。開源界提供的幾套MQTT實現方案,都沒有通過嚴謹的測試和商用考驗,客戶端數量達到1000個之後性能急劇降低,根本沒法支持萬級客戶端同時在線。
圍繞課堂互動場景,愛學習研發團隊和阿里雲技術專家進行了深刻交流,經過數輪的評估測試後,終於決定使用阿里雲微消息隊列MQTT來搭建他們的在線課堂互動平臺。相比開源方案,阿里雲微消息隊列MQTT在阿里巴巴內部通過了多年的驗證和演進,可以支撐千萬級設備在線鏈接,百萬級消息併發,以及毫秒級消息推送。其採用分佈式理念進行設計,無單點瓶頸,各組件之間都可以無限水平擴展,確保容量可彈性伸縮,並對用戶透明。
在這個架構中,位於互聯網上的客戶端設備經過標準的MQTT協議接入阿里雲微消息隊列MQTT。MQTT協議的SDK幾乎覆蓋了全部主流的開發語言,並且能很是好的適應移動客戶端網絡不穩定的狀況。位於雲上的服務器集羣經過RocketMQ協議接入消息隊列RocketMQ,並經過RocketMQ與MQTT之間的協議轉換實現服務端與客戶端之間的雙向互通。
爲何要引入一個新的組件消息隊列RocketMQ,並讓服務端的實例經過RocketMQ協議接入呢?有三個主要緣由:
(1)相比客戶端實例,服務端實例在規模上要小几個數量級,但單實例的消息吞吐量又比客戶端要大幾個數量級。在一個典型的在線課堂場景中,有數萬甚至幾十萬級的客戶端設備同時接入,而每一個客戶端每秒鐘的消息收發量不會超過10條;服務端的狀況就偏偏相反,100個實例的規模集羣已是很是大規模的集羣了,而每一個服務端實例1秒內可能要處理上萬筆消息。服務端和客戶端之間自然的區別這就決定了他們須要使用不一樣特性的通信協議進行接入,以實現性能和效率的最大化。
(2)當服務端的處理能力存在不足時,消息須要在隊列上進行暫存。而RocketMQ的引入爲MQTT提供了消息的存儲。
(3)服務端集羣的多個實例之間隱含着對等和任務分攤的關係,經過RocketMQ的集羣消費模式剛好就可以提供原生的負載均衡機制。
回到課堂發言的場景,發言內容提交之後,經過負載均機制,服務端集羣中的某一個實例拿到發言內容,在審覈完成後,只須要將消息投遞給MQTT 雲服務,就能分發給同一個課堂的其餘用戶了。這樣對於服務端實例而言,只須要和MQTT雲服務創建一個鏈接,就能同時爲上萬個用戶提供服務。
業務高峯期,當服務端實例出現了性能瓶頸的時候,只須要增長服務端實例的數量,就能水平線性的提高。而MQTT雲服務自己的性能提高則更加簡單,只須要在規則上進行升配就能夠實現,能夠作到對應用徹底無感知。
愛學習的研發團隊基於這套架構,半個月的時間就搭建了一套完整的課堂互動系統。開發團隊不須要在應用層關心弱網絡環境、斷線重連、異常處理、海量併發、系統高可用等複雜的技術問題,極大程度上下降了開發成本,提高了用戶體驗。
爲了支持「天空之城」計劃帶來的用戶量急劇上升,愛學習教育對這套系統進行了屢次擴容,成功抗住了數次流量洪峯,確保了業務的穩定運行。(補充:爲響應教育部「停課不停學」的呼籲,幫助更多本地K12機構及時轉型線上,愛學習教育集團推出「天空之城」計劃,開放優質內容和在線直播能力。已有9000多家機構選擇經過愛學習在線平臺進行線上授課,愛學習正在幫助愈來愈多的機構順利轉型,共築「天空之城」。)
「天空之城」計劃受全社會的高度承認的同時,愛學習的研發團隊也對系統架構進行持續的迭代,並將MQTT技術用在更多的雲端雙向互通場景,以應付將來更多的挑戰。正如愛學習教育集團聯合創始人、集團總裁李川所言:「咱們喜歡作價值更大的事兒,將來還有更美好的期待。」
原文連接 本文爲阿里雲原創內容,未經容許不得轉載。