高性能短信平台的设计与实现

(整期优先)网络出版时间:2018-12-22
/ 2

高性能短信平台的设计与实现

展敬宇1孙乔1李枫2王蕊2沈雪晴2付兰梅

(1.北京国电通网络技术有限公司北京100070;2.国家电网公司信息通信分公司北京100761)

摘要:大规模短信下发通常会造成短信平台发送堵塞,导致短信发送延迟或发送失败,影响用户体验。本文引入高速缓存、内存数据库,多线程调度等技术,优化短信平台处理逻辑。基于此,开展短信云平台接口设计、发送流程设计及部署架构设计,构建具备大规模短信并行处理能力的短信平台系统,大大提升短信平台处理效率。

关键词:短信网关;多线程;高速缓存;memcached。

DesignandImplementationofHighPerformanceSMSPlatform

ZHANJing-yu1,SUNQiao1,LiFeng2,WangRui2,ShengXue-qing2,FuLan-mei1

(1.BeijingGuoDianTongNetworkTechnologyCo.,Ltd.Beijing1000702.StateGridInformation&TelecommunicationBranch,Beijing100761)

Abstract:Thelarge-scaleparalleldeliveryofshortmessagesusuallycausestheSMSplatformtosendjams,whichmayresultindelayedorfailedsendingofshortmessages,affectingtheuserexperience.Thispaperintroducestechnologiessuchascache,memorydatabase,andmulti-threadschedulingtooptimizetheprocessinglogicofSMSplatform.Basedonthis,theSMScloudplatforminterfacedesign,sendingprocessdesignanddeploymentarchitecturedesignarecarriedout,andashortmessageplatformsystemcarryinglarge-scaleparallelmessagesdeliveryisbuilttoimprovetheprocessingefficiencyoftheplatform.

Keywords:SMSgateway;multi-threading;cache;memcached.

引言

短信平台是基于中国移动、联通、电信直接提供的短信端口与互联网连接实现与客户指定号码进行短信批量发送和自定义发送的平台系统,是连接短信群发用户与三大运营商的桥梁,负责将来自短信群发用户的大量短信统一下发至各运营商短信中心,同时将移动、电信、联通3大运营商反馈的状态报告、上行短信与下行短信进行匹配,并反馈用户[1]。

短信平台处理效率直接影响用户短信到达的及时性及用户体验。为应对大规模短信批量下发的冲击,保证短信发送及时性,本文通过引入线程池、高速缓存、内存数据库等技术,进一步优化短信平台处理逻辑,提升短信平台业务高峰处理能力,使平台处理效益达到最大化。基于此,开展短信平台接口设计、短信发送设计及部署架构设计,构建短信云平台系统,提升平台短信业务高峰处理能力。

1.接口设计

短信云平台提供webservice及https等多种接口,包括下行发送短信接口、状态报告接口及上行短信接口。

1.1下行短信发送接口

业务系统将发送手机号码、短信内容等封装成SubmitSmsReq消息,发至短信平台,短信平台收到消息请求后,将返回状态码、短信编号封装至SubmitSmsResp消息,返回至业务系统侧,完成一次交互。示意图如下所示:

图1下行短信交互过程

1.2获取短信状态报告接口

业务系统需要获得发送短信的状态报告时,通过此接口发起和短信平台的交互。由业务系统发起,通过GetReportSms函数实现操作,批量获得该业务系统下发短信的状态报告,输入消息名称为GetReportSmsReq,输出消息名称为GetReportSmsResp。

图2状态报告交互过程

1.3获取上行短信接口

业务系统需要获得上行短信时,通过此接口发起和短信平台的交互。由业务系统发起,通过GetDeliverSms函数实现操作,输入消息名称为GetDeliverSmsReq,输出消息名称为GetDeliverSmsResp。

图3上行短信交互过程

2.短信处理流程设计

2.1短信下发流程设计

对于大量成批下发的短信业务,如果不做二级缓冲处理,直接对网关进行批量下发,必定造成网关的数据拥挤,容易产生数据丢失,导致发送成功率下降。

通过引入线程池及高速缓存区,将待发送短信放入高速缓存区进行缓冲处理,通过多个线程并行转发缓存区数据,提高群发短信处理效率,具体处理过程如图4所示:

图4短信发送机制

具体处理流程如如下:

1)多个用户提交短信到待发送队列表,为了保证系统速度,这个队列使用内存数据库,即高速缓存区。

