一种批量消息的发送方法及系统、服务器与流程

文档序号:15818440发布日期:2018-11-02 22:52阅读:396来源:国知局
一种批量消息的发送方法及系统、服务器与流程

本发明属于通信技术领域,尤其涉及一种批量消息的发送方法及系统、服务终器。

背景技术

网络资源访问是互联网发展离不开的一项技术,很多应用场景都伴随着网络资源访问的发生,如访问网站、下载文件、数据传输以及即时通讯等。然而,由于网络条件时常不够稳定或者网络环境不同导致的访问速度低下,很多网络服务公司都会提供基于中转服务器的网络资源访问加速服务,从而让用户可以更加稳定和高速地进行网络资源访问(例如数据传输)。

现有技术中,大批量数据的传输是经常出现的,例如在大批量群发消息的业务场景下,为了缩短传输时间,在短时间内将大量数据发送出去,可能会使得服务器超载而导致数据堵塞,为了保护服务器,采用每次传输少量数据,这样就需要较多的传输时间,不能满足实际场景需要。因此前述两种数据传输方法只考虑一方面因素导致数据传输效率较低,不能贴近用户实际需求。



技术实现要素:

本发明实施例提供了一种批量消息的发送方法及装置、服务器,旨在解决现有技术的批量数据传输效率较低的问题。

一种批量消息的发送方法,包括:

接收批量消息的发送命令,所述命令携带发送指标;

基于所述发送指标对所述批量消息进行分组处理并添加到缓存队列中;

基于分组结果从线程池中调用相应数量线程执行发送命令。

优选地,所述发送指标包括所述批量消息的数量,所述基于所述发送指标对所述批量消息进行分组处理并添加到缓存队列中具体包括:

基于所述批量消息的数量对所述批量消息进行分组处理,得到对应的消息矩阵;

将所述消息矩阵添加到缓存队列中。

优选地,所述基于所述批量消息的数量对所述批量消息进行分组处理,得到对应的消息矩阵具体包括:

基于所述批量消息的数量对所述批量消息进行第一次分组处理,得到分组消息集合,所述分组消息集合包括两组以上消息;

对所述分组消息集合进行第二次分组处理,得到消息矩阵,所述消息矩阵包括一个以上消息组,每一所述消息组对应一线程。

优选地,所述发送指标包括完成时限及发送速率,所述分组消息集合进行第二次分组处理,得到消息矩阵具体为:

基于所述完成时限及发送速率对所述分组消息集合进行第二次分组处理,得到消息矩阵。

优选地,所述分组消息集合进行第二次分组处理,得到消息矩阵具体为:

根据预设规则对分组消息集合进行第二次分组,得到消息矩阵。

优选地,所述分组结果包括一个以上消息组,所述基于所述发送指标对所述批量消息进行分组处理并添加到缓存队列中之后、基于分组结果从线程池中调用相应数量线程执行发送命令之前包括:

判断所述线程池当前的线程数量是否小于所述消息组的个数;

当判断为是时,在线程池中增加对应数量的线程以调用。

本发明还提供一种批量消息的发送系统,包括:

接收单元,用于接收批量消息的发送命令,所述命令携带发送指标;

分组单元,用于基于所述发送指标对所述批量消息进行分组处理并添加到缓存队列中;

调用单元,用于基于分组结果从线程池中调用相应数量线程执行发送命令。

本发明还提供一种服务器,该服务器包括线程池及一种批量消息的发送系统,所述发送系统包括:

接收单元,用于接收批量消息的发送命令,所述命令携带发送指标;

分组单元,用于基于所述发送指标对所述批量消息进行分组处理并添加到缓存队列中;

调用单元,用于基于分组结果从线程池中调用相应数量线程执行发送命令。

本发明还提供一种存储器,所述存储器存储有计算机程序,其特征在于,所述计算机程序被处理器执行如下步骤:

接收批量消息的发送命令,所述命令携带发送指标;

