本发明涉及计算机领域,特别是一种短信分发方法及系统。
背景技术:
随着移动终端的用户越来越多,企业或商家会使用将重要的信息推送到用户的手机中。目前的服务商家通常都会通过群发短信的方式,将相关的内容通过短信推送至用户的手机。而现有技术中的批发短信发送一般包括以下步骤:
1、客户调用短信平台接口,提交短信。
2、接口处理模块把短信包存入数据库中。
3、分检处理模块根据帐号配置,把短信数据包送到相应的通道发送队表。
4、通道发送程序从发送队列表取数据,发送到通道营运商。
然而,传统的方法需要访问数据库及文件,当大批量短信发送存在处理速度慢,分发效率低。
技术实现要素:
本发明的目的在于克服现有技术的缺点与不足,提供了一种能快速进行短信分发方法及系统。
本发明具体通过以下的技术方案实现:一种短信分发方法,包括以下步骤:
S1:接收用户提交的短信包,并送到异步消息服务队列;
S2:从异步消息服务队列取短信包,根据通道配置参数,进行通道分包,分包完后送回异步消息服务队列;
S3:从异步消息服务队列中提取所属的短信包,进行发送;
S4:短信发送完后,生成入库数据包,送到异步消息服务队列;
S5:由入库服务进行入库保存。
作为本发明的进一步改进,所述异步消息服务队列的工作方式为socket服务,其在内存中申请key、list和set数据格式;其中,
所述key数据格式用于存储用户信息,进行认证;
所述list数据格式为一个先进先出的队列,用于提供数据插入和取出;所述队列list包括发送队列list、多个通多队列list和备用通道队列list;
所述set数据格式为一个集合,用于提供交集、并集操作。
作为本发明的进一步改进,所述步骤S1中,在接收用户提交的短信包时,包括以下步骤:
通过http接口接收用户提交的短信数据包,并将该用户信息放在key值中;
对用户进行认证,认证通过后送到异步消息服务队列中。
作为本发明的进一步改进,所述步骤2中,根据配置信息,将发送队列list数据分发至多个通道队列list中。
作为本发明的进一步改进,在所述步骤2中,还包括步骤:监控各个通道队列list,如果超过设定的分流阀值,触发分流到备用通道队列list。
作为本发明的进一步改进,所述步骤S2中,进行通道分包时,包括以下步骤:
S21:把黑名单、通道白名单、通道参数设置、号码段、地区、特别指定手机号加载到内存;
S22:过滤黑名单;
S23:如果特别指定手机号表有这个手机号,按特别指定手机号的通道走;
S24:如果设置通过地区选择通道功能,取手机号码前七位,定位对应地区;
S25:查找该地区是否指定特别通道;如果找到,则放到对应的通道队列中,并判断这个通道是否为白名单通道;若是,则判断该手机号码是否属于白名单,并将不是白名单的手机号过滤。
作为本发明的进一步改进,所述步骤S3中,具体包括以下步骤:
S31:从多个通道队列list中提取数据发送到移动、联通、电信短信行业网关;
S32:从多个通道队列list提取数据,发送到第三方通道。
作为本发明的进一步改进,所述步骤S1中,具体包括:
S11:由直连网关、第三方通道接收到上行数据,送到异步消息服务的上行队列;
S12:由上行服务从异步消息服务上行队列提取未处理上行信息,根据编码进行相应的触发。
本发明还提供了一种短信分发系统,其包括
接收模块,用于接收用户提交的短信包,并送到异步消息服务队列;
分包模块,用于从异步消息服务队列取短信包,根据通道配置参数,进行通道分包,分包完后送回异步消息服务队列;
发送模块,用于从异步消息服务队列中提取所属的短信包,进行发送;
生成模块,用于在短信发送完后,生成入库数据包,送到异步消息服务队列;
保存模块,用于对短信数据包进行入库保存。
作为本发明的进一步改进,所述异步消息服务队列的工作方式为socket服务,其在内存中申请key、list和set数据格式;其中,
所述key数据格式用于存储用户信息,进行认证;
所述list数据格式为一个先进先出的队列,用于提供数据插入和取出;所述队列list包括发送队列list、多个通多队列list和备用通道队列list;
所述set数据格式为一个集合,用于提供交集、并集操作。
作为本发明的进一步改进,所述接收模块包括:
用户信息存储子模块,用于通过http接口接收用户提交的短信数据包,并将该用户信息放在key值中;
认证子模块,用于对用户进行认证,认证通过后送到异步消息服务队列中。
作为本发明的进一步改进,所述分包模块包括分发子模块,用于根据配置信息,将发送队列list数据分发至多个通道队列list中。
作为本发明的进一步改进,所述分包模块还包括监控子模块,用于监控各个通道队列list,如果超过设定的分流阀值,触发分流到备用通道队列list。
作为本发明的进一步改进,所述分包模块还包括:
加载子模块,用于把黑名单、通道白名单、通道参数设置、号码段、地区、特别指定手机号加载到内存;
过滤子模块,用于过滤黑名单;
判断子模块,用于判断特别指定手机号表是否有对应的手机号,如果特别指定手机号表有这个手机号,则按特别指定手机号的通道走;
定位子模块,用于当设置通过地区选择通道功能时,取手机号码前七位,定位对应地区;
查找子模块,用于查找该地区是否指定特别通道;如果找到,则放到对应的通道队列中,并判断这个通道是否为白名单通道;若是,则判断该手机号码是否属于白名单,并将不是白名单的手机号过滤。
作为本发明的进一步改进,所述发送模块包括:
直通网关发送模块,用于从多个通道队列list中提取数据发送到移动、联通、电信短信行业网关;
第三方通道发送模块,用于从多个通道队列list提取数据,发送到第三方通道。
作为本发明的进一步改进,所述接收模块中还包括:
上行数据接收子模块,用于通过直连网关、第三方通道接收到上行数据,送到异步消息服务的上行队列;
触发子模块,用于由上行服务从异步消息服务上行队列提取未处理上行信息,根据编码进行相应的触发。
相比于现有技术,本发明具备以下的有益效果:
(1)短信分发的整个过程数据只在内存中交互,比传统访问文件或数据库的方式快,在以下操作中,有明显的优势。
(2)用户认证:传统方法访问数据库提取客户信息,涉及数据库查询操作,一般在秒级;新方法是把用户信息放在key值里,提取客户信息在毫秒级。
(3)白名单过滤:利用异步消息服务的交集功能,一次交互就可把白名单数据提取出来,避免传统大量访问数据库操作。
(4)多通道分发:根据配置,把发送队列表的数据分发到各通道队列,由于在异步消息服务队列操作,比在数据库迁移数据快。
(5)优先处理:采用不用通道队列list分隔开不同优先级的数据,与传统数据库通过排序方式处理方法相比,做到数据分开,互不干扰。
为了更好地理解和实施,下面结合附图详细说明本发明。
附图说明
图1是本发明的短信分发过程的逻辑架构示意图。
图2是本发明短信分发方法的步骤流程图。
图3是本发明的短信分发过程的数据流向的示意图。
图4是本发明的短信分发系统的模块连接框图。
图5是本发明的接收模块内部的模块框图。
图6是本发明的分包模块内部的模块框图。
图7是本发明的发送模块内部的模块框图。
具体实施方式
本发明为了解决现有技术中进行大批量短信发送时处理速度慢,分发效率低的问题,提供了一种处理效率高的短信分发方法及系统。具体通过以下的实施例进行介绍说明。
首先,先介绍本发明的短信分发方法及系统所应用到的基本逻辑架构。具体请参阅图1,其为本发明的短信分发过程的逻辑架构示意图。
本发明中是基于智能短信分发平台,该分发平台由接口、异步消息服务、分检服务、监控及分流、入库、上行、直连网关程序、第三方通道程序等服务组成。
所述接口为http接口,负责接收客户的短信数据包,认证后提交到异步消息服务队列。
所述异步消息服务,包括key值、发送队列list、各通道队列list消息服务。
所述分检服务,其用于根据配置信息,把发送队列list数据分发到多通道队列list。
所述监控及分流,其用于监控各通道队列list,如果超过设定的分流阀值,触发分流到备用通道队列list。
所述直连网关程序,其支持cmpp、sgip、smgp协议,用于从通道队列list提取数据发送到移动、联通、电信短信行业网关。
所述第三方通道程序,其支持第三方短信通道接口的程序,用于从通道队列list提取数据,发送到第三方通道。
所述入库服务,用于将通道发送完数据转存到数据库,便于查询及统计。
所述上行服务,用于处理通道上行信息,根据上行编码触发相应的功能。
基于上述的短信发送平台,本发明提供了一种短信分发方法。具体请参阅图2,其为本发明短信分发方法的步骤流程图。本发明提供了一种短信分发方法,包括以下步骤:
S1:接收用户提交的短信包,并送到异步消息服务队列。
具体的,所述异步消息服务队列的工作方式为socket服务,其在内存中申请key、list和set数据格式;其中,所述key数据格式用于存储用户信息,进行认证。例如:RC.Get("KHDM_"+KHDM)。
所述list数据格式为一个先进先出的队列,用于提供数据插入和取出;所述队列list包括发送队列list、多个通多队列list和备用通道队列list。例如:RC.LPush(ListId);RC.RPop(ListId)。
所述set数据格式为一个集合,用于提供交集、并集操作。
进一步,所述步骤S1中,在接收用户提交的短信包时,包括以下步骤:
通过http接口接收用户提交的短信数据包,并将该用户信息放在key值中;
对用户进行认证,认证通过后送到异步消息服务队列中。
进一步,在所述步骤S1中,还具体包括:
S11:由直连网关、第三方通道接收到上行数据,送到异步消息服务的上行队列。
S12:由上行服务从异步消息服务上行队列提取未处理上行信息,根据编码进行相应的触发。
S2:从异步消息服务队列取短信包,根据通道配置参数,进行通道分包,分包完后送回异步消息服务队列。
具体的,所述步骤S2中,根据配置信息,将发送队列list数据分发至多个通道队列list中。
进一步,在所述步骤S2中,还包括步骤:监控各个通道队列list,如果超过设定的分流阀值,触发分流到备用通道队列list。
而其中,当所述步骤S2中进行通道分包时,包括以下步骤:
S21:把黑名单、通道白名单、通道参数设置、号码段、地区、特别指定手机号加载到内存;
S22:过滤黑名单;
S23:如果特别指定手机号表有这个手机号,按特别指定手机号的通道走;
S24:如果设置通过地区选择通道功能,取手机号码前七位,定位对应地区;
S25:查找该地区是否指定特别通道;如果找到,则放到对应的通道队列中,并判断这个通道是否为白名单通道;若是,则判断该手机号码是否属于白名单,并将不是白名单的手机号过滤。
S3:从异步消息服务队列中提取所属的短信包,进行发送。
具体的,在所述步骤S3中,具体包括以下步骤:
S31:从多个通道队列list中提取数据发送到移动、联通、电信短信行业网关;
S32:从多个通道队列list提取数据,发送到第三方通道。
S4:短信发送完后,生成入库数据包,送到异步消息服务队列;
S5:由入库服务进行入库保存。
以下介绍本发明中短信数据的流向过程。具体请参阅图3,其为本发明的短信分发过程的数据流向的示意图。
首先,短信数据先由用户发送至异步信息服务队列,处于待分检短息队列中。
然后,进行分检。具体,可以根据实际设置,比如:黑名单、白名单,或者其他通道参数。
接着,根据不同的优先级,将上述短信数据分入不同的通道队列中。而其中,对该发送队列中进行监控,如果超过设定的分流阀值,触发分流到备用通道队列list。
最后,进行短信发送。当发送完成后,再将该短信进行存入数据库中。
以上,本发明中的短信数据先在内存中进行处理,当完成处理后,才存入数据库中。这样可以加快处理的速度。
请参阅图4,其为本发明的短信分发系统的连接框图。同时,本发明基于上述短信发送平台,本发明还提供了一种短信分发系统,其包括接收模块1、分包模块2、发送模块3、生成模块4和保存模块5。
所述接收模块1,用于接收用户提交的短信包,并送到异步消息服务队列。
所述分包模块2,用于从异步消息服务队列取短信包,根据通道配置参数,进行通道分包,分包完后送回异步消息服务队列;
所述发送模块3,用于从异步消息服务队列中提取所属的短信包,进行发送;
所述生成模块4,用于在短信发送完后,生成入库数据包,送到异步消息服务队列;
所述保存模块5,用于对短信数据包进行入库保存。
进一步,所述异步消息服务队列的工作方式为socket服务,其在内存中申请key、list和set数据格式;其中,
所述key数据格式用于存储用户信息,进行认证。
所述list数据格式为一个先进先出的队列,用于提供数据插入和取出;所述队列list包括发送队列list、多个通多队列list和备用通道队列list。
所述set数据格式为一个集合,用于提供交集、并集操作。
请参阅图5,其为本发明的接收模块内部的模块框图。进一步,所述接收模块1包括:用户信息存储子模块11、认证子模块12、上行数据接收子模块13和触发子模块14。
所述用户信息存储子模块11,用于通过http接口接收用户提交的短信数据包,并将该用户信息放在key值中。
所述认证子模块12,用于对用户进行认证,认证通过后送到异步消息服务队列中。
所述上行数据接收子模块13,用于通过直连网关、第三方通道接收到上行数据,送到异步消息服务的上行队列。
所述触发子模块14,用于由上行服务从异步消息服务上行队列提取未处理上行信息,根据编码进行相应的触发。
请同时参阅图6,其为本发明的分包模块内部的模块框图。进一步,所述分包模块2包括分发子模块21、监控子模块22、加载子模块23、过滤子模块24、判断子模块25、定位子模块26和查找子模块27。
所述分发子模块21,用于根据配置信息,将发送队列list数据分发至多个通道队列list中。
所述监控子模块22,用于监控各个通道队列list,如果超过设定的分流阀值,触发分流到备用通道队列list。
所述加载子模块23,用于把黑名单、通道白名单、通道参数设置、号码段、地区、特别指定手机号加载到内存。
所述过滤子模块24,用于过滤黑名单。
所述判断子模块25,用于判断特别指定手机号表是否有对应的手机号,如果特别指定手机号表有这个手机号,则按特别指定手机号的通道走。
所述定位子模块26,用于当设置通过地区选择通道功能时,取手机号码前七位,定位对应地区。
所述查找子模块27,用于查找该地区是否指定特别通道;如果找到,则放到对应的通道队列中,并判断这个通道是否为白名单通道;若是,则判断该手机号码是否属于白名单,并将不是白名单的手机号过滤。
请同时参阅图7,其为本发明的发送模块内部的模块框图。进一步,所述发送模块3包括:直通网关发送模块31和第三方通道发送模块32。
所述直通网关发送模块31,用于从多个通道队列list中提取数据发送到移动、联通、电信短信行业网关。
所述第三方通道发送模块32,用于从多个通道队列list提取数据,发送到第三方通道。
相比于现有技术,本发明具备以下的有益效果:
(1)短信分发的整个过程数据只在内存中交互,比传统访问文件或数据库的方式快,在以下操作中,有明显的优势。
(2)用户认证:传统方法访问数据库提取客户信息,涉及数据库查询操作,一般在秒级;新方法是把用户信息放在key值里,提取客户信息在毫秒级。
(3)白名单过滤:利用异步消息服务的交集功能,一次交互就可把白名单数据提取出来,避免传统大量访问数据库操作。
(4)多通道分发:根据配置,把发送队列表的数据分发到各通道队列,由于在异步消息服务队列操作,比在数据库迁移数据快。
(5)优先处理:采用不用通道队列list分隔开不同优先级的数据,与传统数据库通过排序方式处理方法相比,做到数据分开,互不干扰。
本发明并不局限于上述实施方式,如果对本发明的各种改动或变形不脱离本发明的精神和范围,倘若这些改动和变形属于本发明的权利要求和等同技术范围之内,则本发明也意图包含这些改动和变形。