使用Opensips和FreeSwitch搭建萬級別的高可用軟交換架構

   最近因爲項目的原因,需要提供一個支持萬級別以上,支持多應用的軟交換服務端架構,對以前的架構做了一個調整,寫一篇文章總結下。

   新的架構主要解決了一下幾個問題:

  • 單套要支持1w左右併發的呼叫
  • 完全的高可用,不能有單點故障
  • 支持多種應用、如外呼、呼入、以及其它基於語音的通訊應用
  • 支持多種錄音方式,最少兩種


  整個平臺外部依賴的服務除了數據庫主要就只有Opensips和FreeSwitch,整體的架構圖如下所示:

   整體的設計思路如下,對外提供的接口服務或者CTI接口服務,全部使用負載均衡服務,可以通過F5,Nginx,或者Haproxy來實現,看具體的需求。

   opensips在8核16的情況可以處理5w以上的分機註冊和呼叫路由,因爲opensips沒有做負載均衡,做的是主從;

   freeswitch 做媒體服務器,只處理媒體相關功能以及提供呼叫控制功能,單臺媒體服務器加錄音功能,大概一臺可以支持250併發呼叫;

    其它應用因爲需要連FreeSwitch的ESL,所以併發不是無限的,因而也需要做集羣;

   核心的設計思想在於把FreeSwitch和自己開發的一些CTI、ACD、IVR、OI(外呼接口)這些和一臺FS綁定在一起作爲一個PBX單元,放在一起的核心思想主要是這些可以作爲整個通訊能力平臺的基礎單元,如果一對多的情況,不太好處理事件重複的情況;

   核心的調度組件在於分配服務,分配服務的主要職責在於將請求分發到不同的計算單元上,同時將事件分配到的事件處理源;調度組件的難度在於呼叫是一個持續的過程,發起呼叫之後要保證後續所有和這個相關的呼叫要發到同一個計算單元上。

  在高可用處理的情況下,如果一臺計算單元內任何服務出現問題,則優先自動重啓該服務,如果重啓失敗,會將該計算單元置爲不用,不分配新的請求,但是並不影響現有的呼叫請求。
————————————————
版權聲明:本文爲CSDN博主「voiceSipper」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yugan7061/article/details/89679882

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章