基于所述发送指标对所述批量消息进行分组处理并添加到缓存队列中;

基于分组结果从线程池中调用相应数量线程执行发送命令。

本发明还提供一种服务终端,包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

接收批量消息的发送命令,所述命令携带发送指标;

基于所述发送指标对所述批量消息进行分组处理并添加到缓存队列中;

基于分组结果从线程池中调用相应数量线程执行发送命令。

本发明实施例中,基于速度指标对批量消息进行分组处理,并根据分组结果动态调用相应线程来执行发送命令,可提高数据传输效率。

附图说明

图1为本发明第一实施例提供的一种批量消息的发送方法的流程图;

图2为本发明第一实施例提供的一种批量消息的发送方法的一优选实施例的流程图;

图3为本发明第一实施例提供的一种批量消息的发送方法的步骤s2的具体流程图;

图4为本发明第一实施例提供的一种批量消息的发送方法的步骤s21的具体流程图;

图5为本发明第二实施例提供的一种批量消息的发送系统的结构图;

图6为本发明第三实施例提供的一种服务终端的结构图。

具体实施方式

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

本发明实施例中,一种批量消息的发送方法,包括:接收批量消息的发送命令,所述命令携带发送指标;基于所述发送指标对所述批量消息进行分组处理并添加到缓存队列中;基于分组结果从线程池中调用相应数量线程执行发送命令。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一:

图1示出了本发明第一实施例提供的一种批量消息的发送方法的流程图,该方法包括:

步骤s1,接收批量消息的发送命令;

具体地,首先接收用户(或客户)的批量消息的发送命令,或者是周期性地从服务器获取发送命令,该发送命令可包括发送指标,该发送指标可具体包括:被发送对象的参数(例如发送的地址、发送对象的数量等),优选地,该发送指标还可包括发送时限(即完成发送该批量消息的最后时间点),进一步优选地,该发送指标还可包括发送速率。而通常情况下,发送指标不会指定发送速率,而发送速率由线程的配置参数决定。

步骤s2,基于发送指标对批量消息进行分组处理并添加到缓存队列中;

具体地,由于单线程批量发送消息的效率比较低,因此首先需要基于发送指标对批量消息进行分组处理,然后添加至缓存队列中等待被发送,以提高发送效率。

步骤s3,基于分组结果从线程池中调用相应数量线程执行发送命令。

具体地,根据分组结果从线程池中调用相应数量的线程来执行发送消息的命令,其中,预先在线程池中配置若干线程,每一线程的参数预先设置,该参数可包括线程每次可发送的消息的数量、发送速率等,此处对此不作限制。

进一步地,线程被调用后,从缓存队列中取出消息进行发送,将消息逐个推送给对应用户,发送完成后返回线程池。

在本实施例的一个优选方案中(见图2),该分组结果包括一个以上消息组,该步骤s2之后、步骤s3之前还可包括:

步骤s4,判断线程池当前的线程数量是否小于消息组的数量;

具体地,首先判断该线程池当前的线程数量是否小于消息组的数量,当判断为是时,转到步骤s5,否则转到步骤s6;

步骤s5,在线程池中增加对应数量的线程以调用;

步骤s6,判断是否需要删减线程池当前的线程;

具体地,基于线程池的数量与消息组的数量之间的差值来判断是否需要删减线程池当前的线程,即获取线程池的数量与消息组的数量的差值,分析该差值是否为零,当差值为零时,表示不需要删减线程,转到步骤s3,当差值不为零时,表示需要删减线程,于是转到步骤s7;或者判断线程池的数量是否大于消息组的数量,当大于时表示需要删减线程池当前的线程,转到步骤s7,当不大于时,表示不需要删减线程池当前的线程,可直接调用线程池的线程,于是转到步骤s3。

步骤s7,从线程池中删减对应数量的线程。

