在線教育有哪些核心技術?
2013年被稱為國內在線教育(也稱為在線學習)的元年。從那一年開始,在線教育開始蓬勃發展,與此同時,也帶動了如機器學習、直播、VR/AR等技術與在線學習各細分領域應用的深度融合。
從產品形態來說,在線教育產品大致可分為視頻類(如錄播課程和直播課程【由平臺組織,B2C】)、工具(如單詞、題庫、筆記、評測等)、綜合(如某些垂直網站)、家校互動、家教O2O、互動教學(如C2C線上一對一)、垂直信息(如留學服務類)等。不同的產品形態所需要技術支撐體系迥然各異。
我就以時下最火的直播教學產品開發舉例。
要打造一個好的教育直播產品,首先得有一個好的架構。無論是MVC(MVP、MV*)、傳統的3層、n-tier、SOA還是Micro-services、中臺等,總之要通過架構(圖)來詮釋其構建——即業務及產品設計的技術實現,以幫助分析師、開發工程師、開發經理乃至測試、運維、產品等團隊成員理解技術架構背后的東西和相關設計規則,以便各部分開展深化設計,比如用戶體驗、子系統和基礎架構設計。下面是一個直播產品的典型架構:
這個產品采用的是微服務架構,通過API網關和消息服務器為包括Web端、APP、H5、小程序、后臺等客戶端提供相關RESTful/Web Socket接口。所有的排課、直播、互動、通訊、同步等邏輯均在服務器端處理。從這個架構圖中可以看到,服務器開發會涉及諸如集群、負載均衡、分布式存儲、CDN、流程引擎、消息通訊、緩存、數據庫、搜索、流媒體、音視頻編解碼、任務調度、數據分析等一系列的技術。這個平臺完全基于流程驅動,同時通過運行時服務(Runtime Services)為各服務器(進程)提供相關的平臺服務支撐。典型的業務流程如下所示:
虛擬教室(客戶端)有Web/iOS/Android/H5/小程序版本。由于絕大多數老師上課還是使用電腦,為給老師提供更自然、更接近與真實的直播教學體驗,同時也避免下載安裝客戶端軟件,需要在Web端實現完整的教室功能,含直播推流功能;而學生端只需打開瀏覽器便可以觀看直播,無需安裝任何插件。
客戶端開發的重點:1)白板的實現;2)音視頻處理。白板開發的難點和核心技術是客戶端圖形工具(各種圖形算法,涉及幾何、物理、化學、美術等學科圖形)開發以及直播中各端繪圖及筆跡(毫秒級)同步。Web端白板、繪圖完全基于H5 Canvas/JavaScript開發(可配合C++寫的直播助手程序以實現更靈活的硬件操縱及性能提升);iOS/Android白板則基于原生開發,繪圖算法也是由Web端移植。音視頻處理的重點1)實現高效且低功耗的視頻推流;2)流媒體實時傳輸(延遲需控制在<=70ms)。
拋開所謂的技術,有一點是好的在線教育產品研發都應該注意的,一定要符合學科習慣!舉個例子,不同的老師對于圖形工具的使用(或功能)需求其實是不一樣的,比如三角形,幾何老師需要的是等腰、直角、鈍角……乃至徒手繪制,而英語老師需要的僅僅只是一個triangle圖形而已。
以上簡單介紹了開發一個教育直播產品可能會涉及的技術和一些關鍵點。當然,支撐一個百萬、千萬級負載的教育直播產品需要的技術棧遠不止上面所提到的技術。但是,相信通過上面的簡單介紹,至少能夠給你一個在線教育產品所涉及技術的初步印象。如果有對直播產品開發或產品設計感興趣的同學,可以私信或留言,我會盡可能的給你一些好的建議!