当前位置: 首页 > 工具软件 > UniMRCP > 使用案例 >

unimrcp负载

公良修竹
2023-12-01

做呼叫中心或者语音导航等场景中,经常需要支持MRCP协议,目前主流的MRCP服务都借鉴了unimrcp的框架,并在该框架中编写自己的插件来实现ASR、TTS能力。

但是unimrcp并没有给出集群的解决方案,所以在工程化中,要解决单点问题才能达到真正的可用性。故这里使用nginx来代理sip消息的负载来实现unimrcp的负载,以TCP的sip协议为例:

在nginx.conf中添加sip消息的负载均衡:


stream {
        upstream mrcp-server {
                server 172.16.18.97:5060 max_fails=3 fail_timeout=30s;
                server 172.16.18.98:5060 max_fails=3 fail_timeout=30s;
                server 172.16.18.99:5060 max_fails=3 fail_timeout=30s;
        }
        access_log  logs/access.log  main;

        server {
                listen 5060;
                proxy_connect_timeout 30s;
                proxy_timeout 30s;
                proxy_pass mrcp-server;
        }
}

原理为:

1.sip消息通过nginx反向代理到节点后,节点正常处理sip消息

2.节点响应了sip消息后,返回给nginx相应的sip响应

3.nginx也将sip消息还给前端mrcp客户端

4.mrcp客户端根据sip消息中的节点ip和端口直连后面的节点,mrcp连接和udp连接则跳过了nginx

以上方式可以实现unimrcp的负载均衡

 类似资料: