系统架构与部署
集群部署
在实际应用中,一般都会配有相应的 Proxy(代理服务器),后台业务使用 HA 或负载分担的集群部署。示意图如下:
在上图中,Kamailio 和 Nginx 分别作为 SIP 和 HTTP 的 Proxy,双机 HA 部署,只有主用节点对外提供服务。
FreeSWITCH 服务器使用集群部署,请求由 Proxy 按负载均衡算法分发(最简单的分发策略是负载均衡)。
NATS 服务器使用 Raft 集群部署。Raft 集群的特点是通过选举,可以选举出主服务节点,其它为从服务节点。当主节点故障时剩余节点可以继续对外进行服务。Raft 服务需要少数服从多数,因而节点需要奇数个配置,典型地,3 节点集群允许一个节点失败,5 节点的集群允许 2 个节点失败。NATS 的自己实现的集群机制需要与客户端相配合,客户端 SDK 知道应该连接到哪个 NATS 节点,而不会丢失消息。
图中的控制器是第三方的通话逻辑控制,理论上也需要集群部署。
XSwitch 支持所有这些不同逻辑的集群部署方式。集群部署需要更多的服务器。