具体地,线程池的线程是预先配置好的,而由于一个消息组由一个线程负责,当消息组的数量大于线程池当前的线程数量时,表示线程数量不够,则需要增设线程,此时获取消息组的数量与线程池当前的线程数量之间的差值,该差值即为当前需要增设的线程数量,而增设线程的过程与前述的线程配置过程基本一致,此处对此不再赘述。当消息组的数量等于线程池当前的线程数量时,可直接进入步骤s3,而当消息组的数量小于线程池当前的线程数量时,表示有多余的线程,此时可将剩余的线程删减,以减少资源浪费,进一步优选地,每一个线程的配置参数是一致的,此时只需要从线程池中随机挑选即可进行线程删减,删减数量等于线程池当前的线程数量与消息组的数量之间的差值。

在本实施例的另一个优选方案中,该步骤s3之后还可包括:

通过异步方式反馈发送参数;

具体地,该发送参数包括发送结果(成功或失败)及发送过程参数(例如使用的线程数量、发送速率、完成时间等),其中,将发送结果及发送过程参数分库存储,即采用二段式进行数据库存储。

本实施例中,首先基于发送指标来对批量消息进行分组,根据分组结果调用相应线程执行发送命令,可提高批量消息发送效率。

在本实施例的一个优选方案中,如图3所示,为本发明第一实施例提供的一种批量消息的发送方法的步骤s2的具体流程图,该步骤s2具体包括:

步骤s21,基于批量消息的数量对批量消息进行分组处理,得到对应的消息矩阵;

具体地,由于单线程发送批量消息时发送效率较低,因此首先需要基于批量消息的数量对需要发送的批量消息进行分组处理,得到一消息矩阵,该消息矩阵包括一个以上消息组,每一消息组包括一组以上消息(即需要发送的消息),每一组消息包括一条以上消息,需要说明的是,每一条消息的内容是一致的,此处的批量消息指的是同一消息批量发给多个不同接收对象(用户或客户)。该消息矩阵的长度为线程每一次发送消息的个数(即一组消息的个数),消息矩阵的宽度为消息的并发数量(即消息组的个数),即需要调用线程的数量(一个消息组由一个线程发送)。

步骤s22,将消息矩阵添加到缓存队列中;

具体地,在形成消息矩阵后,将其刷入缓存队列中,该缓存队列存储有待发送的消息矩阵,优选地,可采用先进先出原则来执行发送任务,也可根据消息矩阵的优先级来执行发送任务,此处对此不作限制。

在本实施例的一个优选方案中,如图4所示,为本发明第一实施例提供的一种批量消息的发送方法的步骤s21的具体流程图,该步骤s21具体包括:

步骤s211,基于批量消息的数量对批量消息进行第一次分组处理,得到分组消息集合;

具体地,根据接收对象的数量来获取需要发送的消息的数量,然后对需要发送的消息进行第一次分组处理,得到分组消息集合,该分组消息集合包括两组以上消息,例如,需要给10000个用户发送营销消息,可将该10000个营销消息分为10组消息,每一组消息包括100条消息,该分组消息集合包括10组消息。在本实施例的一个优选方案中,该步骤s211具体包括:

根据批量消息的数量获取对应数量的消息;

具体地,首先根据批量消息的发送命令获得接收对象的数量,即需要批量发送的消息的总数量,优选地,每一接收对象接收的消息一致,获取对应数量的消息。

根据预设消息长度对批量消息进行第一次分组处理,得到分组消息集合;

具体地,由于批量消息中的每一个消息均一致,此处可认为基于预设消息长度对批量消息的数量进行第一次分组处理,例如,预设消息长度是10条消息,当前批量消息的数量为1000条时,可将批量消息分为100组,本实施例中,该预设消息长度可根据实际情况而设(优选地根据线程的配置参数来设置),此处对此不作限制。

在本实施例的另一个技术方案中,还可以基于完成时限对所获取的消息进行第一次分组处理,得到分组消息集合,根据完成时限对所获取的消息进行第一次分组处理,得到分组消息集合,该分组消息集合包括两组以上消息,每一组消息包括两条以上消息。

