FreeSWITCH和OpenSIPs均衡負(fù)載的方式
在目前的FreeSWITCH和OpenSIPS實(shí)現(xiàn)均衡負(fù)載的手段主要通過(guò)load_balancer和dispatcher的方式來(lái)實(shí)現(xiàn)。當(dāng)然,這兩種方式各有其優(yōu)缺點(diǎn),在實(shí)現(xiàn)均衡負(fù)載時(shí),用戶需要根據(jù)自己的業(yè)務(wù)要求來(lái)配置所實(shí)現(xiàn)的方式。
視頻完整內(nèi)容:
因?yàn)閘oad_balancer 是stateful 模式,所以可以實(shí)現(xiàn)session的很多業(yè)務(wù)控制,而dispatcher是相對(duì)粗放式的一種調(diào)度方式,它是stateless的模式,所以有時(shí)候?qū)艚械墓芾砜赡軙?huì)“失控”,也就是說(shuō),它僅負(fù)責(zé)調(diào)度,至于最后呼叫是否接通,它不會(huì)負(fù)責(zé)處理。
因?yàn),在具體的業(yè)務(wù)中,大部分的PBX呼叫仍然需要對(duì)呼叫流程實(shí)現(xiàn)完整的管理,所以在負(fù)載處理中,本實(shí)驗(yàn)使用的是load_balancer的方式,同時(shí)結(jié)合了OpenSIPS中的FreeSWITCH模塊,從FreeSWITCH推送資源到OpenSIPS處理中心,OpenSIPS根據(jù)系統(tǒng)資源,CPU狀態(tài),心跳等等事件來(lái)對(duì)呼叫進(jìn)行智能分配。
Load_balancer和dispatcher的優(yōu)缺點(diǎn)
在上面的敘述中,筆者已經(jīng)簡(jiǎn)單介紹過(guò)兩種方式的優(yōu)缺點(diǎn)。這里我們?cè)僮鲆恍┻M(jìn)一步的介紹。Dispatcher 是一種Stateless 的mode,當(dāng)然這樣的模式可以輕松實(shí)現(xiàn)大并發(fā)的處理,但是不會(huì)對(duì)呼叫執(zhí)行任何控制,沒(méi)有特定的限制。
所以這種模式是一種相對(duì)松散型的管理模式。而Load_balancer來(lái)說(shuō),它是stateful的mode,這種模式可以支持SIP回話中的一些數(shù)據(jù)管理。它也可以實(shí)現(xiàn)大并發(fā)處理,并且可以對(duì)其回話資源進(jìn)行管理,例如通道,語(yǔ)音,視頻等等。如果僅從呼叫數(shù)量上來(lái)實(shí)現(xiàn)均衡負(fù)載,也不能真正解決每個(gè)FreeSWITCH負(fù)載的及時(shí)調(diào)度,例如如果一個(gè)FreeSWITCH正在進(jìn)行編碼轉(zhuǎn)換時(shí),機(jī)器的處理能力就會(huì)大打折扣。這時(shí),我們需要真正的相關(guān)數(shù)據(jù)來(lái)提醒OpenSIPS。
OpeSIPS 2.3 以上版本支持了FreeSWITCH模塊
這個(gè)對(duì)FreeSWITCH來(lái)說(shuō)絕對(duì)是一個(gè)好消息,通過(guò)ESL接口可以輕松調(diào)用FreeSWITCH數(shù)據(jù),然后通過(guò)訂閱方式輕松傳遞獲取的數(shù)據(jù)到相應(yīng)的模塊中。
在此視頻介紹中,開(kāi)發(fā)人員使用的是Load_balancer 來(lái)實(shí)現(xiàn)均衡負(fù)載,當(dāng)然開(kāi)發(fā)人員也提到了這種方式的優(yōu)勢(shì),比如降低了CPU的壓力,實(shí)現(xiàn)了低呼叫延遲(PDD)。
注意,這里開(kāi)發(fā)人員比僅僅討論了基于語(yǔ)音呼叫,同時(shí)也討論了電話會(huì)議呼叫和視頻會(huì)議的呼叫處理方式。事實(shí)上,在電話會(huì)議或者視頻會(huì)議呼叫時(shí),用戶需要更多注意會(huì)議呼叫處理的不同,必須需要添加更多的處理策略來(lái)調(diào)度視頻會(huì)議或語(yǔ)音電話會(huì)議。因?yàn)椋吘购髢煞N呼叫的用戶可能是完全不同的兩種用戶。
集成InfluxDB實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)讀取
在OpenSIPS側(cè),開(kāi)發(fā)人員使用了InfluxDB實(shí)現(xiàn)對(duì)其數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,從OpenSIPS獲取的數(shù)據(jù),通過(guò)cfg 配置文件中的Timer Route的方式把相關(guān)實(shí)時(shí)數(shù)據(jù)輕松寫入數(shù)據(jù)庫(kù)。
Grafana 實(shí)現(xiàn)非常漂亮的動(dòng)態(tài)圖形化顯示方式
Grafana 是一款非常卓越的實(shí)時(shí)動(dòng)態(tài)圖形化界面系統(tǒng),支持多種方式的數(shù)據(jù)接口,它同時(shí)也支持了InfluxDB。用戶可以輕松通過(guò)界面選擇SQL 查詢語(yǔ)句來(lái)實(shí)時(shí)顯示所需要的數(shù)據(jù)。在圖例中,PDD為黃色的部分表示是低延遲的PDD,這個(gè)機(jī)器使用的是FreeSWITCH的模塊。
實(shí)例文檔下載
根據(jù)視頻會(huì)議人員介紹,OpenSIPS開(kāi)發(fā)人員會(huì)把主要的配置文件和其他相關(guān)文件上傳到官方網(wǎng)站,大家需要下載這些cfg配置文件來(lái)運(yùn)行OpenSIPS和FreeSWITCH。
以上是開(kāi)發(fā)者會(huì)議的整個(gè)視頻內(nèi)容的介紹,更多關(guān)于此均衡負(fù)載解決方案的內(nèi)容,請(qǐng)大家關(guān)注官方網(wǎng)站獲取完整的cfg文件來(lái)實(shí)現(xiàn)或模擬自己的環(huán)境。
獲得更多有價(jià)值的技術(shù)文檔和相關(guān)動(dòng)態(tài),請(qǐng)關(guān)注微信公眾號(hào):asterisk-cn,技術(shù)論壇:www.issabel.cn/forum。