RTMP協議互聯網教育課堂直播點播系統EasyDSS獲取直播信息優化設計方案介紹

EasyDSS視頻平臺我們講過很多,EasyDSS相較於其他視頻平臺的特點是可以直播也可以點播,支持將視頻文件上傳或者推流桌面錄屏等,該特點在很多教育行業課堂直播上發揮了作用。EasyDSS直播列表頁面如下:

95.png

該頁面主要獲取10行數據,如果正在處於直播狀態中,則顯示對應的信息,前端網頁主要發送 /live/list 請求到 Go 後臺接口,Go 層收到請求後,收集信息返回到前端。目前的設計如下:

96.png

該處邏輯的調用順序爲:

  1. 前端發送 post 請求,獲取一頁 10 個數據:/live/list;
  2. Go 層收到請求,從數據庫層獲取對應的 10 個數據;
  3. 因爲 Go 層不知道每個直播間對應的直播狀態,因此需要向 C 層發送 http 請求,獲取對應的 10 個數據的信息;
  4. Go 層每個數據都會向 C 層發送一次 http 請求。
  5. Go 層收到 C 層直播結果後,將數據處理後返回給前端。

以上設計,在用戶量不多的情況,問題不大,但是在數據量大的時候有以下缺點:

  1. 前端發送1次 http 請求,獲取10個數據,Go層就要發送10次http請求到C層。如果有10個前端,那麼Go層就會發送100次請求到 C 層,導致 Go 層和 C 層的壓力都會非常大;
  2. 多個前端存在的情況下,有可能查詢很多相同的數據,導致 Go 層向 C 層的請求有很多冗餘存在。

針對以上缺點對該模塊進行結構上的重新設計,如下圖:

97.png

首先將該模塊分成兩個模塊,Go層和C層交互的模塊A,前端和Go層交互的模塊B。以下對模塊A和B分別進行描述。

模塊A的設計如下:

  1. Go 層定時向C層發送獲取全部正在直播狀態的信息,定時時間可以配置,一般在 1s 以內都不會影響前端的顯示;
  2. C 層收到請求後,將正在直播的直播間信息返回;
  3. Go 層收到C 層的信息後,將信息加入到自己的緩存層中;
  4. 緩存層中的數據被定時更新掉。
    模塊B的設計如下:
  5. 前端發送 HTTP 請求到 Go 層;
  6. Go 層收到請求後,從數據庫獲取直播間信息;
  7. Go 層從緩存層中獲取正在直播的直播間信息,更新直播間信息,然後將信息返回給前端;
  8. 前端都到信息後,顯示出來。

新的設計,在有大量用戶和前端的情況下,比如100個前端,前端會向Go層發送100個http請求,而 Go 層僅僅發送一次請求到 C 層,相對於以前要發送 1000 次請求到 C 層,極大的優化了代碼,消耗更少的性能。

爲了更好適應不同服務的性能,TSINGSEE青犀視頻也會對其他雲邊端視頻平臺進行不同程度的優化,大家可以關注我們獲取最新信息。如果還想了解更多EasyDSS相關內容,歡迎聯繫我們瞭解或者試用。

DSS7.png

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