短信发送的方法、装置、计算机设备和存储介质与流程

文档序号:15982434发布日期:2018-11-17 00:29阅读:235来源:国知局

本发明涉及短信发送技术领域,特别是涉及一种短信发送的方法、装置、计算机设备和存储介质。

背景技术

随着短信发送量的增长,亟待一种能够方便大批量消息发送的平台,现在市面上出现的消息发送平台,在解决批量消息发送时,通过应用层程序从数据库中取出短信之后,直接推送给短信网关进行短信发送,然而,短信网关的发送量是固定的,在大批量短信同时推送至短信网关时,由于短信网关的处理能力有限,将会导致大量的短信发送失败。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够大批量短信发送时有效防止短信发送失败的短信发送的方法、装置、计算机设备和存储介质。

一种短信发送的方法,所述方法包括:

检测缓存池中固定缓存区的短信数据的队列长度大于阈值时,调用缓存池中的动态缓存区的缓存空间对所述固定缓存区进行扩容,得到拓展缓存区;所述缓存池包括多个与短信网关一一对应的固定缓存区;

将接收的短信数据存入所述拓展缓存区,并将所述拓展缓存区中的短信数据发送至所述固定缓存区的短信网关,进行短信发送。

在其中一个实施例中,还包括:识别所述短信数据的分类标签,所述分类标签用于标识所述短信数据的属性;所述属性与短信网关相对应;根据所述短信数据的属性,将所述短信数据存入与所述短信网关对应的拓展缓存区中。

在其中一个实施例中,还包括:根据所述短信数据的属性类别的数目,激活相同数目的任务进程,通过各个所述任务进程并行处理将所述短信数据存入与所述短信网关对应的与所述短信网关中;其中,每个任务进程处理一种属性对应的短信数据。

在其中一个实施例中,所述任务进程的状态包括:工作状态和休眠状态,还包括:根据所述属性类别的数目,将相同数目的任务进程的状态从所述休眠状态切换为所述工作状态,。

在其中一个实施例中,还包括:在所述短信数据的队列长度大于阈值时,确定需要调用动态缓存区;所述阈值与所述固定缓存区的最大队列长度成正比;

在确定需要调用动态缓存区时,获取当前短信数据存入所述固定缓存区的写入速率,根据所述写入速率,得到待扩容队列大小;根据所述待扩容队列大小,调用所述动态缓存区的缓存空间对所述固定缓存区进行扩容。

在其中一个实施例中,还包括:查询所述动态缓存区中处于待调用状态的区域,根据所述待扩容队列大小,调用所述待调用状态的区域的缓存空间对所述固定缓存区进行扩容。

在其中一个实施例中,还包括:监控各个短信网关的短信发送速度,在确定网络波动导致短信发送速度异常时,检测所述短信网关对应的固定缓存区中短信数据队列长度是否达到预先设置的队列长度阈值;若是,则停止向所述短信网关对应的固定缓存区中存入短信数据。

一种短信发送的装置,所述装置包括:

拓展模块,用于检测缓存池中固定缓存区的短信数据的队列长度大于阈值时,调用缓存池中的动态缓存区的缓存空间对所述固定缓存区进行扩容,得到拓展缓存区;所述固定缓存区与短信网关一一对应;

发送模块,用于将接收的短信数据存入所述拓展缓存区,并将所述拓展缓存区中的短信数据发送至所述固定缓存区的短信网关,进行短信发送。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

检测缓存池中固定缓存区的短信数据的队列长度大于阈值时,调用缓存池中的动态缓存区的缓存空间对所述固定缓存区进行扩容,得到拓展缓存区;所述缓存池包括多个与短信网关一一对应的固定缓存区;

将接收的短信数据存入所述拓展缓存区,并将所述拓展缓存区中的短信数据发送至所述固定缓存区的短信网关,进行短信发送。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

检测缓存池中固定缓存区的短信数据的队列长度大于阈值时,调用缓存池中的动态缓存区的缓存空间对所述固定缓存区进行扩容,得到拓展缓存区;所述缓存池包括多个与短信网关一一对应的固定缓存区;