步骤s212,对分组消息集合进行第二次分组处理,得到消息矩阵;

具体地,在获得分组消息集合后,还需要对分组消息集合进行第二次分组处理,形成消息矩阵,该消息矩阵包括一个以上消息组,每一所述消息组对应一线程;例如,将10组消息分为2个消息组,每一消息组包括5组消息,由一个线程来发送,对应的消息矩阵的长为100,宽为2。

在本实施例的一个优选方案中,该发送指标还包括发送速率及完成时限,该步骤s212具体为:

基于完成时限及发送速率对分组消息集合进行第二次分组处理,得到消息矩阵;

具体地,该消息矩阵包括一个以上消息组,每一消息组对应一线程,第二次分组即给线程分派发送任务,规定由几个线程来负责该批量消息的发送,具体实现过程如下:

首先结合完成时限及发送速率初步计算发送批量消息所需要的时间;

其次判断计算所需时间是否小于完成时限;

具体地,判断计算所需时间(即预计完成时间)是否小于完成时限,当计算所需时间小于完成时限时,说明单线程也可以执行发送命令,此时可基于线程池的线程数量来对该分组消息集合进行第二次分组处理,得到消息矩阵;

而当其不小于完成时限时,则表示单线程无法执行发送命令,需要增加线程来缩减发送批量消息所需的时间,进一步地,可根据预计完成时间与完成时限之间的时间差值来计算需要增加的线程数量,以此来增加线程。

例如,当前的分组消息集合包括10组消息,每一组消息包括100条消息,完成时限是3分钟,发送速率为0.2秒/条,如果单线程发送则需要0.2*10*100=200秒,超过完成时限,此时需要多线程来并发消息(当使用两条线程时对应的发送速率变为0.1秒/条),假设采用双线程,则需要时间为:0.1*10*100=100秒,满足完成时限,因此可采用双线程来完成,一个线程对应一消息组,则此时需要对上述分组消息集合进行分组,即将10组消息分为两个消息组,每一线程负责5组,即每一线程需要发送5次,每次发送100条,当分组消息集合有更多组消息时,逐渐增加线程的数量来匹配合适的分组数量,得到对应的消息矩阵。

在本实施例的进一步优选方案中,在前述计算发送批量消息所需要的时间之前还包括以下步骤:判断前述发送速率是否超过发送速率阈值;

具体地,将该发送速率与发送速率阈值进行比较,当发送速率大于发送速率阈值时,则需要将该发送速率阈值作为披露消息的发送速率,当不大于时,转到前述的计算发送批量消息所需要的时间的步骤。该发送速率阈值可根据实际需求而设,此处对此不作限制。

在本实施例的另一变形方案中,该步骤s212具体包括:

根据预设规则对分组消息集合进行第二次分组,得到消息矩阵;

具体地,该预设规则可以是消息的组数与分组策略对应关系,根据前述的分组消息集合的消息的组数,从该预设规则中找到与该组数对应的分组策略,根据该分组策略来进行第二次分组,例如,预设规则是:消息的组数为1~5时,对应的分组为1个消息组,消息的组数为6~10时,对应的分组为2个消息组,消息组数为11~15时,对应的分组为3个消息组、、、以此类推,根据预设规则中对当前的分组消息集合进行第二次分组处理,得到对应的消息矩阵。

需要说明的是,根据预设规则来进行第二次分组可能会出现分组数量与线程池当前的线程数量不对应,因此需要转到前述步骤s4,需要在调用线程前判断线程池的线程数量是否满足需求,一定程度上保证批量消息发送的效率。

在本实施例的另一变形方案中,该发送指标包括完成时限,该步骤s212具体包括:

获取线程池的配置参数;

具体地,首先获取线程池的配置参数,该配置参数可包括线程的数量及线程的发送速率;优选地,线程池的所有线程的发送速率均一致。

基于线程的数量及线程的发送速率计算发送批量消息所需要的时间;

判断完成时间是否大于完成时限;

当判断为是时,根据完成时间与完成时限之间的差值来增加线程;

当判断为否时,基于线程的数量对前述分组消息集合进行第二次分组,得到消息矩阵,该消息矩阵的长度即为线程每次发生的消息的数量,该消息矩阵的宽度即为线程的数量。

在本实施例的另一变形方案中,该发送指标包括完成时限,该步骤s212具体包括:

获取线程池的配置参数;

具体地,首先获取线程池的配置参数,该配置参数可包括线程的数量及线程的发送速率;优选地,线程池的所有线程的发送速率均一致。

根据线程的数量对分组消息集合进行第二次分组,得到消息矩阵;

具体地,根据线程的数量对分组消息集合进行第二次分组,例如,当前的分组消息集合包括10组消息,每一组消息包括100条消息,当前线程的数量为5,则每一线程负责2组消息,则该分组消息集合分为5组,该消息矩阵的长度为100,宽度为5。

本实施例中,首先基于发送指标来对批量消息进行分组,根据分组结果调用相应线程执行发送命令,可提高批量消息发送效率。

其次,根据发送指标或线程配置参数来对批量消息进行分组,在接收到不同的批量消息发送命令后,可动态调整分组策略,提高发送效率。

再者,根据实际需求配置线程的数量,提高线程的有效利用效率,降低资源损耗。

实施例二:

如图5所示,为本发明第二实施例提供的一种批量消息的发送系统的结构图,该系统包括:接收单元1、与接收单元1连接的分组单元2、与分组单元2连接的调用单元3,其中:

接收单元1,用于接收批量消息的发送命令;

具体地,首先接收用户(或客户)的批量消息的发送命令,或者是周期性地从服务器获取发送命令,该发送命令可包括发送指标,该发送指标可具体包括:被发送对象的参数(例如发送的地址、发送对象的数量等),优选地,该发送指标还可包括发送时限(即完成发送该批量消息的最后时间点),进一步优选地,该发送指标还可包括发送速率。而通常情况下,发送指标不会指定发送速率,而发送速率由线程的配置参数决定。

分组单元2,用于基于发送指标对批量消息进行分组处理并添加到缓存队列中;

具体地,由于单线程批量发送消息的效率比较低,因此首先需要基于发送指标对批量消息进行分组处理,然后添加至缓存队列中等待被发送,以提高发送效率。

调用单元3,用于基于分组结果从线程池中调用相应数量线程执行发送命令。

具体地,根据分组结果从线程池中调用相应数量的线程来执行发送消息的命令,其中,预先在线程池中配置若干线程,每一线程的参数预先设置,该参数可包括线程每次可发送的消息的数量、发送速率等,此处对此不作限制,进一步地,该分组结果包括一个以上消息组,每一消息组对应一线程。

进一步地,线程被调用后,从缓存队列中取出消息进行发送,将消息逐个推送给对应用户,发送完成后返回线程池。

在本实施例的一个优选方案中,该系统还可包括:与分组单元2及调用单元3连接的判断单元4、与判断单元4连接的线程配置单元5,其中:

判断单元4,用于判断线程池当前的线程数量是否小于消息组的数量;

具体地,首先判断该线程池当前的线程数量是否小于消息组的数量,当判断为是时表示需要增加线程,于是反馈给线程配置单元5;当不小于时,还需要判断单元4进一步判断是否需要删减线程池当前的线程,具体地,可基于线程池的数量与消息组的数量之间的差值来判断是否需要删减线程池当前的线程,即获取线程池的数量与消息组的数量的差值,分析该差值是否为零,当该差值不为零时,表示需要删减线程,于是反馈给线程配置单元5,当该差值为零时,表示不需要删减线程,反馈给调用单元3;或者进一步通过判断单元4判断线程池的数量是否大于消息组的数量,当大于时表示需要删减线程池当前的线程,反馈给线程配置单元5以进行线程的删减,当不大于时,表示不需要删减线程池当前的线程,可直接调用线程池的线程,于是反馈给调用单元3。

