转-使用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单元,放在一起的核心思想主要是这些可以作为整个通讯能力平台的基础单元,如果一对多的情况,不太好处理事件重复的情况;

   核心的调度组件在于分配服务,分配服务的主要职责在于将请求分发到不同的计算单元上,同时将事件分配到的事件处理源;调度组件的难度在于呼叫是一个持续的过程,发起呼叫之后要保证后续所有和这个相关的呼叫要发到同一个计算单元上。

  在高可用处理的情况下,如果一台计算单元内任何服务出现问题,则优先自动重启该服务,如果重启失败,会将该计算单元置为不用,不分配新的请求,但是并不影响现有的呼叫请求。
————————————————
原文链接:https://blog.csdn.net/yugan7061/article/details/89679882

猜你喜欢

转载自blog.csdn.net/gredn/article/details/104940632