话务批发余额控制模块 for unibilling
花了一天两夜的时间,终于把 [话务批发余额控制模块] 实现了。Unibilling以后可以胜任话批业务了。话务批发余额控制模块的功能是unibilling作为落地使用的时候,保证上百路并发不至于出现负余额,不至于出现短话单。
说实话,我一直回避这个模块。所以,unibilling以前用的方法是均分余额法,虽然可以做到不出现负余额,但缺点是在话批帐户的余额不太多的时候,易出现短话单,顾客不易接受。
为理顺思路,特意在纸上画了一个大水桶,通过一个总水管,连出四个粗细不一的水龙头。
对着这张图空想了一半天,得出如下设计思路:
- 水龙头放水,大水桶知道。
- 水龙头有水流出,大水桶水位下降。
- 多个水龙头可以一起放水,也可以不一起放水。
- 大小水龙头单位时间内流水量不同。
- 有那个一个时刻: 水桶里的水被水龙头给放干了。
- 往水桶加水,水龙头会继续有水流出。
头脑中有了蓝图,就可以开工了。结构、指针、链表、线程,大家一起上!
实现技术:Asterisk manage interface 即AMI编程; 杜绝数据库操作。
总的来说,实现的比较顺利。并发呼叫测试结果如我所愿。
现在是凌晨1点钟,正在用印度的话务做压力测试。并发60路左右。
更新:
2010-04-05: 增加对IAX2通道类型的处理。
没有评论 ▼