线程配置单元5,用于当判断线程池当前的线程数量小于消息组的数量时,在线程池中增加对应数量的线程以调用;还用于在判断需要删减线程池当前的线程时,从线程池中删减与差值对应数量的线程。

具体地,线程池的线程是预先配置好的,而由于一个消息组由一个线程负责,当消息组的数量大于线程池当前的线程数量时,表示线程数量不够,则需要增设线程,此时获取消息组的数量与线程池当前的线程数量之间的差值,该差值即为当前需要增设的线程数量,而增设线程的过程与前述的线程配置过程基本一致,此处对此不再赘述。当消息组的数量等于线程池当前的线程数量时,将结果反馈给调用单元3,当消息组的数量小于线程池当前的线程数量时,表示有多余的线程,此时可将剩余的线程删减,以减少资源浪费,进一步优选地,每一个线程的配置参数是一致的,此时只需要从线程池中随机挑选即可进行线程删减,删减数量等于线程池当前的线程数量与消息组的数量之间的差值。

在本实施例的另一个优选方案中,该系统还可包括:与调用单元3连接的反馈单元,其中:

反馈单元,用于通过异步方式反馈发送参数;

具体地,该发送参数包括发送结果(成功或失败)及发送过程参数(例如使用的线程数量、发送速率、完成时间等),其中,将发送结果及发送过程参数分库存储,即采用二段式进行数据库存储。

本实施例中,首先基于发送指标来对批量消息进行分组,根据分组结果调用相应线程执行发送命令,可提高批量消息发送效率。

在本实施例的一个优选方案中,该分组单元2具体包括:分组子单元及与其连接的缓存子单元,其中:

分组子单元,用于基于批量消息的数量对批量消息进行分组处理,得到对应的消息矩阵;

具体地,由于单线程发送批量消息时发送效率较低,因此首先需要基于批量消息的数量对需要发送的批量消息进行分组处理,得到一消息矩阵,该消息矩阵包括一个以上消息组,每一消息组包括一组以上消息(即需要发送的消息),每一组消息包括一条以上消息,需要说明的是,每一条消息的内容是一致的,此处的批量消息指的是同一消息批量发给多个不同接收对象(用户或客户)。该消息矩阵的长度为线程每一次发送消息的个数(即一组消息的个数),消息矩阵的宽度为消息的并发数量(即消息组的个数),即需要调用线程的数量(一个消息组由一个线程发送)。

缓存子单元,用于将消息矩阵添加到缓存队列中;

具体地,在形成消息矩阵后,将其刷入缓存队列中,该缓存队列存储有待发送的消息矩阵,优选地,可采用先进先出原则来执行发送任务,也可根据消息矩阵的优先级来执行发送任务,此处对此不作限制。

在本实施例的一个优选方案中,该分组子单元具体包括:第一分组子单元及与其连接的第二分组子单元,其中:

第一分组子单元,用于基于批量消息的数量对批量消息进行第一次分组处理,得到分组消息集合;

具体地,根据接收对象的数量来获取需要发送的消息的数量,然后对需要发送的消息进行第一次分组处理,得到分组消息集合,该分组消息集合包括两组以上消息,例如,需要给10000个用户发送营销消息,可将该10000个营销消息分为10组消息,每一组消息包括100条消息,该分组消息集合包括10组消息。

在本实施例的一个优选方案中,该第一分组子单元具体用于:根据批量消息的数量获取对应数量的消息;

具体地,首先根据批量消息的发送命令获得接收对象的数量,即需要批量发送的消息的总数量,优选地,每一接收对象接收的消息一致,获取对应数量的消息。

根据预设消息长度对批量消息进行第一次分组处理,得到分组消息集合;

