云通讯网络企业短信群发通知平台超高速下发的解决方案
来源:原创 时间:2018-03-03 浏览:0 次本文通过对目前云通讯平台短信提醍平台进行升级优化,从系统架构调整和业务逻辑控制两方面进行改造:引入队列和线程池,提高接口处理效率,同时进行短信流量阀值控制,减少中间环节和数据协议转换过程,实现了大容量短信的超高速下发
现状说明
目前云通讯平台短信系统的业务处理流程为:来自各外部系统的短信教据提交至短信提醒平台后,散列到磁盘相应目录中,然后由数据处理程序扫描相应磁盘目录下的待发送数
据,按照cmpp协议堤交短信网关四进行发送。在上逑流程中,系统处理性能的瓶颈主要集中在两点:磁盘和数据处理程序。
解决方案
为提升目前云通讯平台短信提醒平台的整体性能,本文主要从系统架构调整和业务逻控制两方面进行系统优化。
系统架构调整
(1)使用本地数据库做为程序之间交互的介质,可以发挥数据库稳定、高效、方便的优点,磁盘放到了次要的位置做廷迟信息的保存和故障处理使用;
(2)在具体的接口处理层引入队列和处理线程池,程序将扫描到的数据首先放入队列,由处理线程池中的线程读取队列中数据进行验证、封装、入库,以提高前端的处理效率;同时没一个扫描线程对应一张数据库表进行数据读取,读取的数据写入到队列中由发送线程进行处理提交短馆网关进行短信发送
数据耧收层设计
数据接收程序在接收到各系统的数据后首先放到队列中,由分析程序处理,这样保证外围系统不积压数据;程序内部使用线程池技术,将数据验证程序运行在单独的线程中,线程不断的读取队列里数据进行分析处理,并保持到本地中间表中;同时为了达到中间表的数据均衡性,路由算法根据手机尾号对应到10张数据分表中。
②信息推送层设计说明
信息推送程序启动单独的进程扫描汇聚到本地数据库表中的数据,这样充分利用数据库的查询效率,提供系统吞吐量;根据实际测试效果 oracle数据库可以实现以6000条/s的效率扫描数据,如果硬件資源有限,可以在接口扫描程序中配置将数据保存到其他主机的数据库实例中,方便实现系统扩容;信息送程序中与网美的连接采用连接线程池的方式,每个线程独自运行数据发送程序将从队列中取得的数据发送给
短信网关均
业务逻辑控制
在上述现状分析中,与短信网关的交互为系统处理的瓶颈,针对此问题对数据处理程序进行改造,设置短信网关接收阀值控制,对于超出阀值的数据自动直连短信中心进行数据的提交、发送。具体改造说明如下:
(1)对业务平台提文短信网关的程序进行改造,对于提交速度超过其阀值的情况能够反馈给业务平台;
(2)业务系统接收到短信网美容量饱和的通知后,能主动和短信中心建立开通文件传接口,将剩余的发送数据通过该接口直接推送給短信中心;
(3)短信中心利用现有的处理与协议,对业务系純直接推送过来的数据进行封装并且转发通过上逑改造,增加一条业务系统和短信中心直连的链路,通过该链路可以实现业务数据超过阀值的数据直接传递短信中心,减少了中间环节提升发送效率。
经验总结
公司在此次对云通讯平台短信提醒平台系统处理性能改造优化的项具实施中,总结了两点主要经验:多线程业务处理和短信网关阀值拉制。
多线程业务处理
短信提醒平台到短信网关的多线程路由设计:利用手机尾号将待下发数据平均分配至多个待发送数据表,启动多进程分别处理每个待发送数据表数据,每个进程在启动多线程和网关建立连接,充分利用网关提供的连接数,实现短信提醒平台到短信网关推送效率的最大化。
短信网关阀值控制
短信提醒平台根据短信网关的处理阀值速度,提交待发送数搢至短信中心:在短信网关推送速度和效率达到最大时待发送数表出现积压待发送数播超过一定阈值时,将其余数据直接推送至短信中心,减少中间环节处理,提升发送效率。