将接收的短信数据存入所述拓展缓存区,并将所述拓展缓存区中的短信数据发送至所述固定缓存区的短信网关,进行短信发送。

上述短信发送的方法、装置、计算机设备和存储介质,短信数据被存入固定缓存区内,通过检测缓存池中固定缓存区中短信数据的队列长度,并在短信数据队列长度超过阈值时,调用缓存池中的动态缓存区的缓存空间对固定缓存区进行扩容,得到拓展缓存区,然后将接收到的短信数据存入拓展缓存区,固定缓存区对应的短信网关也从拓展缓存区获取短信数据进行短信发送。本发明实施例,通过多个短信网关的固定缓存区的动态配置,能够在大批量短信发送时有效防止短信发送失败。

附图说明

图1为一个实施例中短信发送的方法的应用场景图;

图2为一个实施例中短信发送的方法的流程示意图;

图3为一个实施例中将短信数据存入固定缓存区步骤的流程示意图;

图4为一实施例中短信数据处理的流程示意性;

图5为另一个实施例中短信发送的方法的流程示意图;

图6为一个实施例中短信发送的装置的结构框图;

图7为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的短信发送的方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

其中,终端102可以通过同步接口或异步接口与服务器104进行通讯连接。

本发明实施例中,服务器104包括有数据库,数据库中配置有发送表,通过终端102访问预先配置的门户网站,该门户网站可以是web网页,通过在门户网站中编辑短信,然后调用同步接口或异步接口将短信发送至服务器104的数据库中,进一步的,将短信数据存储在发送表中,然后短信网关从发送表中进行取数。

本发明实施例中,服务器104为每个短信网关配置一固定缓存区,短信网关从发送表中取数之后,将取数得到的短信数据存储在其对应的固定缓存区内,然后由短信网关依次发送固定缓存区内的短信数据,另外,服务器104中还配置有以动态缓存区区域,可以通过固定缓存区中短信数据的队列长度,调用动态缓存区的部分区域进行固定缓存区的扩容。为了方便缓存区域的实现,可以将固定缓存区和动态缓存区用缓存池实现。

其中,动态缓存区和固定缓存区可以通过redis数据库实现。

在一个实施例中,如图2所示,提供了一种短信发送的方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:

步骤202,检测缓存池中固定缓存区的短信数据的队列长度大于阈值时,调用缓存池中的动态缓存区的缓存空间对固定缓存区进行扩容,得到拓展缓存区。

本步骤中,固定缓存区与短信网关一一对应,即一个短信网关对应一个固定缓存区,缓存区中至少包括一个动态缓存区以及多个固定缓存区,固定缓存区的大小是用队列长度衡量,例如,固定缓存区最大可存储10000条短信,那么固定缓存区的最大队列长度为10000。另外,阈值的选择可以是根据缓存区的最大队列长度,通过阈值的设定,使固定缓存区中的短信队列到达一定长度时,触发进行扩容,触发方式可以是在服务器中设置监控进程,由监控进程负责实时监控各个固定缓存区的队列长度,当检测到一固定缓存区的队列长度达到阈值时,输出监控结果,以触发服务器对固定缓存区的扩容。还需要说明的是,动态缓存区的缓存空间表示动态缓存区存储数据的区域,缓存空间可以是动态缓存区的一部分,也可以是动态缓存区的全部。

具体的,对固定缓存区的扩容是通过增加固定缓存区的最大队列长度,以增强固定缓存区的数据存储能力,由于短信网关是从固定缓存区中获取短信数据,在固定缓存区扩容后,短信网关从拓展缓存区获取数据。

本步骤中,通过缓存池建立动态缓存区与固定缓存的联系,以此实现固定缓存区最大队列长度的动态配置。

步骤204,将接收的短信数据存入拓展缓存区,并将拓展缓存区中的短信数据发送至固定缓存区的短信网关,进行短信发送。

