視頻私有云實戰:基於 Docker 構建點播私有云平臺

私有云是爲一個客戶單獨使用而構建的,於是提供對數據、安全性和服務質量的最有效控制。前置條件是客戶擁有基礎設施,並可使用基礎設施在其上部署應用程序。其核心屬性是專有的資源。本篇文章將會結合網易雲信的實踐經驗,以全局概述的方式帶你們認識點播私有化平臺構建的總體架構面貌。git

推薦閱讀
《幾十萬人同時在線的直播間聊天,如何設計服務端架構?》
《高併發IM系統架構優化實踐》

雲計算的出現,經過硬件的虛擬化將大量的服務器硬件抽象爲巨大的資源池,能夠動態的爲用戶提供基礎設施、平臺和應用三種形式的服務。目前企業的使用方式有公有云和私有云。公有云下,企業能夠拋棄複雜的基礎設施構建和維護,按需購買計算資源和應用服務。可是考慮到一些數據的敏感性和網絡互連互通問題的限制,企業將本身最核心的業務徹底託管至公有云有很大顧慮。所以,基於業務上的可靠性、安全性、可控性,不少企業選擇建設私有云。
私有云是爲一個客戶單獨使用而構建,於是提供對數據、安全性和服務質量的有效控制。前置條件是客戶擁有基礎設施,並可使用基礎設施在其上部署應用程序。其核心屬性是專有的資源。github

架 構

點播私有云平臺的模塊設計

圖片描述

基礎服務包括:算法

  • 緩存、數據庫、消息隊列等部署在PaaS層的服務,提供數據的存儲和訪問。
  • 容器管理基於Docker和Kubernetes管理點播服務各個組件的生命週期。

能力管理集羣包括:數據庫

  • 上傳服務集羣,基於S3設備的分佈於不一樣節點的斷點上傳。
  • 流媒體服務集羣,支持視頻的邊下邊播等播放特性。
  • 轉碼集羣,處理視頻轉碼的引擎。

經過提供基礎服務和能力管理集羣構建平臺服務,用戶只須要在此基礎上接入業務應用,集成播放SDK和上傳SDK,便可快速構建點播服務。後端

點播私有云平臺的部署實施設計

圖片描述

上圖闡述了點播私有化平臺的最小部署集羣,其中控制集羣包含經過基於 OpenStack 進行的硬件資源虛擬化、Docker 和 Kubernetes 實現的容器服務管理、基於虛擬資源和容器的哨兵監控以及帳號管理。計算集羣包含點播服務組件的部署以及依賴的存儲、數據管理服務。緩存

平臺組成

整個私有化平臺從底層向上構建包括:硬件資源的虛擬化、數據存儲服務構建、點播組件服務部署。安全

硬件資源的虛擬化

圖片描述

上圖闡述了將硬件資源虛擬化的分層抽象架構:
IaaS:基於 OpenStack 的雲計算基礎服務(包括雲計算、雲網絡和本地存儲)
將硬件資源虛擬化爲雲主機,支持雲主機的管理操做(建立、啓動、中止、重啓、刪除、快照、修改規格、離線遷移、修改雲主機名稱等操做)、鏡像快照管理、安全組管理、網絡資源管理(經過管理內網 IP 和外網 IP 浮動池,使用獲取,銷燬釋放至IP池)、監控報警(雲主機的各項指標監控)。
Pass 服務:基於 IaaS 構建的多租戶 PaaS 服務(包括存儲服務、數據庫)
Kubernetes:多租戶的集羣編排的容器服務
Kubernetes服務爲分佈式應用服務提供容器的建立、編排、調度、服務發現、彈性伸縮等功能。基於 Kubernetes 的特性同時融合基礎服務的負載均衡服務可以保證服務的高可用、高可靠、彈性擴容、不一樣級別的服務隔離。
管理服務:提供用戶管理和 API 操做相關服務
提供產品的開發環境、測試環境、線上環境等生命週期的容器服務平臺。經過 SOA 服務化系統的部署,支持靜態資源發佈、後端服務的動態擴容發佈、服務的自動上下線等。服務器

數據存儲服務構建

PaaS層上數據庫的構建

