RTC服務(wù)之策略切換

前言:
最近在接入多個(gè)RTC服務(wù)廠商,目前也了解了常用的一些廠商,如:騰訊、網(wǎng)易、聲網(wǎng)、即構(gòu),阿里等等。在總體調(diào)用上類似,但某些SDK的細(xì)節(jié)處理上較為奇葩。
如果對(duì)于RTC服務(wù)有很高的要求或者需要做備選方案,那么接入多家RTC廠商就很有必要。值得一提的是,在接入多個(gè)SDK廠商之后,可以依據(jù)流量的大小,策略的分配不同廠商的RTC服務(wù),從而降低費(fèi)用。并且,當(dāng)其中一家廠商的延遲較高時(shí),可以通過(guò)切換不同的廠商RTC來(lái)提供服務(wù),從而達(dá)到高穩(wěn)定性。

為什么要做策略切換

  • 提高穩(wěn)定性:由于故障性原因?qū)е履承S商RTC服務(wù)異常,或者由于網(wǎng)絡(luò)阻塞延遲卡頓黑屏等等影響用戶體驗(yàn);服務(wù)端在通過(guò)對(duì)一些關(guān)鍵性指標(biāo)分析后,從而策略的選擇一種更適合當(dāng)前的RTC廠商服務(wù);
  • 降低資費(fèi):隨著用戶量的增長(zhǎng),從而帶來(lái)了RTC服務(wù)的流量大大增長(zhǎng),那么某些廠商的資費(fèi)也會(huì)大大增加,如果通過(guò)合理的分配流量到不同的廠商服務(wù),那么即可通過(guò)較低的成本使用更為可靠的服務(wù);(并且不會(huì)依賴某一家廠商,這點(diǎn)很重要哦)

策略切換

說(shuō)到策略切換,那么如何去做呢?
客戶端:
首先,我們需要確定自己的業(yè)務(wù)層有哪些需求。確定了業(yè)務(wù)層需求,接著就是去定義我們需要用到的RTC基礎(chǔ)模型,基礎(chǔ)定義,基礎(chǔ)方法等。我們稱之為 RTCManagerDef。
基礎(chǔ)定義中包括使用場(chǎng)景(Scene),角色(Role),網(wǎng)絡(luò)質(zhì)量(NetworkQuality)。
基礎(chǔ)模型中包括不同廠商所需要的傳參。
基礎(chǔ)方法是對(duì)RTC服務(wù)商的抽象方法,由業(yè)務(wù)層直接調(diào)用,具體實(shí)現(xiàn)是基于RTC服務(wù)商。

其次,我們就可以用到熟悉的設(shè)計(jì)模式去設(shè)計(jì)整個(gè)動(dòng)態(tài)切換的層級(jí)和功能類。這里是我對(duì)自己業(yè)務(wù)所設(shè)計(jì)的策略切換的RTC管理類。

策略切換

結(jié)構(gòu):

  • RTCManager(管理類):為業(yè)務(wù)層提供調(diào)用的方法;合理封裝基礎(chǔ)調(diào)用方法是這個(gè)管理類的重點(diǎn);
  • RTCProtocal(RTC協(xié)議) :為業(yè)務(wù)層提供的RTC事件回調(diào);
  • Context (關(guān)聯(lián)類):解決內(nèi)部調(diào)用不同RTC廠商服務(wù),切換廠商服務(wù)策略以及關(guān)聯(lián)內(nèi)部實(shí)現(xiàn)和外部調(diào)用是這個(gè)類的作用;
  • EngineStrategy (引擎策略類):引擎策略的基礎(chǔ)類,規(guī)范化眾多RTC廠商服務(wù)的調(diào)用方法,統(tǒng)一內(nèi)部方法;
  • ConcreteEngineStrategy (具體策略類):繼承于引擎策略類,實(shí)現(xiàn)引擎策略類的方法,以及實(shí)現(xiàn)引擎內(nèi)部事件回調(diào),并回調(diào)RTCProtocal的事件;

整體架構(gòu)基于設(shè)計(jì)模式中的策略、工廠、適配器等,這種架構(gòu)主要是考慮到后期的拓展更多的廠商。 不能說(shuō)是最好的方案,但是目前比較適合當(dāng)前項(xiàng)目,對(duì)后面拓展比較友好,接入新的廠商不會(huì)影響現(xiàn)有的上層邏輯;
這種設(shè)計(jì)層級(jí)上可能會(huì)比較多,但是優(yōu)點(diǎn)也是很明顯的,隨時(shí)可以切換不同的服務(wù)。

架構(gòu)說(shuō)完,就談?wù)劸唧w接入的問(wèn)題吧;
因?yàn)橄胍龅娇梢圆呗郧袚Q不同的Service,所以需要將眾多的Service providers適配自己的規(guī)則,這無(wú)疑是一件很難得事情,因?yàn)椴煌腞TC廠商內(nèi)部的實(shí)現(xiàn)都各不相同,所以需要足夠了解他們的調(diào)用順序以及方法實(shí)現(xiàn),狀態(tài)回調(diào)等等。這需要和他們的開(kāi)發(fā)者深度溝通之后才可以了解到。策略切換的重點(diǎn)就是使用自己制定的規(guī)范適配眾多RTC廠商服務(wù);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 五月份時(shí),英特爾宣布推出OpenVINO工具包,它主要應(yīng)用于將計(jì)算機(jī)圖形和深度學(xué)習(xí)技術(shù)整合到前沿的視覺(jué)應(yīng)用中。Op...
    達(dá)微閱讀 1,637評(píng)論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂(lè)有人憂愁,有人驚喜有人失落,有的覺(jué)得收獲滿滿有...
    陌忘宇閱讀 8,814評(píng)論 28 54
  • 信任包括信任自己和信任他人 很多時(shí)候,很多事情,失敗、遺憾、錯(cuò)過(guò),源于不自信,不信任他人 覺(jué)得自己做不成,別人做不...
    吳氵晃閱讀 6,355評(píng)論 4 8
  • 步驟:發(fā)微博01-導(dǎo)航欄內(nèi)容 -> 發(fā)微博02-自定義TextView -> 發(fā)微博03-完善TextView和...
    dibadalu閱讀 3,380評(píng)論 1 3
  • 回這一趟老家,心里多了兩個(gè)疙瘩。第一是堂姐現(xiàn)在談了一個(gè)有婦之夫,在她的語(yǔ)言中感覺(jué),她不打算跟他有太長(zhǎng)遠(yuǎn)的計(jì)劃,這讓...
    安九閱讀 3,640評(píng)論 2 4

友情鏈接更多精彩內(nèi)容