色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

彈幕系統設計實踐

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-01-15 11:42 ? 次閱讀


背景

為了更好的支持東南亞直播業務,產品設計為直播業務增加了彈幕。第一期彈幕使用騰訊云支持,效果并不理想,經常出現卡頓、彈幕偏少等問題。最終促使我們開發自己的彈幕系統。性能要求是需要支持,單房間百萬用戶同時在線。

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

問題分析

按照背景來分析,系統將主要面臨以下問題:

  1. 帶寬壓力

    假如說每3秒促達用戶一次,那么每次內容至少需要有15條才能做到視覺無卡頓。15條彈幕+http包頭的大小將超過3k,那么每秒的數據大小約為8Gbps,而運維同學通知我們所有服務的可用帶寬僅為10Gbps。

  2. 弱網導致的彈幕卡頓、丟失

    該問題已在線上環境

  3. 性能與可靠性

    百萬用戶同時在線,按照上文的推算,具體QPS將超過30w QPS。如何保證在雙十一等重要活動中不出問題,至關重要。性能也是另外一個需要著重考慮的點。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

帶寬優化

為了降低帶寬壓力,我們主要采用了以下方案:

  1. 啟用Http壓縮

    通過查閱資料,http gzip壓縮比率可以達到40%以上(gzip比deflate要高出4%~5%)。

  2. Response結構簡化0454f32e-947f-11ed-bfe3-dac502259ad0.jpg

  3. 內容排列順序優化

    根據gzip的壓縮的壓縮原理可以知道,重復度越高,壓縮比越高,因此可以將字符串和數字內容放在一起擺放

  4. 頻率控制

  • 帶寬控制:通過添加請求間隔參數(下次請求時間),保證客戶端的請求頻率服務端可控。以應對突發的流量增長問題,提供有損的服務。
  • 稀疏控制:在彈幕稀疏和空洞的時間段,通過控制下次請求時間,避免客戶端的無效請求。

彈幕卡頓、丟失分析

在開發彈幕系統的的時候,最常見的問題是該怎么選擇促達機制,推送 vs 拉取 ?

Long Polling via AJAX

客戶端打開一個到服務器端的 AJAX 請求,然后等待響應,服務器端需要一些特定的功能來允許請求被掛起,只要一有事件發生,服務器端就會在掛起的請求中送回響應。如果打開Http的Keepalived開關,還可以節約握手的時間。

047123aa-947f-11ed-bfe3-dac502259ad0.jpg

優點: 減少輪詢次數,低延遲,瀏覽器兼容性較好。缺點: 服務器需要保持大量連接。

WebSockets

長輪詢雖然省去了大量無效請求,減少了服務器壓力和一定的網絡帶寬的占用,但是還是需要保持大量的連接。那么人們就在考慮了,有沒有這樣一個完美的方案,即能雙向通信,又可以節約請求的 header 網絡開銷,并且有更強的擴展性,最好還可以支持二進制幀,壓縮等特性呢?于是人們就發明了這樣一個目前看似“完美”的解決方案 —— WebSocket。它的最大特點就是,服務器可以主動向客戶端推送信息,客戶端也可以主動向服務器發送信息,是真正的雙向平等對話。

049730f4-947f-11ed-bfe3-dac502259ad0.jpg

優點:較少的控制開銷,在連接創建后,服務器和客戶端之間交換數據時,用于協議控制的數據包頭部相對較小。在不包含擴展的情況下,對于服務器到客戶端的內容,此頭部大小只有2至10字節(和數據包長度有關);對于客戶端到服務器的內容,此頭部還需要加上額外的4字節的掩碼。相對于 HTTP 請求每次都要攜帶完整的頭部,此項開銷顯著減少了。更強的實時性,由于協議是全雙工的,所以服務器可以隨時主動給客戶端下發數據。相對于HTTP請求需要等待客戶端發起請求服務端才能響應,延遲明顯更少;即使是和Comet等類似的長輪詢比較,其也能在短時間內更多次地傳遞數據。長連接,保持連接狀態。

Long Polling vs Websockets

無論是以上哪種方式,都使用到TCP長連接,那么TCP的長連接是如何發現連接已經斷開了呢?

