前言:
最近在接入多個(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ù);