本步骤中,拓展缓存区是相对固定缓存区而言的,固定缓存区对应了唯一的短信网关,也即,在固定缓存区未扩容前,对应的短信网关中从该固定缓存区获取短信数据,那么在扩容后,实际需要将拓展缓存区与该固定缓存区对应的短信网关对应,然后通过拓展缓存区存储短信数据,以及将拓展缓存区中的短信数据发送至对应的短信网关进行短信发送。

值得说明的是,各个短信网关之间工作是独立,因此其对应的固定缓存区也是独立,各个固定缓存区进行动态扩容也是独立进行。另外,根据缓存队列的先进先出原则,通过短信网关依次发送短信至运营商。

上述短信发送的方法中,短信数据被存入固定缓存区内,通过检测缓存池中固定缓存区中短信数据的队列长度,并在短信数据队列长度超过阈值时,调用缓存池中的动态缓存区的缓存空间对固定缓存区进行扩容,得到拓展缓存区,然后将接收到的短信数据存入拓展缓存区,固定缓存区对应的短信网关也从拓展缓存区获取短信数据进行短信发送。本发明实施例,通过多个短信网关的固定缓存区的动态配置,能够在大批量短信发送时有效防止短信发送失败。

在图1应用场景中,服务器中可以配置多个短信网关,一般而言,短信网关的数量是根据业务场景而定的,另外,在应对大批量数据时,可以为同一业务场景配置多个短信网关,业务场景可以分为:营销类、交易类等。因此,在客户端编辑短信时,可以为不同业务场景的短信设置不同的分类标签,服务器通过识别分类标签,以判断短信对应的短信网关。

在一实施例中,如图3所示,服务器在接收客户端发送的短信数据时,可以执行如下处理:

步骤302,将短信数据存储在发送表中。

步骤304,识别发送表中的分类标签。

步骤306,根据所述短信数据的属性,将所述短信数据存入对应的固定缓存区中。

本发明实施例中,分类标签用于标识所述短信数据的属性,例如:在客户端中为验证码类短信设置的分类标签,在服务器中,通过对分类标签的识别,可以知道该短信数据的属性为验证码类。

另外,本发明实施例中,每种属性的短信数据均配置独占的短信网关,即通过短信数据的属性,将短信数据存入其对应的固定缓存区中。由于每个业务场景下可能不止配置一个短信网关,例如,验证码短信配置有三个短信网关,在服务器识别该短信为验证码类短信时,可以通过设置分配规则,将该验证码类短信分配至三个短信网关中的一个对应的固定缓存区中。

在另一实施例中,针对上述s306的步骤,可以通过任务进程取数的方式,将短信数据从发送表中存入对应的固定缓存区,在服务器中,可以根据任务需求生成或者删除任务进行,在需要将短信数据从数据库转存至短信网关中时,可以生成任务进程,任务进程用于短信数据的取数。具体的,可以根据短信属性的种类数目,激活相同数目的任务进程,也就是,通过激活任务进程,以此激活短信网关与数据库连接的接口,然后通过各个任务进程并行处理将短信数据存入对应的固定缓存区中。

本发明实施例,在数据库的发送表中存在三种属性的短信数据时,具体可以是营销类、交易类以及推广类的短信,因此,在实际处理时,需要将营销类、交易类以及推广类的短信发送至其各自对应的短信网关进行发送,通过分类标签识别出其属性,可以激活对应数目的任务进程。另外,在进行大批量短信数据处理时,可以通过多线程处理的方式,使各个任务进程并行处理,使短信发送的效率更高。并行处理的各个任务进程之间不会相互影响,避免在固定缓存区中写入短信数据时出现错误。

在又一实施例中,可以将任务进程配置为包括两种状态,分别为:休眠状态和工作状态,任务进程在工作状态时,从发送表中进行短信数据的取数,此时消耗的系统资源是较大的,在休眠状态时,几乎不消耗系统资源,在进行根据所述短信数据的属性类别的数目,激活相同数目的任务进程时,可以根据所述属性类别的数目,将相同数目的任务进程的状态从休眠状态切换为工作状态。那么,意味着需要任务进程时需要将其状态切换为工作状态,而不需要该任务进程时,只需要将其切换为休眠状态。因此,通过本实施例的处理,使服务器的系统资源的消耗处于合理化,利于整个系统的优化。