TCP Keepalived會進行連接狀態探測,探測間隔主要由三個配置控制。

keepalive_probes:探測次數(默認:7次)

keepalive_time 探測的超時(默認:2小時)

keepalive_intvl 探測間隔(默認:75s)

但是由于在東南亞的弱網情況下,TCP長連接會經常性的斷開:

Long Polling 能發現連接異常的最短間隔為:min(keepalive_intvl, polling_interval)

Websockets能發現連接異常的最短間隔為:Websockets: min(keepalive_intvl, client_sending_interval)

如果下次發送數據包的時候可能連接已經斷開了,所以使用TCP長連接對于兩者均意義不大。并且弱網情況下Websockets其實已經不能作為一個候選項了

  • 即使Websockets服務端已經發現連接斷開,仍然沒有辦法推送數據,只能被動等待客戶端重新建立好連接才能推送,在此之前數據將可能會被采取丟棄的措施處理掉。
  • 在每次斷開后均需要再次發送應用層的協議進行連接建立。

根據了解騰訊云的彈幕系統,在300人以下使用的是推送模式,300人以上則是采用的輪訓模式。但是考慮到資源消耗情況,他們可能使用的是Websocket來實現的彈幕系統,所以才會出現彈幕卡頓、丟失的情況。綜上所述,Long Polling和Websockets都不適用我們面臨的環境,所以我們最終采取了短輪訓 的方案來實現彈幕促達

04b59d32-947f-11ed-bfe3-dac502259ad0.jpg

可靠與性能

為了保證服務的穩定性我們對服務進行了拆分,將復雜的邏輯收攏到發送彈幕的一端。同時,將邏輯較為復雜、調用較少的發送彈幕業務與邏輯簡單、調用量高的彈幕拉取服務拆分開來。服務拆分主要考慮因素是為了不讓服務間相互影響,對于這種系統服務,不同服務的QPS往往是不對等的,例如像拉取彈幕的服務的請求頻率和負載通常會比發送彈幕服務高1到2個數量級,在這種情況下不能讓拉彈幕服務把發彈幕服務搞垮,反之亦然,最?度地保證系統的可用性,同時也更更加方便對各個服務做Scale-Up和Scale-Out。服務拆分也劃清了業務邊界,方便協同開發。

在拉取彈幕服務的一端 ,引入了本地緩存。數據更新的策略是服務會定期發起RPC調?從彈幕服務拉取數據,拉取到的彈幕緩存到內存中,這樣后續的請求過來時便能直接?走本地內存的讀取,?大幅降低了調用時延。這樣做還有另外一個好處就是縮短調?鏈路,把數據放到離?戶最近的地?,同時還能降低外部依賴的服務故障對業務的影響,

04d698b6-947f-11ed-bfe3-dac502259ad0.jpg

為了數據拉取方便,我們將數據按照時間進行分片,將時間作為數據切割的單位,按照時間存儲、拉取、緩存數據(RingBuffer),簡化了數據處理流程。與傳統的Ring Buffer不一樣的是,我們只保留了尾指針,它隨著時間向前移動,每?秒向前移動一格,把時間戳和對應彈幕列表并寫到一個區塊當中,因此最多保留60秒的數據。同時,如果此時來了一個讀請求,那么緩沖環會根據客戶端傳入的時間戳計算出指針的索引位置,并從尾指針的副本區域往回遍歷直至跟索引重疊,收集到一定數量的彈幕列表返回,這種機制保證了緩沖區的區塊是整體有序的,因此在讀取的時候只需要簡單地遍歷一遍即可,加上使用的是數組作為存儲結構,帶來的讀效率是相當高的。

再來考慮可能出現數據競爭的情況。先來說寫操作,由于在這個場景下,寫操作是單線程的,因此?可不必關心并發寫帶來的數據一致性問題。再來說讀操作,由圖可知寫的方向是從尾指針以順時針?向移動,?讀?向是從尾指針以逆時針方向移動,?決定讀和寫的位置是否出現重疊取決于index的位置,由于我們保證了讀操作最多只能讀到30秒內的數據,因此緩沖環完全可以做到無鎖讀寫