具体地,由于批量消息中的每一个消息均一致,此处可认为基于预设消息长度对批量消息的数量进行第一次分组处理,例如,预设消息长度是10条消息,当前批量消息的数量为1000条时,可将批量消息分为100组,本实施例中,该预设消息长度可根据实际情况而设(优选地根据线程的配置参数来设置),此处对此不作限制。

在本实施例的另一个技术方案中,还可以基于完成时限对所获取的消息进行第一次分组处理,得到分组消息集合,根据完成时限对所获取的消息进行第一次分组处理,得到分组消息集合,该分组消息集合包括两组以上消息,每一组消息包括两条以上消息。

第二分组子单元,用于对分组消息集合进行第二次分组处理,得到消息矩阵;

具体地,在获得分组消息集合后,还需要对分组消息集合进行第二次分组处理,形成消息矩阵,该消息矩阵包括一个以上消息组,每一所述消息组对应一线程;例如,将10组消息分为2个消息组,每一消息组包括5组消息,由一个线程来发送,对应的消息矩阵的长为100,宽为2。

在本实施例的一个优选方案中,该发送指标还包括发送速率及完成时限,该第二分组子单元具体用于基于完成时限及发送速率对分组消息集合进行第二次分组处理,得到消息矩阵;

具体地,该消息矩阵包括一个以上消息组,每一消息组对应一线程,第二次分组即给线程分派发送任务,规定由几个线程来负责该批量消息的发送,具体实现过程如下:

首先结合完成时限及发送速率初步计算发送批量消息所需要的时间;

其次判断计算所需时间是否小于完成时限;

具体地,判断计算所需时间(即预计完成时间)是否小于完成时限,当计算所需时间小于完成时限时,说明单线程也可以执行发送命令,此时可基于线程池的线程数量来对该分组消息集合进行第二次分组处理,得到消息矩阵;

而当其不小于完成时限时,则表示单线程无法执行发送命令,需要增加线程来缩减发送批量消息所需的时间,进一步地,可根据预计完成时间与完成时限之间的时间差值来计算需要增加的线程数量,以此来增加线程。

例如,当前的分组消息集合包括10组消息,每一组消息包括100条消息,完成时限是3分钟,发送速率为0.2秒/条,如果单线程发送则需要0.2*10*100=200秒,超过完成时限,此时需要多线程来并发消息(当使用两条线程时对应的发送速率变为0.1秒/条),假设采用双线程,则需要时间为:0.1*10*100=100秒,满足完成时限,因此可采用双线程来完成,一个线程对应一消息组,则此时需要对上述分组消息集合进行分组,即将10组消息分为两个消息组,每一线程负责5组,即每一线程需要发送5次,每次发送100条,当分组消息集合有更多组消息时,逐渐增加线程的数量来匹配合适的分组数量,得到对应的消息矩阵。

在本实施例的进一步优选方案中,该第二分组子单元还用于在计算发送批量消息所需要的时间之前判断前述发送速率是否超过发送速率阈值;

具体地,将该发送速率与发送速率阈值进行比较,当发送速率大于发送速率阈值时,则需要将该发送速率阈值作为披露消息的发送速率,当不大于时,则计算发送批量消息所需要的时间。该发送速率阈值可根据实际需求而设,此处对此不作限制。

在本实施例的另一变形方案中,该第二分组子单元具体用于:根据预设规则对分组消息集合进行第二次分组,得到消息矩阵;

具体地,该预设规则可以是消息的组数与分组策略对应关系,根据前述的分组消息集合的消息的组数,从该预设规则中找到与该组数对应的分组策略,根据该分组策略来进行第二次分组,例如,预设规则是:消息的组数为1~5时,对应的分组为1个消息组,消息的组数为6~10时,对应的分组为2个消息组,消息组数为11~15时,对应的分组为3个消息组、、、以此类推,根据预设规则中对当前的分组消息集合进行第二次分组处理,得到对应的消息矩阵。

