
freeswitch在业务开发中有极大的便利性,因为fs内部实现了很多小功能,这些小功能组合在一起,通过拨号计划就可以实现很多常见的业务功能。
在voip云平台的开发中,我们经常会碰到资源的限制,有外部线路资源方面的,也有voip平台内部资源方面。
根据资源的实际情况,对呼叫做限制,包括cps(每秒呼叫数,call per second)和capacity(呼叫容量),使用fs自带的limit接口,可以很方便的实现需求。
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.8.7
GCC:4.8.5
freeswitch的mod_dptools模块中提供app接口“limit“。
limit
在fs官网文档三种backend的优缺点比较,从速度、持久化、集群能力和时间间隔支持四个维度的比较结果。
transfer dialplan的方式,适用于多个dialplan规则之间的跳转,用的好的情况下会非常灵活方便。
需求1,限制任意ip进入的cps(每秒呼叫数)为300每秒。
需求2,限制任意ip一天的呼入数量为100通。
需求3,限制指定ip的cps为100每秒。
需求4,限制呼出的线路资源的cps为20每秒
需求5,限制全平台capacity并发容量为5000通。
需求6,限制指定ip呼入的capacity并发容量为1000通。
需求7,限制呼出的线路资源的capacity并发容量为500通。
如果我们需要对整个VOIP平台的做呼叫限制,包括cps和capacity,比较通用的做法。
根据"limit_dp"的设置,限制规则如下。
incps_${network_addr},限制单个ip呼入的cps为200每秒。
incps_all,限制呼入总cps为300每秒。
incapacity_all,限制呼叫总容量为5000通。
limit接口很灵活,可以根据具体场景设置不同的限制规则和多重规则。
在backend的选择上,大多数场景使用hash是最快最合适的,有数据持久化需求的场景才考虑hiredis,不建议使用db。
在有设置limit的freeswitch进程中,可以通过如下的命令查看当前的实时capacity容量。
./fs_cli -x 'limit_usage hash incapacity all'
1101
空空如常
求真得真
下一篇:roguelike是什么意思