基於 MySQL 在計算節點上進行主從部署,隔離網絡環境,提供私有網絡實例。全部實例都是高可用實例,即每一個實例都有 master 和 slave 角色。slave 宕機時,不會對服務產生影響,master 發生宕機的狀況,會切換至 slave 實例,同時服務管理會拉起 master 實例。從而提供穩定可靠的數據庫服務,提供多重安全防禦措施和專業的備份、恢復等功能。網絡

PaaS層上存儲服務的構建

基於 S3 設備,同時提供多節點的斷點上傳、以及圖片和視頻處理雲信息獲取服務。提供高可用、支持斷點續傳,同時針對視頻文件特性,獲取視頻文件元信息的存儲特性。其中上傳服務和雲信息獲取服務採用 Docker 鏡像部署,保證服務的管理自動化。架構

點播組件服務部署

全部點播組件的部署基於 Docker 鏡像,經過容器管理服務保證服務的高可用以及自動化管理。組件圖以下所示:

圖片描述

  • Registry:服務註冊與發現的註冊中心。部署原生的zookeeper集羣做爲獨立的註冊中心,主要使用zookeeper提供的一致性同步協調能力和服務探活能力。zookeeper的部署採用Docker容器,利用容器的服務管理能力保障服務的穩定、高可用。
  • Consumer:調用遠程服務的服務消費方。包含對外提供的API接口和爲直播錄製視頻存儲開放的接口。用戶經過接口進行視頻上傳、轉碼和管理。消費方服務部署採用Docker容器,利用容器的服務管理能力保障服務的穩定、高可用。
  • Provider:調用遠程服務的服務提供方。包含視頻處理服務、視頻檢測服務、錄製視頻處理服務、統計服務。提供方服務部署採用Docker容器,利用容器的服務管理能力保障服務的穩定、高可用。
  • Monitor:統計服務的調用次數和調用時間的監控中心。

組件間調用關係

  • 服務提供者啓動,向註冊中心註冊本身提供的服務。
  • 服務消費者啓動,向註冊彙總新訂閱本身所需的服務。
  • 註冊中心基於長鏈接推送服務提供者列表給消費者。
  • 服務消費者從列表中,基於必定的負載均衡算法,選一臺進行調用,若是失敗,再選取另外一臺調用。
  • 服務消費者和提供者,內存中累計調用次數和時間,定時發送統計數據到監控中心。

優 點

私有云相比較於公有云,在數據安全、充分利用現有硬件和軟件資源、服務質量、管理流程上有突出優點。基於 Docker 構建點播私有云平臺在具備以上優點的同時,還具有資源彈性管理、監控完善、部署簡易、自動化維護等特性。
(1)數據安全。因爲存儲服務部署於用戶的硬件環境,構築在防火牆以後,同時存儲服務的高可用,可以保證用戶數據的可靠和安全。
(2)監控完善。上述描述的哨兵系統介入整個點播私有化平臺的構建過程,可以及時上報各個過程當中組件的異常狀況。
(3)資源彈性管理。基於 Openstack 構建 IaaS 平臺,可以自由管理建立雲主機。基於 Docker 和 Kubernetes 構建容器管理服務,可以基於服務鏡像自由建立服務,同時容器管理服務可以作到彈性擴容。
(4)部署簡易、自動化維護。在經過事先編排好的腳本構建好基礎 IaaS 平臺後,利用服務鏡像可以快速部署服務。容器管理服務的服務發現能力使得服務的維護變得簡單。

總 結

總體來講,私有云因爲其特性,在實施過程當中,運維成本遠遠高於開發成本。因此,在面向用戶交付實施的過程必需簡易,後續維護儘可能作到自動化。盡大可能減小人工介入。本文構建過程當中採用的架構技術特色(Openstack、Docker、Kubernetes、zookeeper)比較符合這些特色。本文以全局概述的方式試圖帶你們認識點播私有化平臺構建的總體架構面貌。後續將會在此基礎上不斷深刻每一個過程的細節,探討實現的考慮點和合理性。


隨着即時通信以及音頻處理和壓縮技術的不斷髮展,效果更好、適用範圍更廣、性能更高的算法和新的技術必將不斷涌現,若是你有好的技術或者分享,歡迎關注網易雲信官方博客和 GitHub:

關注更多技術乾貨內容: 網易雲信博客
歡迎關注 網易雲信 GitHub
歡迎關注 網易雲信官網
相關文章
相關標籤/搜索