Chinaunix首页 | 论坛 | 博客
  • 博客访问: 135313
  • 博文数量: 12
  • 博客积分: 1616
  • 博客等级: 上尉
  • 技术积分: 206
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-18 13:38
文章分类
文章存档

2013年(3)

2012年(9)

我的朋友

分类: C/C++

2013-09-10 13:55:08

在这次项目中,从性能上考虑,将代理注册机制提升到代理服务器来完成,同时对SBC的探测和中继的各类保活仍然是在媒体服务器来完成的。在媒体服务器处理呼叫的时候,需要对每个注册账号的注册的SBC地址等信息,进行获取,以便获取到对应的呼叫目标地址。在后续,分机的注册信息,分机的补充业务信息等内容,都需要在代理服务器、媒体服务器甚至于Web服务器之间进行共享。为了解决程序之间数据访问的问题,同时又兼顾性能问题,采用Redis可以极大程度上解决这个问题。

关于代理注册部分:

代理注册进程中,对于注册结果,都动态的更新到Redis中。同时,设置注册结果的有效时间。每次注册刷新的时候,都将结果刷新到Redis中。

媒体服务器在进行呼出的时候,判断如果是到IMS侧的呼叫,需要获取对应代理注册账号的注册信息,获取到对应的SBC的地址,然后将其添加到呼出请求的Route头域。

 

对于IPPBX阶段的扩展:

需要考虑的,分机号码、分机业务开关、分机业务信息、性能优化

分机号码:将所有的分机号码,以集合的形式存储到Redis中,便于判断某个号码是否内部分机。

分机业务开关:某个分机的业务开关,以及对应的业务数据,可以预先加载到内存中。

性能优化:对于代理服务器,要处理下挂分机的注册信息,并且要对呼叫进行认证,这些过程都需要与数据库MySQL交互。为了提高性能,支持高并发,对于分机的注册信息,写入到数据库MySQL的同时,缓存一份到Redis,每次进行认证检查的时候,先查缓存,缓存不存在的时候,再从数据库里获取。提高性能的幅度会极大,夸张到95%。http://www.opensips.org/Documentation/Tutorials-MemoryCaching

阅读(2862) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~