深圳市宝安区华美居

0086-18665301040

Asterisk-16优化了stasis message bus,提升了消息处理性能

Asterisk-16优化了stasis message bus,提升了消息处理性能

Asterisk 12中添加了一个新的core模块-Stasis Message Bus。就像它的名称一样,Stasis虽然是一个内部publish/subscribe message,但是它可以支持Asterisk实时core或者其他的模块的事件获取,如果有系统用户订阅了实时core或者其他模块的指定消息以后,它负责处理用户这些关注的事件。

如果其他相关的资源需要进行实时处理时,可以对你模块进行订阅,或者要求推送这些信息,这样可以进一步确保信息的一致性。一些实时功能模块,例如CDR,AMI或者现在的新API接口ARI很多时候确实需要通过这些实时信息来处理模块本身的逻辑。比如,呼叫录音或者计费的问题。大部分情况下,如果只是简单的呼叫流程-两个系统用户之间的呼叫,系统生成的处理逻辑就相对简单很多,录音,计费流程比较少。但是,大家可以想象一下,如果呼叫进入到相关的用户A,A然后转接到用户B,或者用户B再进行MOH处理。整个呼叫流程中,录音,计费时间必须进行完整的记录。不幸的是,很多电话系统可能都做了一段路程的处理,没有对整个呼叫流程进行完整准确的关联和记录,这样就会导致语音录音或者计费出现问题。如何把整个流程进行完整的记录处理和关联是一个非常大的挑战。一般情况下,用户需要自己做进一步的处理开发。

我们现在举一个大家经常遇到的问题,就是系统计费的问题。例如,CDR报表的问题,如果用户电话系统执行了转接功能或者其他的处理,用户的呼叫记录就可能丢失,导致计费不准确的问题。但是,如果使用了消息总线的处理,所有呼叫路径的转接,都会生成相应的消息,这样的话,通过汇总处理以后,用户的计费正确率就会得到保证。消息总线会对每一段逻辑处理产生消息,这样就会保证呼叫流程的完整性跟踪,可以帮助开发人员能够完整记录这些流程,开发人员可以对其流程进行归类处理,然后开发出完整的CDR报表。

Asterisk-16优化了stasis message bus,提升了消息处理性能

大家知道,任何功能都有其优势和缺点。其优势已经非常明显,但是这样会带来另外的问题,这个问题是系统会生成大量的消息,可能会影响系统的性能。这就要求开发人员做出一个平衡和取舍。在以前的Asterisk版本中,开发人员提供了过滤功能和缓存的方式来实现降低消息产生带来的问题。系统用户仅所有信息进行提取,缓存机制的处理也比较简单。系统性能仍然会受到影响。

最近,Asterisk开发人员在Asterisk-16 或者Asterisk-17上增加了一个新的处理机制,就是在缓存和过滤消息的处理的方式中,针对通道的管理中增加了通道快照功能和进一步的过滤优化。在通道中实现了快照缓存的方式。在快照缓存的处理中,很多时候需要通道的介入,用户不想让通道本身包含在消息总线的处理流程中,通道本身也可以修改,而且通道也可能涉及了被锁的可能性。为了解决这些问题,开发人员包括一个永久的只读的通道快照来处理信息,而不是通道本身。这样的话,当总线消息创建时就可以实现通道查看,而不是等信息处理以后才能实现通道查看。另外,因为缓存中的通道快照消息可以支持系统其他服务的获取,其他应用无需直接访问通道本身,访问快照就可以实现消息提取,大大降低了锁定文件的或者通道的次数。以前的快照处理方式都是采用的一般的机制来处理,如果CPU处理能力很高的话是可以保证性能的,如果CPU相对比较弱的话,这种一般的快照机制就会带来性能的问题。

同样的处理机制在订阅过滤方面也进行了升级,以前的订阅过滤没有对特定的消息类型进行过滤。如果用户订阅的话,对所有的消息进行订阅,这样的话,系统会对某些用户逻辑生成大量的无用的消息和垃圾消息。新的消息总线订阅过滤设置可以针对特定的消息类型进行过滤处理,用户仅订阅对自己感兴趣的消息,过滤不感兴趣的消息,这样的话,消息生成的数量就会大大降低。

根据开发人员的测试,通过以上两种消息总线的重新优化,CPU的使用率降低了大约20%。具体技术讨论和代码查阅:

https://gerrit.asterisk.org/#/c/asterisk/+/10479/

https://blogs.asterisk.org/2018/11/07/stasis-improving-performance-through-better-caching-and-filtering/

具体链接关于stasis message bus,参考:

http://www.hiastar.com/doc/asterisk_cn/ARI-API-Improvement_40632402.html

Asterisk-16优化了stasis message bus,提升了消息处理性能

Asterisk-16优化了stasis message bus,提升了消息处理性能

关注微信公众号:asterisk-cn,获得有价值的Asterisk行业分享

Asterisk freepbx 中文官方论坛:http://bbs.freepbx.cn/forum.php

Asterisk freepbx技术文档: www.freepbx.org.cn

融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com

Asterisk/FreePBX中国合作伙伴,官方qq技术分享群(3000千人):589995817

联系电话-18665301040
客服-3
客服-2
客服-1