vas抓包服务重构

我要开发同款
proginn10012195282024年04月29日
150阅读
所属分类golang

作品详情

该项目是坐席辅助功能的一个模块,主要功能是抓取线路通话的数据,拆分数据,然后把语音流推送到 JAVA端,java 端把用户和坐席的通话内容通过 asr 转成文本,之后通过 bot 模块,给出提示信息。存在的问题: 并发数据无法提升,只能维持在300路左右。分析原因: 1. 网卡抓包数据并发多时会丢包2. 业务处理太慢,导致队列阻塞,最终会导致1丢包。3. 推送 udp 数据会丢包。解决方案: 1. 替换底层的库,由之前的 libcap 转成 mmap ,可以减少一次内存分配,有助于减少丢包。2. 解析到 udp 数据之后,立即分发,不做 rtp 的解析和相关解码工作,使得分发速度提升。3. 针对 udp 丢包情况,接收端一方面要提升缓存 buffer 的大小,另一方面还要接收到数据之后立即分发,由其他线程来处理数据。 另外提供 grpc 的通信模式。4. 优化了一些业务逻辑不合理的情况,保证了代码结构的可维护性。经过以上几点的优化,vas 的并发能力稳定地保持在2000路,提升了项目的交付能力。
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论