需要说明的是,根据预设规则来进行第二次分组可能会出现分组数量与线程池当前的线程数量不对应,因此需要反馈给判断单元4,需要在调用线程前判断线程池的线程数量是否满足需求,一定程度上保证批量消息发送的效率。

在本实施例的另一变形方案中,该发送指标包括完成时限,该第二分组子单元具体用于:

获取线程池的配置参数;

具体地,首先获取线程池的配置参数,该配置参数可包括线程的数量及线程的发送速率;优选地,线程池的所有线程的发送速率均一致。

基于线程的数量及线程的发送速率计算发送批量消息所需要的时间;

判断完成时间是否大于完成时限;

当判断为是时,根据完成时间与完成时限之间的差值来增加线程;

当判断为否时,基于线程的数量对前述分组消息集合进行第二次分组,得到消息矩阵,该消息矩阵的长度即为线程每次发生的消息的数量,该消息矩阵的宽度即为线程的数量。

在本实施例的另一变形方案中,该发送指标包括完成时限,该第二分组子单元具体用于:

获取线程池的配置参数;

具体地,首先获取线程池的配置参数,该配置参数可包括线程的数量及线程的发送速率;优选地,线程池的所有线程的发送速率均一致。

根据线程的数量对分组消息集合进行第二次分组,得到消息矩阵;

具体地,根据线程的数量对分组消息集合进行第二次分组,例如,当前的分组消息集合包括10组消息,每一组消息包括100条消息,当前线程的数量为5,则每一线程负责2组消息,则该分组消息集合分为5组,该消息矩阵的长度为100,宽度为5。

本实施例中,首先基于发送指标来对批量消息进行分组,根据分组结果调用相应线程执行发送命令,可提高批量消息发送效率。

其次,根据发送指标或线程配置参数来对批量消息进行分组,在接收到不同的批量消息发送命令后,可动态调整分组策略,提高发送效率。

再者,根据实际需求配置线程的数量,提高线程的有效利用效率,降低资源损耗。

本发明还提供一种服务器,该服务器包括现有技术中的服务器的基本结构,还包括线程池及与其连接的批量消息的发送系统,该发送系统的具体结构、工作原理及技术效果与上述实施例二的描述基本一致,此处不再赘述。

实施例三:

图6示出了本发明第三实施例提供的一种服务终端的结构图,该服务终端包括:存储器(memory)61、处理器(processor)62、通信接口(communicationsinterface)63和总线64,该处理器62、存储器61、通信接口63通过总线64完成相互之间的交互通信。

存储器61,用于存储各种数据;

具体地,存储器61用于存储各种数据,例如通信过程中的数据、接收的数据等,此处对此不作限制,该存储器还包括有多个计算机程序。

通信接口63,用于该服务终端的通信设备之间的信息传输;

处理器62,用于调用存储器61中的各种计算机程序,以执行上述实施例一所提供的一种批量消息的发送方法,例如:

接收批量消息的发送命令,所述命令携带发送指标;

基于所述发送指标对所述批量消息进行分组处理并添加到缓存队列中;

基于分组结果从线程池中调用相应数量线程执行发送命令。

本实施例中,首先基于发送指标来对批量消息进行分组,根据分组结果调用相应线程执行发送命令,可提高批量消息发送效率。

本发明还提供一种存储器,该存储器存储有多个计算机程序,该多个计算机程序被处理器调用执行上述实施例一所述的一种批量消息的发送方法。

本发明中,首先基于发送指标来对批量消息进行分组,根据分组结果调用相应线程执行发送命令,可提高批量消息发送效率。

其次,根据发送指标或线程配置参数来对批量消息进行分组,在接收到不同的批量消息发送命令后,可动态调整分组策略,提高发送效率。

再者,根据实际需求配置线程的数量,提高线程的有效利用效率,降低资源损耗。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。

本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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