陳 兵
(南京微特喜網絡科技有限公司,江蘇 南京 210000)
在當今的網絡時代,云直播已經廣為人知。一些互聯網公司部署大量的服務器,并在服務器上部署流直播服務器軟件,向電信運營商租賃帶寬,然后以云直播的方式為用戶提供直播服務[1]。云直播不光要處理RTMP或HLS等流媒體內容,還需要處理大量的觀眾互動。云直播服務的觀眾流量峰谷效應明顯,波谷的時候系統負載較低,波峰的時候較高,配置固定容量的服務器不能滿足系統的經濟性,因此需要構建基于微服務的可伸縮云直播平臺。
可伸縮的微服務云直播集成平臺集成了系統的所有功能,由流媒體服務器、Web服務器、聊天服務器、鑒權服務器、功能服務器以及數據庫服務器組成[2]。為了實現系統的可伸縮性還使用了負載均衡與API網關,使用CDN系統分發數據,將微服務治理相關的服務放入支撐系統。
平臺架構如圖1所示。

圖1 平臺架構
其中,支撐系統中包含了服務發現、服務注冊、容錯限流、日志聚合以及監控告警等功能。系統設計的要點包括3個方面。一是服務分離,每個服務專注于一個相對獨立的領域,以分散風險和重用組合,也有利于服務的擴展,哪塊是瓶頸就優化和擴展哪一塊,而不是一起升級所有服務器。二是無狀態,不同的服務器的狀態同步才能避免單點失敗,每個服務器保持一致不能應對海量的請求和數據,為了實現動態伸縮需要外置共享狀態,這樣服務器才可以隨意增加,并線性擴展。三是數據分片,根據地理位置、用戶組織、數據中心及服務區集群進行用戶數據的分片有利于系統的自動擴展與收縮。
服務器端口安裝遠程終端工具,可隨處登入,使服務器維護更加方便。通過統一管理移動電話與PC辦公設備,實現了高效安全且隨時隨地可擴展的云端體驗。接入端的設置提高了終端的擴展性,簡化了操作流程和內部控制。在購買和啟動云產品實例后,用戶可以創建或同步帳戶系統,通過下載云客戶端完成可信設備的注冊[3]。
通過終端訪問可以實現多種設備之間的訪問控制,該方法的主要步驟包括兩個方面。第一,接收權限設置請求,將第一可伸縮云直播平臺的穿戴設備綁定到第一用戶的帳戶,從而建立與第二可伸縮云直播平臺穿戴設備進行資源交換訪問的權限[4]。第二,允許第二用戶帳戶綁定第二可伸縮云直播平臺的穿戴設備,以便第一類和第二類用戶共享資源[5]。使用不同的設備控制穿戴設備,避免用戶隱私泄露,從而更好地保護用戶的利益,提高服務質量。
負載均衡服務器指執行負載分配的服務器,它將服務請求平均地分配給實際執行的服務,保證了系統的整體響應速度[6]。負載均衡服務器是系統控制的服務器,負責向主服務器發送所有用戶的請求,然后主服務器根據每個處理服務器的實際狀態將請求分配給包含公共域名和IP地址的處理服務器。處理服務器軟件部分由負載均衡控制和軟件管理兩部分組成,通常情況下僅執行負載均衡任務分配,并不處理其他網絡請求[7]。
負載均衡策略主要有3種。一是HTTP重定。通過修改超文本傳輸協議響應頭中的位置標簽,網絡服務器返回一個新的網址,瀏覽器繼續請求新的網址,通過頁面重定向來平衡負載[8]。二是反向代理負載均衡。反向代理服務的核心是向瀏覽器和后端Web服務器轉發HTTP請求。HTTP層(應用層)是7層網絡體系結構的最后一層,可以通過反向代理均衡負載[9]。三是IP負載均衡。可變IP網絡層和可變端口傳輸層的負載均衡服務性能明顯優于HTTP層,其通過修改IP層的IP地址和端口信息來實現負載均衡。在收到由IP網絡層發送的IP地址和端口信息后,負載平衡服務器可以將IP地址和端口更改為具有相同屬性的地址和端口,并將更改的結果以數據包的形式直接發送到網絡內部[10]。在實際服務器完成處理后,數據包回傳給負載均衡器,服務器將目標IP地址改為用戶IP地址,然后再傳回客戶機。
不同服務器之間通過超文本傳輸協議傳輸信息,因此服務器部署應分為兩部分,一部分負責存儲信息,另一部分負責為用戶提供運行腳本和程序。隨著微服務可擴展云直播平臺的模式升級,平臺對人們需求的響應速度加快,因此微服務體系必須具有良好且連續的部署流程。
中心化注冊主要包括客戶端注冊和代理注冊。客戶端注冊由服務本身負責,服務模式啟動時,注冊線程會在注冊表中自行注冊,當服務中斷時會退出。代理注冊是通過代理權服務登記的,服務模式啟動時,以某種方式將信息通知給代理,代理負責向注冊中心發起注冊請求[11]。
調度服務被劃分為客戶端調度和代理調度。客戶端調度負責從注冊表中查找可用服務的地址,獲得所有可用實例的地址后根據負載均衡算法選擇一個實例來發起調用請求。代理調度要添加一個新的路由服務,從注冊表中查找可使用服務的地址,并在調用該地址后直接將路由服務發送到用戶路由,否則在獲得準確的調用結果位置前需再次測試調用請求[12]。中心化的注冊與調度服務無侵入,其管理和控制采取利于編排的集中式服務模式。
智能鏈路保護與降級是微服務的核心技術之一,如圖2所示。

圖2 鏈路保護與降級
由圖2可知,在某些核心(高可用性)接口中,鏈路保護和降級操作可以定義多個備用接口。降級支持主要有兩種策略,即RT反向操作和異常比例操作。RT反向操作的單位是毫秒,而平均響應時間是秒,如果連續輸入5次請求后,平均響應時間始終超過降級閾值,那么該請求視為自動降級。異常比例操作的單位是秒級,當異常總數/秒與資源通過次數之比超過閾值時,資源進入降級狀態。在配置的降級窗口中,當資源處于降級狀態時,請求迅速失敗。例如,一般使用Redis來獲取數字,當獲取到異常數據時,Redis會將獲取的數據返回到數據庫,如果數據庫中還存在異常數據,則需要從原始API獲取數據。智能鏈路保護是一種故障重試策略,可以確保達到特定的閾值后自動恢復。
集中式配置管理是基于軟件倉庫的版本管理功能,可以自動執行構建過程,為集中式配置管理提供充足的存儲空間。此空間允許共享資源,配置管理員還可以通過創建數據庫來平均分配項目權限,確保每個項目成員都有權限直接操作數據庫。由于項目開發期間會改變配置項,因此配置管理人員要定期維護存儲庫,如刪除垃圾文件和備份存儲器等。更改控制是為了防止任意改變配置項而引起混亂,草案中對配置項的修改不視為“改變”,不需要委員會批準,直接按照請求、批準、更改、審查及終止的程序進行即可。集中配置管理一般只有一個副本配置,對于一些簡單的配置可以實現批量刷新和故障回滾處理等功能,不需要重啟刷新。
以微服務為基礎的可伸縮云直播平臺具有業務響應速度快、代碼重用率高、可靠性好以及硬件投入少等優點。該平臺將業務單元分成細粒度的單元,通過修改某些服務來測試和發布新的業務變化。此外,其分散化和集群化可以降低單點故障和性能瓶頸,高峰自動擴展,低谷自動降低,從而合理利用資源。