android 高并发弹幕,高并发实时直播弹幕研发实践
高并發(fā)實時直播彈幕研發(fā)實踐
直播間特點
聊天室限制人數(shù)的原因
應(yīng)對萬級以上的實時互動
跨服務(wù)器是為了解決單一服務(wù)器接入數(shù)量限制、發(fā)布消息吞吐限制等問題;
多進程并發(fā)則是為了充分利用多核CPU以及減小一個循環(huán)規(guī)模從而達(dá)到降低延遲的目的。
云巴實時系統(tǒng)的設(shè)計
云巴是基于MQTT協(xié)議實現(xiàn)的實時通信系統(tǒng),采用Erlang/OTP的架構(gòu)設(shè)計。簡單地來說,云巴實時系統(tǒng)的設(shè)計包括多層結(jié)構(gòu)、微服務(wù)兩個要點。
多層結(jié)構(gòu)
云巴系統(tǒng)設(shè)計中,多層結(jié)構(gòu)意味著一個基本業(yè)務(wù)邏輯的完成需要經(jīng)歷多個模塊(如圖上所示)。
云巴多層結(jié)構(gòu)設(shè)計有三個主要特點:
- 所有模塊均可獨立運行,互不干擾。 任一模塊在運行的過程中,無需依賴其他模塊。除此以外,還會對所有模塊設(shè)立在線監(jiān)控,從而實現(xiàn)生產(chǎn)狀態(tài)下的實時告警。同時,模塊獨立運行還能夠達(dá)到持續(xù)集成的效果;
細(xì)粒度擴容,包括但不限于對接入進行擴容等;
使用「隔離」。 顧名思義,系統(tǒng)可以為用戶指定特定的路徑,也可以在某些路徑出現(xiàn)問題以后,強行從系統(tǒng)里摘除路徑,達(dá)到「隔離」效果。
微服務(wù)化
雖然近期微服務(wù)已一個新興事物的身份被廣泛討論,但其實,微服務(wù)可以算是一個老 概念了。
比如Erlang/OTP就是一個成熟已久的典型微服務(wù)架構(gòu)。其作為微服務(wù)架構(gòu)的特點就在于業(yè)務(wù)邏輯非常簡單的同時,并發(fā)量也非常高。
云巴采用的正是Erlang/OTP的架構(gòu)設(shè)計,在微服務(wù)化的方面的體現(xiàn)則是將業(yè)務(wù)邏輯封裝成一個RPC Service,以及RPC Service部署微一個OTP Worker。
云巴實時系統(tǒng)的特點
云巴實時系統(tǒng)的設(shè)計特點主要有:擁有海量輕量級任務(wù)、任務(wù)與運行位置無關(guān)以及水平擴展。任務(wù)與運行位置無關(guān),這就意味著在任務(wù)池中,可以動態(tài)地把任務(wù)調(diào)度到不同物理機上,同時數(shù)據(jù)要存儲在獨立集群中。
海量的輕量級任務(wù)包括長連接創(chuàng)建的任務(wù)、用戶請求產(chǎn)生時創(chuàng)建的任務(wù)。
長連接任務(wù)即為,當(dāng)一個長連接接入時,系統(tǒng)會創(chuàng)建一個任務(wù)來管理和維持長連接;
同樣地,請求任務(wù)則是,當(dāng)一個用戶請求(比如發(fā)送一條彈幕)產(chǎn)生時,就會創(chuàng)建一個任務(wù)來管理該請求。
對于云巴來講,不論是用戶加入了一個直播間還是發(fā)送了一條彈幕,都可以以Pub/Sub模型來實現(xiàn)。Pub/Sub模型中比較重要的詞匯為「publish」、「subscribe」以及「unsubscribe」。
比如,一個用戶進入了一個直播間,則可以視為訂閱(subscribe)了該直播間;
進入之后在直播間發(fā)送彈幕,視為向這個直播間發(fā)送(publish)了一條消息;
而由于進入直播間的用戶都已經(jīng)訂閱過該直播間,所以其他用戶都看到了這條彈幕。
一旦用戶退出了直播間,則視為取消訂閱(unsubscribe)了直播間,再也收不到該直播間里面其他用戶發(fā)布的彈幕了。
傳統(tǒng)的消息發(fā)布過程
傳統(tǒng)的消息發(fā)布過程有兩種,第一種是遍歷列表里的每一個UID,讀取路由,逐一發(fā)送消息;
第二種是遍歷每一臺服務(wù)器,發(fā)送消息,然后將訂閱關(guān)系保存在每一臺服務(wù)器內(nèi)。以上兩種做法都有可能導(dǎo)致延遲過多的問題。
云巴的消息發(fā)布過程
在云巴,消息的發(fā)布過程為,首先在接收到任務(wù)請求后,會發(fā)布任務(wù)計算UID列表分片,對總?cè)蝿?wù)進行分片處理。之后將分片任務(wù)分發(fā)給任務(wù)池,執(zhí)行各個分片任務(wù)。最后,發(fā)布任務(wù)匯聚請求,返回所有的分片任務(wù)。
「分片」——「匯聚」設(shè)計的好處在于,可以有效控制最大延遲。目前云巴是將此整個過程控制在200ms以內(nèi)。除此以外,還能夠擴大任務(wù)池,提升系統(tǒng)并發(fā)能力。
總結(jié)
以上是生活随笔為你收集整理的android 高并发弹幕,高并发实时直播弹幕研发实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金什么时候买入合适 需要考虑不同方面
- 下一篇: 公积金放款当天到账吗