本发明实施例中,短信数据的处理流程可以如图4所示,图4中,分别存在6种属性的短信数据存储在发送表中,对应的,也包括6个短信网关和6个固定缓存区分区,在发送表中,不同属性的短信数据可以无序排列,在任务进程取数时,任务进程通过识别短信数据的分类标签将短信数据存入对应的固定缓存区中,例如短信3,任务进程通过识别短信3的分类标签,将短信3从发送表转存至固定缓存区分区3中,然后由短信网关3进行取数发送。

在一实施例中,在服务器中,将短信数据存入固定缓存区后,需要判断固定缓存区是否需要扩容,如图5所示,具体步骤如下:

s501,将当前固定缓存区中短信数据的队列长度与队列长度阈值进行对比。

其中,队列长度阈值与固定缓存区的最大队列长度成正比。

进一步的,可以选择最大队列长度的90%作为队列长度阈值,例如,最大队列长度为10000,那么队列长度阈值为9000。值得说明的是,90%是通过实际使用得出较为合理的值,本发明实施例并不限定于此。

s502,判断短信数据的队列长度是否大于队列长度阈值,若是,则跳转至步骤s503,若否,跳转至步骤s505。

s503,获取当前短信数据存入所述固定缓存区的写入速率,根据所述写入速率,得到待扩容队列大小。

本步骤中,通过获取写入速率的大小,以及短信网关的处理能力,可以得到固定缓存区中队列长度的增长速率,可以预先为每个增长速率对应一个待扩容队列大小。因此可以根据写入速率,对应得到待扩容队列大小。

s504,根据所述待扩容队列大小,调用所述动态缓存区的缓存空间对所述固定缓存区进行扩容。

s505,结束。

本发明实施例中,通过动态配置阈值与最大队列长度的关系,可以实现自动对固定缓存区进行扩容。值得说说明的是,本发明实施例并不限于这一种方配置阈值,还可以通过最大队列长队与队列长度阈值的差是定值,也可以实现相同过技术效果。

在一具体实施例中,固定缓存区的最大队列长度为10000,设置最大队列长度的90%为队列长度阈值,短信网关的处理能力为200条/分钟,固定缓存区中当前队列长度为8000,此时写入速率保持在400条/分钟,可想而知,在5分钟后,固定缓存区中短信数据的队列长度将达到9000,因此需要调用动态缓存区,此时增长速度为200条/分钟,根据日常经验或者大数据分析大量历史数据,15分钟后短信数据将会回复稳定,那么可以设置待扩容队列大小为3000,从动态缓存区中调用3000队列长度。通过上述处理,可以解决数据溢出的问题,从而防止了短信数据的丢失,进一步的,假设在15分钟后短信数据并没有回复稳定,而是持续以400条/分钟写入,此时最大队列长度为13000,动态设置的队列长度阈值为11700,那么在18分半时,将再次达到队列长度阈值,因此需要再次从动态缓存区中调用部分区域。通过上述的处理,可以动态配置队列长度阈值,从而避免短信数据的溢出。

在另一实施例中,动态缓存区的工作原理如下:动态缓存区在未被调用的时,处于待调用状态,待调用状态下,可以接收调用指令,动态缓存区接收调用之后的区域,将处于调用状态,在固定缓存区需要调用动态缓存区时,生成调用指令,以此实现对固定缓存区的扩容。

在本发明实施例中,通过查询动态缓存区中处于待调用状态的区域,然后根据待扩容队列大小,就可以执行固定缓存区的扩容。值得说明的是,动态缓存区可以被所有固定缓存区调用,动态缓存区中的区域一旦被调用,将不会被其他固定缓存区调用,而是成为其调用固定缓存区的缓存空间,在一定条件下,固定缓存区归还调用的动态缓存区的部分,至此,调用区域将再次处于待调用状态。