在發送彈幕的一端 ,因為用戶一定時間能看得過來彈幕總量是有限的,所以可以對彈幕進行限流,有選擇的丟棄多余的彈幕。同時,采用柔性的處理方式,拉取用戶頭像、敏感詞過濾等分支在調用失敗的情況下,仍然能保證服務的核心流程不受影響,即彈幕能夠正常發送和接收,提供有損的服務。

總結

04fb4be8-947f-11ed-bfe3-dac502259ad0.jpg

最終該服務在雙十二活動中,在Redis出現短暫故障的背景下,高效且穩定的支撐了70w用戶在線,成功完成了既定的目標



審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7134

    瀏覽量

    89402
  • 管理系統
    +關注

    關注

    1

    文章

    2573

    瀏覽量

    36025

原文標題:彈幕系統設計實踐

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    華納云:VFS在提升文件系統性能方面的具體實踐

    VFS(Virtual File System)通過提供統一的接口和抽象層,使得操作系統能夠以高效的方式管理和訪問不同的文件系統。以下是一些VFS在提升文件系統性能方面的具體實踐示例:
    的頭像 發表于 11-27 15:59 ?226次閱讀

    MES系統的最佳實踐案例

    效率、降低成本、保證產品質量。 MES系統的最佳實踐案例 引言 在當今競爭激烈的制造業環境中,企業必須不斷尋求創新和改進的方法來保持競爭力。MES系統作為一種關鍵的信息技術工具,已經被廣泛應用于各種制造行業,以實現生產過程的優化
    的頭像 發表于 10-27 09:33 ?1360次閱讀

    計算機控制系統實踐報告

    計算機控制技術實踐報告
    發表于 10-17 13:45 ?0次下載

    UWB定位系統在智能制造中的應用實踐

    UWB(Ultra-Wideband,超寬帶)定位系統在智能制造中的應用實踐已經取得了顯著成效。以下是對其應用實踐的詳細闡述: 一、高精度定位與實時監控 高精度定位:UWB技術以其厘米級甚至毫米級
    的頭像 發表于 09-11 11:46 ?497次閱讀
    UWB定位<b class='flag-5'>系統</b>在智能制造中的應用<b class='flag-5'>實踐</b>

    RTOS開發最佳實踐

    基于RTOS編寫應用程序時,有一些要注意事項。在本節中,您將學習RTOS開發最佳實踐,例如POSIX合規性、安全性和功能安全認證。
    的頭像 發表于 08-20 11:24 ?499次閱讀

    新書發布——《實時操作系統應用技術:RT-Thread與ARM編程實踐

    RT-Thread又一本新書《實時操作系統應用技術——基于RT-Thread與ARM的編程實踐》發布,標志著RT-Thread生態和實時操作系統技術教育領域又迎來了一個重要里程碑。本書是暢銷書作者
    的頭像 發表于 05-11 08:35 ?862次閱讀
    新書發布——《實時操作<b class='flag-5'>系統</b>應用技術:RT-Thread與ARM編程<b class='flag-5'>實踐</b>》

    華為云 FunctionGraph 構建高可用系統實踐

    每年,網上都會報道 XXX 系統異常不可用,給客戶帶來巨大的經濟損失。云服務的客戶基數更大,一旦出現問題,都將給客戶和服務自身帶來極大影響。本文將基于華為云 FunctionGraph 自身的實踐
    的頭像 發表于 05-09 23:14 ?502次閱讀
    華為云 FunctionGraph 構建高可用<b class='flag-5'>系統</b>的<b class='flag-5'>實踐</b>

    【大語言模型:原理與工程實踐】探索《大語言模型原理與工程實踐》2.0

    《大語言模型“原理與工程實踐”》是關于大語言模型內在機理和應用實踐的一次深入探索。作者不僅深入討論了理論,還提供了豐富的實踐案例,幫助讀者理解如何將理論知識應用于解決實際問題。書中的案例分析有助于
    發表于 05-07 10:30

    訊維融合通信系統在機場通信網絡建設中的實踐

    訊維融合通信系統在機場通信網絡建設中的實踐主要體現在以下幾個方面: 首先,在機場通信網絡的構建過程中,訊維融合通信系統能夠實現各類通信設備和系統的無縫對接與融合。這包括航管
    的頭像 發表于 04-19 16:30 ?487次閱讀

    訊維融合通信系統在金融數據中心建設的實踐探索

    訊維融合通信系統在金融數據中心建設的實踐探索中,展現出了其獨特的技術優勢和應用價值。以下是對這一實踐探索的詳細分析: 首先,金融數據中心作為金融機構的核心信息樞紐,對通信系統的可靠性、
    的頭像 發表于 04-18 15:41 ?358次閱讀

    訊維融合通信系統:智能通信技術的實踐與應用案例

    訊維融合通信系統作為智能通信技術的杰出代表,已經在多個領域得到了廣泛實踐與應用,為企業和社會帶來了顯著的價值。以下是一些具體的實踐與應用案例: 智慧城市建設中的綜合監控系統 : 在某國
    的頭像 發表于 04-10 16:31 ?631次閱讀

    5G圖傳系統提升指揮車通信效率的實踐案例

    在近年來的指揮車通信實踐中,訊維5G圖傳系統以其卓越的性能和穩定性,為提升指揮車通信效率提供了強有力的支持。以下是一個具體的實踐案例,展示了訊維5G圖傳系統在實際應用中的效果。 ? 某
    的頭像 發表于 03-07 15:36 ?420次閱讀

    淺談配電室智能監控系統的設計與實踐探索

    淺談配電室智能監控系統的設計與實踐探索 張穎姣 安科瑞電氣股份有限公司 上海嘉定201801 摘要:配電室智能監控系統可以運用計算機技術將配電工程的各個環節有機結合起來,全面控制配電系統
    的頭像 發表于 02-19 14:16 ?551次閱讀
    淺談配電室智能監控<b class='flag-5'>系統</b>的設計與<b class='flag-5'>實踐</b>探索

    淺析配電室智能監控系統的設計與實踐探索

    淺析配電室智能監控系統的設計與實踐探索 張穎姣 安科瑞電氣股份有限公司 上海嘉定 201801 摘要:配電室智能監控系統設計,引起供電部門重視,借助科學技術,加大配電室智能監控系統設計
    的頭像 發表于 02-19 14:12 ?447次閱讀
    淺析配電室智能監控<b class='flag-5'>系統</b>的設計與<b class='flag-5'>實踐</b>探索

    醫院配電與能耗監管系統建設實踐分析

    電子發燒友網站提供《醫院配電與能耗監管系統建設實踐分析.docx》資料免費下載
    發表于 01-31 09:11 ?0次下載
    主站蜘蛛池模板: 2020亚洲国产在线播放在线 | 我的好妈妈8高清在线观看WWW | 亚洲人成在线播放网站岛国 | 国产精品高潮呻吟AV久久96 | 亚洲爱视频 | 在线播放国产视频 | 一级毛片在线免费视频 | 黄页网站18以下勿看免费 | 在线黑人抽搐潮喷 | 99久久人妻无码精品系列性欧美 | 且试天下芒果免费观看 | 闺蜜扒开我尿口使劲揉 | 日韩一区二区三区精品 | 成年AV动漫 | 欧美日韩亚洲第一区在线 | 国内精品欧美久久精品 | 两个人的视频免费 | 色妞色视频一区二区三区四区 | 中国欧美日韩一区二区三区 | 最近2018年手机中文字幕 | 免费在线观看的毛片 | 无羞耻肉动漫在线观看 | 久久免费电影 | 亲胸吻胸添奶头GIF动态图免费 | 精品无码人妻一区二区免费AV | 国产一区二区波多野结衣 | 男女车车的车车网站W98免费 | 青青久 | 国语自产二区高清国语自产拍 | 亚洲一区电影在线观看 | 日本综艺大尺度无删减版在线 | 俄罗斯9一14 young处 | 久久综合色一综合色88 | 97精品一区二区视频在线观看 | 免费A级毛片无码无遮挡内射 | 神马电影院午 夜理论 | 看看妇女的B免费看 | 可以看的黄页的网站 | 久久只精品99品免费久 | 国产美女视频一区二区二三区 | 漂亮的av女演员 |