2)线程池1中各个子线程从待发送队列里面取出短信提交到各个通道进行发送。

3)短信发送完成后,通道会将短信保存在已发短信同步队列。

4)线程池2从已发短信同步队列中取出短信,保存到数据库中,同时也将msgid,手机号码以及短信id保存到Memcached服务器中,为后续开展状态报告与下行短信进行匹配奠定基础。

2.2状态报告匹配下行短信设计

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,提高状态报告匹配及更新速度[2]。

为了进一步提升状态报告与下行短信的匹配速度,使用memcached服务器,缓存已发短信,msgid和手机号码作为key,已发短信记录Id作为value。匹配状态报告时,首先在memcached缓存中查,如果查不到再到数据库查询。具体实现如图5所示:

图5状态报告匹配更新

3.部署架构设计

短信云平台部署单元主要包括接口处理子系统、web应用子系统、短信处理子系统、数据库子系统、通道处理子系统、运营后台子系统、监控子系统等。具体部署架构如图6所示:

图6部署架构设计

1)接口处理子系统:接口子系统负责解析来自用户的各类短信,并对用户账号、密码进行鉴别认证,确保合法用户可以访问短信云平台。接口采用集群方式部署,前置负载均衡分发来自用户的各类短信业务。负载均衡+集群的部署方式使得接口可以利用增加节点数量的方式进行横向扩展,提高接口处理能力。

2)Web应用子系统:Web应用子系统面向用户提供页面登录功能,可实现短信收发、平台管理等功能。web应用子系统采用集群方式部署,通过负载均衡降低系统访问压力。

3)短信处理子系统:短信处理子系统用以实现短信关键词、黑名单过滤及通道选择功能。采用集群部署,所有操作在缓存中进行,提高处理速度。

4)通道处理子系统:通道处理子系统负责将短信转发至运营商短信网关。采用集群方式部署。

5)数据库子系统:数据库子系统采用分布式部署,下行短信数据按照通道信息进行分区操作,对于下行详单、上行详单、日志记录、接口提交等数据按照日期进行分表操作,提高数据读取速度,确保对大量数据进行查询获取的时不会造成访问延迟。

6)运营后台子系统:运营子系统主要提供面向短信统计功能,包括上行统计、下行统计、运营商统计、年/月/日统计、重要系统月发送量统计、短信计费统计等。

7)监控子系统:监控子系统提供面向服务器及平台运行的各类监控功能,监控对象包括操作系统、数据库、中间件关键运行参数以及短信通道发送速率、发送队列大小及接口调用情况等。

8)MQ集群:MQ集群用以实现接口子系统与短信处理子系统缓存之间的通信。

9)Memcached:Memcached内存数据库用以存储账号、黑名单、关键词等信息,以方便接口处理子系统及短信处理子系统进行业务处理时,直接从memcached读取数据,减少对数据库的访问。

结束语

本文通过引入线程池、高速缓存等机制,对群发短信进行二次缓冲,降低接口及短信处理子系统频繁访问数据库产生时间开销。建立面向各短信通道的线程池,转变串行轮询处理方式为并行处理方式,大大提升短信平台转发速度。同时引入memcached服务器,缓存已发短信相关信息,大大提升状态报告与下行短信的匹配速度,防止大量短信状态报告出现积压。基于此,开展短信云平台设计与实现,构建大规模短信群发处理系统,大大提升群发短信发送及时性,缩小发送时延,提升用户使用体验。

参考文献:

[1]张鸿阁.乌鲁木齐银行短信平台系统的设计与实现.2016.

[2]刘亮,徐步东,谭艳艳.基于Memcached内存对象缓存技术应用研究,2015,25(11):204-205.

作者简介:孙乔(1978—),男,汉,辽宁省大连市人,高级工程师,硕士。从事电力信息化研究。

展敬宇(1985-),女,汉,河北省保定市人,技术支持工程师,硕士。从事电力信息化研究。

李枫(1982-),男,汉,河北省石家庄人,高级工程师,硕士。从事电力信息化运维和研究。

王蕊(1983-),女,回,河北省唐山人,高级工程师,硕士。从事电力信息化运维和研究。

沈雪晴(1990-),女,汉,湖北省仙桃市人,中级工程师,硕士,从事电力信息化运维和研究。

付兰梅(1986-),女,汉,河北省保定市人,技术支持工程师,本科。从事电力信息化研究。