另外,作为本发明一种改进的实施例,可以通过在服务器中设置相应的监控子程序,来监测各个短信网关的短信发送速度,短信发送速度异常可能是由于短信网关本身硬件或软件故障引起,出现这种故障时,可以通知相应的运维人员进行维护,但是有些故障是暂时的,例如网络波动,网络波动将会影响到短信网关发送短信的速度,可能出现大批量数据的假象,如不做处理,对于服务器而言,会调用动态缓存区的区域来扩充固定缓存区。实质上,网络波动是短暂的,在确定网络波动导致短信发送速度异常时,首先检测所述短信网关对应的固定缓存区中短信数据队列长度是否达到预先设置的队列长度阈值;若是,则停止向短信网关对应的固定缓存区中存入短信数据。

本发明实施例中,由于网络波动导致固定缓存区中短信数据队列长度达到队列长度阈值时,可以认为这种堵塞是暂时的,只需要停止向固定缓存区中存入短信数据即可,进一步的,由于可以通过任务进程的形式向固定缓存区中存入短信数据,因此,只需要将故障网络网关对应的任务进程切换至休眠状态即可。

应该理解的是,虽然图2、3和5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、3和5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图6所示,提供了一种短信发送的装置,包括:拓展模块602和发送模块604,其中:

拓展模块602,用于检测缓存池中固定缓存区的短信数据的队列长度大于阈值时,调用缓存池中的动态缓存区的缓存空间对固定缓存区进行扩容,得到拓展缓存区;所述固定缓存区与短信网关一一对应。

发送模块604,用于将接收的短信数据存入所述拓展缓存区,并将拓展缓存区中的短信数据发送至固定缓存区的短信网关,进行短信发送。

值得说明的是,上述拓展模块和发送模块可以设置在图1的服务器中,上述模块的功能可以通过多个硬件模块以及计算机程序实现配套实现,具体的,通过上述各个模块的协同,可以实现固定缓存区最大队列长度的动态配置,以此降低大批量短信处理时短信数据丢失的情况。

在一实施例中,发送模块604还用于识别短信数据的分类标签,分类标签用于标识短信数据的属性;属性与短信网关相对应;根据短信数据的属性,将短信数据存入与短信网关对应的拓展缓存区中。

在一实施例中,发送模块604还用于根据所述短信数据的属性类别的数目,激活相同数目的任务进程,通过各个所述任务进程并行处理将所述短信数据存入与所述短信网关对应的与所述短信网关中;其中,每个任务进程处理一种属性对应的短信数据。

在一实施例中,发送模块604还用于根据所述属性类别的数目,将相同数目的任务进程的状态从休眠状态切换为工作状态,所述任务进程的状态包括:工作状态和休眠状态。

在一实施例中,拓展模块602用于在所述短信数据的队列长度大于阈值时,确定需要调用动态缓存区;所述阈值与所述固定缓存区的最大队列长度成正比;在确定需要调用动态缓存区时,获取当前短信数据存入所述固定缓存区的写入速率,根据所述写入速率,得到待扩容队列大小;根据所述待扩容队列大小,调用所述动态缓存区的缓存空间对所述固定缓存区进行扩容。

在一实施例中,拓展模块504还用于查询所述动态缓存区中处于待调用状态的区域,根据所述待扩容队列大小,调用所述待调用状态的区域的缓存空间对所述固定缓存区进行扩容。

在一实施例中,还包括:监测模块,用于监控各个短信网关的短信发送速度,在确定网络波动导致短信发送速度异常时,检测所述短信网关对应的固定缓存区中短信数据队列长度是否达到预先设置的队列长度阈值;若是,则停止向所述短信网关对应的固定缓存区中存入短信数据。

关于短信发送的装置的具体限定可以参见上文中对于短信发送的方法的限定,在此不再赘述。上述短信发送的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境,另外,内存储器还是设置固定缓存区和动态缓存区,在另一方面,可以通过外接存储器实现相同的效果。该计算机设备的数据库中设置了短信的发送表,发送表用于存储接收的短信数据。该计算机设备的网络接口一方面用于与外部的终端通过网络连接或接口通信,另一方面还用于与短信网关相连,用于将短信数据发送至短信网关。该计算机程序被处理器执行时以实现一种短信发送的方法。

本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述各个方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1