CN105933369A - 一种消息转发方法及设备 - Google Patents
一种消息转发方法及设备 Download PDFInfo
- Publication number
- CN105933369A CN105933369A CN201510987875.XA CN201510987875A CN105933369A CN 105933369 A CN105933369 A CN 105933369A CN 201510987875 A CN201510987875 A CN 201510987875A CN 105933369 A CN105933369 A CN 105933369A
- Authority
- CN
- China
- Prior art keywords
- grade
- receiving terminal
- message
- threads
- cycle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明实施例涉及信息处理技术领域,尤其涉及一种消息转发方法及设备,用以避免由于一个接收端出现故障而使待转发消息队列中的其它接收端的消息出现延迟发送的情况。在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息;根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送;若接收端在当前等级判定周期内的等级大于第一等级阈值,则在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息。
Description
技术领域
本发明实施例涉及信息处理技术领域,尤其涉及一种消息转发方法及设备。
背景技术
随着互联网技术的发展,在线支付和空中开卡等联机业务的使用场景越来越广泛,在一个联机业务中,通常需要一个跨接多个成员机构的联机平台,如果所跨接的成员机构相互之间的请求均采用同步应答方式,则对该联机平台的性能要求较高。为了降低对联机平台性能的要求,对于各个成员机构之间发送的实时性要求不高、且丢包后不阻碍后续交易的消息采用存储转发的方式完成。
图1示例性示出了现有技术中一种存储转发的方法适用的系统架构示意图,如图1所示,包括数据库101、转发设备102,以及至少一个接收端103。数据库101中存储需要向接收端103发送的消息,转发设备102从数据库101中读取需要转发的消息,并转发给至少一个接收端103。
在具体实施中,比如,在银联搭建的可信服务管理系统(Trusted ServiceManagement,简称TSM)中,对于空中开卡后的各联机平台之间,银行卡状态的同步请求,即采用了存储转发的机制,即将银行卡的状态的同步请求存储至数据库中,由转发设备在适当的时机将该银行卡的状态的同步请求转发给各个联机平台。如此,既减少用户前端请求的等待时间,又极大的减少TSM系统的负载压力。
现有的消息的存储转发机制为,转发设备102从数据库101中获取消息队列,转发设备102根据消息队列中各个消息的顺序,向接收端发送消息队列中的消息。在该过程中转发设备通过预先建立的线程向消息对应的接收端发送消息,在接收端返回的响应之后,可在该预先建立的线程上接着发其它消息,若某个接收端响应不及时或发生故障时,则该线程就会被长时间占用,从而导致消息队列中的后续消息发送不及时。
发明内容
本发明实施例提供一种消息转发方法及设备,用以根据接收端的状态灵活的发送待转发消息队列中的消息,避免由于一个接收端出现故障而使待转发消息队列中的其它接收端的消息出现延迟发送的情况。
本发明实施例提供一种消息转发方法,包括:
在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息;
确定接收端在第一时长内的至少一个消息的响应时长;其中,一个消息的响应时长为从向接收端发送消息,至接收到接收端反馈的消息对应的响应之间的时长;
根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;
若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送;
若接收端在当前等级判定周期内的等级大于第一等级阈值,则在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息。
可选地,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息,具体包括:
若确定接收端在上一个等级判定周期的等级不大于第一等级阈值,则调整接收端的等级,以使调整后的接收端的等级大于第一等级阈值,并根据调整后的接收端的等级,向接收端发送待转发消息队列中的消息;
若确定接收端在上一个等级判定周期的等级大于第一等级阈值时,根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息。
可选地,根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,具体包括:
根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端中在第一时长内的至少一个消息的响应时长的平均值;
若接收端在第一时长内的至少一个消息的响应时长的平均值大于响应时长阈值,则确定接收端在当前等级判定周期内的等级不大于第一等级阈值;
若接收端在第一时长内的至少一个消息的响应时长的平均值不大于响应时长阈值,则确定接收端在当前等级判定周期内的等级大于第一等级阈值的等级,且根据述接收端在第一时长内的至少一个消息的响应时长的平均值,确定接收端在当前等级判定周期内的等级;
其中,接收端的响应时长的平均值越短,所对应的接收端的等级越高。
可选地,根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,具体包括:
根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;
根据确定的接收端在当前等级判定周期内的等级,为接收端分配接收端在当前等级判定周期内的等级对应的线程数量;
其中,接收端在当前等级判定周期的等级越高,为接收端分配的在当前等级判定周期内的等级对应的线程数量越少。
可选地,根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,具体包括:
针对接收端所在的系统所包括的多个接收端中的每个接收端,根据获取的每个接收端在第一时长内的至少一个消息的响应时长,确定每个接收端在当前等级判定周期内的等级;
根据多个接收端中每个接收端的等级,对系统的初始总的线程数量在预设的范围内进行调整,得到总的线程数量;其中,预设的范围的两个节点为预设范围的最小值和预设范围的最大值;
根据系统的总的线程数量,为每个等级的接收端分配每个等级对应的线程数量。
可选地,根据多个接收端中每个接收端的等级,对系统的初始总的线程数量在预设的范围内进行调整,得到总的线程数量,具体包括:
根据多个接收端中每个接收端的等级,通过以下公式计算备选总的线程数量:
备选总的线程数量=预设范围的最小值+预设范围的最大值×[(多个接收端中的等级大于第一等级阈值,且小于第二等级阈值的所有接收端的数量)÷多个接收端的总数量];
其中,第二等级阈值高于第一等级阈值;
若确定备选总的线程数量大于预设范围的最大值,则将预设范围的最大值确定为总的线程数量;
若确定备选总的线程数量小于预设范围的最小值,则将预设范围的最小值确定为总的线程数量;
若确定备选总的线程数量不大于预设范围的最大值,且不小于预设范围的最小值,则将备选总的线程数量确定为总的线程数量。
可选地,根据系统的总的线程数量,为每个等级的接收端分配每个等级对应的线程数量,具体包括:
针对每个等级,根据系统的总的线程数量,根据以下公式为该等级的接收端分配该等级对应的备选线程数量:
该等级对应的备选线程数量=总的线程数量×(在多个接收端中该等级对应的所有接收端的数量÷多个接收端的总的数量);
将该等级对应的备选线程数量确定为该等级对应的线程数量;或者根据每个等级对应的备选线程数量,确定每个等级对应的线程数量。
可选地,根据每个等级对应的备选线程数量,确定每个等级对应的线程数量,具体包括:
对每个等级对应的备选线程数量进行调整,将调整后的每个等级的备选线程数量确定为每个等级的线程数量;
其中,针对每个等级,调整后的每个等级的备选线程数量满足以下条件:
等级越高,调整后的该等级的备选线程数量越少;
所有等级中的每个等级对应的线程数量的总和,等于所有等级中每个等级对应的调整后的备选线程数量的总和。
可选地,在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息,具体包括:
在第一时长后,根据接收端在当前等级判定周期内的等级,通过为接收端分配的接收端在当前等级判定周期内的等级对应的线程数量对应的线程,向接收端发送待转发消息队列中的消息。
可选地,在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息,具体包括:
在第一时长后根据接收端在当前等级判定周期内的等级向接收端发送待转发消息队列中的消息;
在确定第二时长内未接收到接收端反馈的消息对应的响应时,重发K次待发送消息;其中,K不大于预设重发次数阈值;其中,K越大,第K次重发与第(K-1)次重发之间的时间间隔越大;
在确定接收到接收端反馈的消息对应的响应时,确定消息发送成功,在确定K等于预设重发次数阈值时,确定消息发送失败。
可选地,还包括:
在确定当前时刻达到当前消息队列获取周期时,从数据库中获取初始消息队列;其中,消息队列获取周期大于等级判定周期;
确定出在当前时刻对应的等级判定周期内,等级不大于第一等级阈值的接收端;
将确定出的等级不大于第一等级阈值的接收端对应的消息,从初始消息队列中移出;
将进行移出操作之后所得到的初始消息队列,确定为新的待转发消息队列。
可选地,接收端在上一个等级判定周期内的等级越高,则接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长越短。
可选地,接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长=L×2L;
其中,L为接收端在上一个等级判定周期内的等级。
本发明实施例提供一种消息转发设备,包括:
第一发送单元,用于在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息;
确定单元,用于确定接收端在第一时长内的至少一个消息的响应时长;根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;其中,一个消息的响应时长为从向接收端发送消息,至接收到接收端反馈的消息对应的响应之间的时长;
第二发送单元,用于若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送;
若接收端在当前等级判定周期内的等级大于第一等级阈值,则在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息。
可选地,第一发送单元,具体用于:
若确定接收端在上一个等级判定周期的等级不大于第一等级阈值,则调整接收端的等级,以使调整后的接收端的等级大于第一等级阈值,并根据调整后的接收端的等级,向接收端发送待转发消息队列中的消息;
若确定接收端在上一个等级判定周期的等级大于第一等级阈值时,根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息。
可选地,确定单元,具体用于:
根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端中在第一时长内的至少一个消息的响应时长的平均值;
若接收端在第一时长内的至少一个消息的响应时长的平均值大于响应时长阈值,则确定接收端在当前等级判定周期内的等级不大于第一等级阈值;
若接收端在第一时长内的至少一个消息的响应时长的平均值不大于响应时长阈值,则确定接收端在当前等级判定周期内的等级大于第一等级阈值的等级,且根据述接收端在第一时长内的至少一个消息的响应时长的平均值,确定接收端在当前等级判定周期内的等级;
其中,接收端的响应时长的平均值越短,所对应的接收端的等级越高。
可选地,确定单元,具体用于:
根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;
根据确定的接收端在当前等级判定周期内的等级,为接收端分配接收端在当前等级判定周期内的等级对应的线程数量;
其中,接收端在当前等级判定周期的等级越高,为接收端分配的在当前等级判定周期内的等级对应的线程数量越少。
可选地,确定单元,具体用于:
针对接收端所在的系统所包括的多个接收端中的每个接收端,根据获取的每个接收端在第一时长内的至少一个消息的响应时长,确定每个接收端在当前等级判定周期内的等级;
根据多个接收端中每个接收端的等级,对系统的初始总的线程数量在预设的范围内进行调整,得到总的线程数量;其中,预设的范围的两个节点为预设范围的最小值和预设范围的最大值;
根据系统的总的线程数量,为每个等级的接收端分配每个等级对应的线程数量。
可选地,确定单元,具体用于:
根据多个接收端中每个接收端的等级,通过以下公式计算备选总的线程数量:
备选总的线程数量=预设范围的最小值+预设范围的最大值×[(多个接收端中的等级大于第一等级阈值,且小于第二等级阈值的所有接收端的数量)÷多个接收端的总数量];
其中,第二等级阈值高于第一等级阈值;
若确定备选总的线程数量大于预设范围的最大值,则将预设范围的最大值确定为总的线程数量;
若确定备选总的线程数量小于预设范围的最小值,则将预设范围的最小值确定为总的线程数量;
若确定备选总的线程数量不大于预设范围的最大值,且不小于预设范围的最小值,则将备选总的线程数量确定为总的线程数量。
可选地,确定单元,具体用于:
针对每个等级,根据系统的总的线程数量,根据以下公式为该等级的接收端分配该等级对应的备选线程数量:
该等级对应的备选线程数量=总的线程数量×(在多个接收端中该等级对应的所有接收端的数量÷多个接收端的总的数量);
将该等级对应的备选线程数量确定为该等级对应的线程数量;或者根据每个等级对应的备选线程数量,确定每个等级对应的线程数量。
可选地,确定单元,具体用于:
对每个等级对应的备选线程数量进行调整,将调整后的每个等级的备选线程数量确定为每个等级的线程数量;
其中,针对每个等级,调整后的每个等级的备选线程数量满足以下条件:
等级越高,调整后的该等级的备选线程数量越少;
所有等级中的每个等级对应的线程数量的总和,等于所有等级中每个等级对应的调整后的备选线程数量的总和。
可选地,第二发送单元,具体用于:
在第一时长后,根据接收端在当前等级判定周期内的等级,通过为接收端分配的接收端在当前等级判定周期内的等级对应的线程数量对应的线程,向接收端发送待转发消息队列中的消息。
可选地,第二发送单元,具体用于:
在第一时长后根据接收端在当前等级判定周期内的等级向接收端发送待转发消息队列中的消息;
在确定第二时长内未接收到接收端反馈的消息对应的响应时,重发K次待发送消息;其中,K不大于预设重发次数阈值;其中,K越大,第K次重发与第(K-1)次重发之间的时间间隔越大;
在确定接收到接收端反馈的消息对应的响应时,确定消息发送成功,在确定K等于预设重发次数阈值时,确定消息发送失败。
可选地,还包括获取单元,用于:
在确定当前时刻达到当前消息队列获取周期时,从数据库中获取初始消息队列;其中,消息队列获取周期大于等级判定周期;
确定出在当前时刻对应的等级判定周期内,等级不大于第一等级阈值的接收端;
将确定出的等级不大于第一等级阈值的接收端对应的消息,从初始消息队列中移出;
将进行移出操作之后所得到的初始消息队列,确定为新的待转发消息队列。
可选地,接收端在上一个等级判定周期内的等级越高,则接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长越短。
可选地,接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长=L×2L;
其中,L为接收端在上一个等级判定周期内的等级。
本发明实施例中,在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息;确定接收端在第一时长内的至少一个消息的响应时长;其中,一个消息的响应时长为从向接收端发送消息,至接收到接收端反馈的消息对应的响应之间的时长;根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送;若接收端在当前等级判定周期内的等级大于第一等级阈值,则在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息。由于根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,因此,接收端在当前等级判定周期内的等级可表示接收端在当前等级判定周期内的接收消息及返回响应的速度,进而可根据接收端在当前等级判定周期内的接收消息及返回响应的速度,确定是否发送针对接收端的消息,从而实现了根据接收端自身的状态灵活的发送待转发消息队列中的消息的目的;进一步由于若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送,因此,当接收端由于故障或其它原因导致接收消息及返回响应的速度较慢时,可暂时不发送针对该接收端的消息,而先发送其它接收消息及返回响应的速度正常的接收端对应的消息,如此,则避免了由于发送该接收消息及返回响应的速度较慢的接收端对应的消息导致的长时间占用线程,延迟待转发消息队列中的其它消息发送时间的情况。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中一种存储转发的方法适用的系统架构示意图;
图2为本发明实施例适用的一种消息转发方法适用的系统架构示意图;
图3为本发明实施例提供的一种消息转发方法流程示意图;
图4为本发明实施例提供的一种消息转发设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图2示例性示出了本发明实施例适用的一种消息转发方法适用的系统架构示意图,如图2所示,包括数据库201、消息转发设备202,以及至少一个接收端203。数据库201中存储需要向接收端203发送的消息,消息转发设备202周期性从数据库201中获取初始消息队列,并根据本发明实施例提供的消息转发方法,转发给至少一个接收端203。
本发明实施例中,消息转发设备202以第二时长为周期,周期性的从数据库获取待转发消息队列。消息转发设备202以第三时长为周期,周期性的对接收端的等级进行判定。第二时长和第三时长之间无必然联系,可选地,第二时长大于第三时长。
进一步,优选地,消息转发设备202为每个等级的接收端进行等级判定的周期都不同,比如,以第四时长为周期,周期性判定等级为2级的接收端的等级,以第五时长为周期,周期性判定等级为3级的接收端的等级。第四时长与第五时长无必然联系,可选地,等级越高,等级判定周期的时长越短,即等级2级高于等级3级,此时第四时长短于第五时长。进一步,第四时长和第五时长,与第二时长之间无必然联系,仅仅是不同的实施方式。
本发明实施例中,其它一些服务器按照时间顺序向数据库201中放入待转发的消息,消息转发设备202从数据库201中取出待转发消息队列,之后向各个接收端发送消息,具体来说,每条消息中均包括目标接收端的标识,比如一条消息是需要发送给接收端1的,此时该消息中目标接收端的标识即为接收端1的标识,此时消息转发设备202在轮到发送该条消息时,将该条消息发送给接收端1。又或者,该条消息是发给接收端2和接收端3的,此时该消息中目标接收端的标识即为接收端2和接收端3的标识,此时消息转发设备202在轮到发送该条消息时,将该条消息发送两次,一次发送给接收端2,另一次发送给接收端3,如果该过程中,经判断接收端3的等级不大于第一等级阈值,则需要暂停向接收端3发送消息,则仅将该条消息发送给接收端2一次,并进行标记,同时留存该条消息,并标记还需向接收端3发送,等到无需暂停向接收端3发送消息时,在轮到发送该条消息时,向接收端发送该条消息。
图3示例性示出了本发明实施例提供的一种消息转发方法的方法流程示意图。
基于图2所示的系统架构,如图3所示,本发明实施例提供的一种消息转发方法,可由本发明实施例例中的消息转发设备执行,包括:
步骤301,消息转发设备在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息;
步骤302,消息转发设备确定接收端在第一时长内的至少一个消息的响应时长;其中,一个消息的响应时长为从向接收端发送消息,至接收到接收端反馈的消息对应的响应之间的时长;
步骤303,消息转发设备根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;
步骤304,若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送;若接收端在当前等级判定周期内的等级大于第一等级阈值,则在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息。
举例来说,在8点整向接收端1发送消息,接收端1接收到该消息,并返回消息设备该消息的响应,消息转发设备在8点0分2秒接收到接收端1发送的该消息的响应,则该消息的响应时长为8点0分2秒减去8点整所得的时长,即该消息的响应时长为2秒。
由于根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,因此,接收端在当前等级判定周期内的等级可表示接收端在当前等级判定周期内的接收消息及返回响应的速度,进而可根据接收端在当前等级判定周期内的接收消息及返回响应的速度,确定是否发送针对接收端的消息,从而实现了根据接收端自身的状态灵活的发送待转发消息队列中的消息的目的;进一步由于若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送,因此,当接收端由于故障或其它原因导致接收消息及返回响应的速度较慢时,可暂时不发送针对该接收端的消息,而先发送其它接收消息及返回响应的速度正常的接收端对应的消息,如此,则避免了由于发送该接收消息及返回响应的速度较慢的接收端对应的消息导致的长时间占用线程,延迟待转发消息队列中的其它消息发送时间的情况。
具体来说,本发明实施例中消息转发设备周期性从数据库中获取初始消息队列,每个从数据库中获取初始消息队列的周期为一个消息队列获取周期;消息转发设备周期性的对消息转发设备连接的各个接收端进行等级判定,消息转发设备对各个接收端进行等级判定的周期为一个等级判定周期。可选地,消息转发设备以第二时长为周期,每隔第二时长周期性从数据库中获取初始消息队列;以第三时长为周期,每隔第三时长周期性的对消息转发设备连接的各个接收端进行等级判定。第二时长和第三时长之间无必然联系。可选地,第二时长大于第三时长。举个例子,每20分钟从数据库中获取一次待转发消息队列,每隔12分钟对各个接收端进行一次等级判定。
可选地,数据库中按时间顺序存入消息,各个按时间顺序存入的消息组成了消息队列,消息转发设备周期性从数据库的所有消息队列中获取存入的时间最早的一批消息,该存入的时间最早的一批消息即为消息转发设备从数据库中获取的初始消息队列。
一种可选地实施方式为,将消息转发设备从数据库中获取的初始消息队列确定为新的待转发消息队列。
另一种可选地实施方式为,在确定当前时刻达到当前消息队列获取周期时,从数据库中获取初始消息队列;其中,消息队列获取周期大于等级判定周期;确定出在当前时刻对应的等级判定周期内,等级不大于第一等级阈值的接收端;将确定出的等级不大于第一等级阈值的接收端对应的消息,从初始消息队列中移出;将进行移出操作之后所得到的初始消息队列,确定为新的待转发消息队列。
举个例子,比如,在当前时刻,各个接收端的等级可为5级、4级、3级、2级和1级,其中,第一等级阈值为5级,因此,本发明实施例中将等级为5级的接收端对应的消息从初始消息队列中移出,此时获取的新的待转发消息队列中仅包括等级为4级、3级、2级和1级的接收端对应的消息。该示例中4级接收端的响应时长短于5级的接收端的响应时长,该示例中3级接收端的响应时长短于4级的接收端的响应时长,该示例中2级接收端的响应时长短于3级的接收端的响应时长,该示例中1级接收端的响应时长短于2级的接收端的响应时长。也就是说,4级高于5级,3级高于4级,2级高于3级,1级高于2级。
由于等级不大于第一等级阈值的接收端可能由于故障或其它原因,导致该等级不大于第一等级阈值的接收端的的响应时长较长,或者多次向等级不大于第一等级阈值的接收端重发消息,此时即使从数据库中将该等级不大于第一等级阈值的接收端的消息取出,则也可能发送失败,或无法及时收到响应,或者多次重发,因此,在批量的周期性的获取待转发消息队列时,待转发消息队列中直接不包括将该等级不大于第一等级阈值的接收端的消息,则可使消息转发设备集中精力向那些响应时长正常的接收端,即正常工作状态的接收端发送消息,如此,则优化了消息转发设备的工作方式,提高了消息转发设备的效率,也避免过多的出现重发的情况。
进一步,可选地,每次批量读取的待转发消息队列中的消息的数量较大,在当前次获取待转发消息队列之后,下一次获取待转发消息队列之前,还进行了至少一次的接收端的等级判定过程,此时,针对当前次获取的待转发消息队列中的消息,在每个等级判定周期中,根据每个判定周期内的各个接收端的等级向接收端发送针对该接收端的消息。
举个例子,比如,在当前次获取待转发消息队列时,由于当前时刻接收端1的等级不大于第一等级阈值,而接收端2和接收端3的等级均大于第一等级阈值,因此获取的待转发消息队列中仅包括接收端2和接收端3对应的消息。在下一次获取待转发消息队列之前,在某个等级判定周期内,经判定接收端2的等级也不大于第一等级阈值,此时,将待转发消息队列中针对接收端2的消息暂停发送。比如,消息队列中第一条消息是发送给接收端3的,则正常发送,第二条消息经判定是发送给接收端2的,则跳过该第二条消息,判断是否发送第三条消息。另一种方式为,消息队列中第一条消息是发送给接收端3的,则正常发送第一条消息,第二条消息经判定是发送给接收端2的,则将该第二条消息放置于暂停发送的队列,并不发送第二条消息,接着判断是否发送第三条消息。
由于等级不大于第一等级阈值的接收端可能由于故障或其它原因,导致该等级不大于第一等级阈值的接收端的的响应时长较长,或者多次向等级不大于第一等级阈值的接收端重发消息,此时即使向将该等级不大于第一等级阈值的接收端的发送消息,则也可能发送失败,或无法及时收到响应,或者多次重发,因此,先暂停向该等级不大于第一等级阈值的接收端发送消息,待该等级不大于第一等级阈值的接收端的等级大于第一等级阈值时,即恢复正常工作状态时,再发送,则可使消息转发设备集中精力向那些响应时长正常的接收端,即正常工作状态的接收端发送消息,如此,则优化了消息转发设备的工作方式,提高了消息转发设备的效率,也避免过多的出现重发的情况。
上述步骤301中,可选地,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息,具体包括:
若确定接收端在上一个等级判定周期的等级不大于第一等级阈值,则调整接收端的等级,以使调整后的接收端的等级大于第一等级阈值,并根据调整后的接收端的等级,向接收端发送待转发消息队列中的消息;
若确定接收端在上一个等级判定周期的等级大于第一等级阈值时,根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息。
具体来说,若确定接收端在上一个等级判定周期的等级不大于第一等级阈值,则调整接收端的等级,以使调整后的接收端的等级大于第一等级阈值,且使调整后的接收端的等级仅仅大于第一等级阈值一个级别,比如接收端在上一个等级判定周期的等级为5级,第一等级阈值为5级,此时将接收端的等级调高一级,使调整后的接收端的等级为4级,此时,调整后的接收端的等级大于第一等级阈值。
如此,一方面由于在上一个等级判定周期的等级大于第一等级阈值的接收端调整后,等级大于第一等级阈值,消息转发设备可不再将在上一个等级判定周期的等级不大于第一等级阈值的接收端的消息暂停,可向在上一个等级判定周期的等级不大于第一等级阈值的接收端发送消息,如此可根据向在上一个等级判定周期的等级不大于第一等级阈值的接收端发送消息对应的响应时长,对在上一个等级判定周期的等级不大于第一等级阈值的接收端进行判断,判断该接收端在当前等级判定周期内的等级。
另一方面,优选地,调整后的接收端的等级仅仅大于第一等级阈值一个级别,则调整后的接收端的等级接近于调整前的接收端的等级,因此可根据调整后的接收端的等级更合理的为该接收端设置对应的线程数量,并通过设置的线程发送消息,比如,为等级比较低的接收端设置较多的线程,如此,可尽量加快等级比较低的接收端对应的消息的发送速度,可见,通过该方式更加优化了消息转发设备的工作方式。
上述步骤302中,可选地,根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,具体包括:
根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端中在第一时长内的至少一个消息的响应时长的平均值;
若接收端在第一时长内的至少一个消息的响应时长的平均值大于响应时长阈值,则确定接收端在当前等级判定周期内的等级不大于第一等级阈值;
若接收端在第一时长内的至少一个消息的响应时长的平均值不大于响应时长阈值,则确定接收端在当前等级判定周期内的等级大于第一等级阈值的等级,且根据述接收端在第一时长内的至少一个消息的响应时长的平均值,确定接收端在当前等级判定周期内的等级;其中,接收端的响应时长的平均值越短,所对应的接收端的等级越高。
可选地,每个等级对应一个响应时长的范围,举个例子,比如响应时长0秒至1秒,则该响应时长范围对应的等级为1级;若响应时长为1秒至2秒,则该响应时长范围对应的等级为2级;若响应时长为2秒至3秒,则该响应时长范围对应的等级为3级;若响应时长为3秒至4秒,则该响应时长范围对应的等级为4级;若响应时长为4秒至5秒,则该响应时长范围对应的等级为5级。可选地,若响应时长为5秒以上,则该响应时长范围对应的等级为6级;或者若响应时长为4秒以上时,该响应时长范围对应的等级为5级。
为了清楚描述上述方法流程,下面通过示例一举个具体的例子用于描述上述方法中的一种具体的实现方式。
示例一
消息转发设备每30分钟获取一次待转发消息队列,每12分钟对接收端进行一次等级判定。消息转发设备连接接收端1、接收端2、接收端3、接收端4、接收端5和接收端6;各个接收端的等级可为5级、4级、3级、2级和1级,其中,第一等级阈值为5级,该示例中4级接收端的响应时长短于5级的接收端的响应时长,该示例中3级接收端的响应时长短于4级的接收端的响应时长,该示例中2级接收端的响应时长短于3级的接收端的响应时长,该示例中1级接收端的响应时长短于2级的接收端的响应时长。
可选地,消息转发设备在最初开机时对消息转发设备所连接的所有接收端进行初始化,为所有接收端分配一个初始等级,之后在每个等级判定周期为每个接收端重新分配等级。
比如在8点,8点为第一个消息队列获取周期的开始时刻,8点30分为第二个消息队列获取周期的开始时刻,7点55分为第一个等级判定周期的开始时刻,8点7分为第二个等级判定周期的开始时刻,8点19分为第三个等级判定周期的开始时刻,8点31分为第三个等级判定周期的开始时刻。
在7点55分开始的第一个等级判定周期中,接收端1的等级为5级,接收端2和接收端3的等级为4级,接收端4的等级为3级,接收端5的等级为2级,接收端6的等级为1级。
当前时刻为8点,在确定当前时刻达到当前消息队列获取周期时,即当前时刻达到8点时,即到达了第一个消息队列获取周期,此时从数据库中获取初始消息队列;确定出在当前时刻8点对应的等级判定周期内,即当前时刻8点对应的第一个等级判定周期内,等级不大于第一等级阈值的接收端为接收端1;将接收端1对应的消息从初始消息队列中移出;将进行移出操作之后所得到的初始消息队列,确定为新的待转发消息队列,此时新的待转发消息队列中不包括接收端1的消息队列。
之后根据第一个等级判定周期内接收端2、接收端3、接收端4、接收端5和接收端6的等级,向接收端2、接收端3、接收端4、接收端5和接收端6发送待转发消息队列中的消息。
当当前时刻达到8点7分,此时消息转发设备确定当前时刻到达第二个等级判定周期,此时,优选地,将确定接收端在上一个等级判定周期的等级不大于第一等级阈值,则调整接收端的等级,以使调整后的接收端的等级大于第一等级阈值。也就是说,第一个等级判定周期为第二个等级判定周期的上一个等级判定周期,第二个等级判定周期为当前的等级判定周期,由于第一个等级判定周期内接收端1的等级为5级,不大于第一等级阈值,因此,需要将接收端1的等级进行调整,可以调整为4级、3级或2级等等,只要大于第一等级阈值即可,优选地,将接收端1的等级调高5级,即将接收端1的等级调整为4级,其余接收端在第一个等级判定周期内的等级均大于第一等级阈值,因此不对其它接收端的等级进行调整。
将第一时长设置为2分钟,则在第一时长内,由于调整后的接收端1的等级为4级,其余接收端在第一个等级判定周期内的等级均大于第一等级阈值,因此,在该第一时长内,依次向接收端发送待转发消息队列中的消息,比如第一条消息是需要发送给接收端2的,就将该消息发送给接收端2,第二条消息是发送给接收端3的,就将该消息发送给接收端3。第一个消息队列获取周期内并未获取接收端1对应的消息,因此该第一时长内不会向接收端1发送消息。
针对6个接收端中的每个接收端,根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端中在第一时长内的至少一个消息的响应时长的平均值,比如在2分钟内向接收端3发送了22条消息,并受到接收端3返回的22条响应,针对22条消息中的每一条消息,计算从向接收端3发送该条消息开始,至接收端反馈该条消息的响应之间的时长,得到该条消息的响应时长。统计22条消息的响应时长的平均值,并根据统计出的响应时长的平均值确定接收端3在第二个等级判定周期内的等级。
比如,经处理分析,在第二个等级判定周期内各个接收端的等级为:由于未向接收端1发送消息,此时保持接收端1为调整后的等级,即接收端1在第二个等级判定周期内的等级为4级;接收端2的等级为5级,接收端3和接收端4的等级为3级,接收端5的等级为2级,接收端6的等级为1级。可见,在第二个等级判定周期内,接收端2的等级小于第一等级阈值。
当前确定出第二个等级判定周期内各个接收端的等级时,立即根据第二个等级判定周期内各个接收端的等级发送转发消息队列中的消息。具体来说,当第一条消息时发送给接收端3的,则将该第一条消息发送给接收端3,当第二条消息是发送给接收端2的,则暂停发送第二条消息,直接判断第三条消息,若第三条消息是发给接收端6的,则将第三条消息发送给接收端6,若第四条消息是发送给接收端3的,则暂停发送第四条消息,判断第五条消息。
在第二个等级判定周期内依据上述方法,暂停接收端2对应的消息,其余接收端对应的消息正常发送,若当前时刻达到在8点19分时,则为第三个等级判定周期的开始时刻,此时将接收端2的等级先调高为4级,之后在第一时长内向各个接收端发送消息,并判断各个接收端在第三个等级判定周期内的等级,与前述方法类似,不再赘述。
通过上述方法确定出在第三个等级判定周期内各个接收端的等级为:由于未向接收端1发送消息,此时保持接收端1为调整后的等级,即接收端1在第二个等级判定周期内的等级为4级;接收端2先调整为4级,之后向接收端2发送消息,经判断,接收端2的等级为4级;接收端3的等级为5级,接收端4的等级为3级,接收端5的等级为2级,接收端6的等级为1级。可见,在第三个等级判定周期内,接收端3的等级小于第一等级阈值。
当当前时刻达到8点30分时,消息转发设备从数据库中获取初始消息队列,此时初始消息队列中包括在第一个消息队列获取周期筛选掉的接收端1的消息,还包括其它各个接收端对应的消息,此时从初始消息队列中将接收端3对应的消息移出,得到新的待转发消息队列。
在该示例中,在第三个等级判定周期内,由于接收端3的等级为5级,因此接收到3对应的消息被暂停了,在8点31分时,需要将接收端3的等级进行调整,调整为4级,此时,虽然在8点30分重新获取的新的待转发消息队列中没有接收端3的消息,但是消息转发设备中遗留的还未转发完的上一个获取的待转发消息队列中还包括一些接收端3对应的消息,在8点31分对接收端3的等级调整为4级之后的第一时长内,当遇到接收端3的消息时,向接收端3发送接收端3对应的消息。
通过上述示例一可清楚的了解本发明实施例所提供的一种实现方式。
可选地,接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长与接收端在上一个等级判定周期内的等级成正比。可选地,接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长=L×2L;其中,L为接收端在上一个等级判定周期内的等级。通过下述示例二进行详细论述。
示例二
每个等级的接收端对应的等级判定周期都不同,针对每个等级的接收端分别对应一个等级判定周期的时长。等级为3级的接收端对应的等级判定周期为L×2L,即等级为3级的接收端对应的等级判定周期为3×23,为24,等级为3级的接收端对应的等级判定周期为24秒;类似的,等级为2级的接收端对应的等级判定周期为8秒。也就是说,消息转发设备在确定了每个接收端的等级之后,根据每个接收端的等级所对应的等级判定周期的时长确定下一次判定该接收端的等级时间。
比如,在8点的时候接收端2当前等级为2级,接收端3当前等级为3级,则由于等级为3级的接收端对应的等级判定周期为24秒,等级为2级的接收端对应的等级判定周期为8秒,因此,在8点0分8秒时对接收端2进行再次的等级判定,在8点0分24秒对等级为3级的接收端3再次进行等级判定。比如在8点0分8秒的周期内将接收端2的等级更新为3级,此时则在8点0分32秒的时候再次对接收端2进行等级判定。
上述步骤304中,可选地,在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息,具体包括:
在第一时长后根据接收端在当前等级判定周期内的等级向接收端发送待转发消息队列中的消息;
在确定第二时长内未接收到接收端反馈的消息对应的响应时,重发K次待发送消息;其中,K不大于预设重发次数阈值;其中,K越大,第K次重发与第(K-1)次重发之间的时间间隔越大;
在确定接收到接收端反馈的消息对应的响应时,确定消息发送成功,在确定K等于预设重发次数阈值时,确定消息发送失败。
本发明实施例中,系统或者消息转发设备预设重发次数阈值,当发送消息不成功时,进行重发,但是重发次数不能大于重发次数阈值。
举个例子,比如在8点0分0秒发送当前的消息给接收端3,在5秒内没有收到接收端3反馈的响应,此时接收端3可能在重启或者发生了故障,或者其它原因导致接收端3没能在正常时间内反馈的响应。此时,消息发送设备启动重发策略,在距离第一次发送5秒之后重新发送第二次,即在8点0分5秒第二次发送该条消息;此时在10秒内还是没有收到接收端3的反馈的响应,系统设置发送消息进行重发的次数不能大于次数阈值,比如此时阈值为5次,则此时消息转发设备在距离第二次发送10秒之后重新发送第三次,即在8点0分15秒后第三次发送该条消息;此时在15秒内还是没有收到接收端3的反馈的响应,则此时消息转发设备在距离第三次发送15秒之后重新发送第四次,即在8点0分30秒后第四次发送该条消息;此时如果在20秒内接收到接收端3的反馈的响应,确定消息发送成功。此时如果在20秒内还是没有收到接收端3的反馈的响应,则此时消息转发设备在距离第四次发送20秒之后重新发送第五次,即在8点0分50秒后第五次发送该条消息。如果在一定时长内还是没有收到接收端3返回的响应,则确定该条消息发送失败。可选地,将发送失败的消息进行标记,待接收端3恢复正常工作之后再次向接收端3发送。另一种可选地实施方式为,向客户端反馈该条消息发送失败。
如此,通过衰减策略,即重发次数越多,重发之间相隔的时间越长,如此,可在有限的重发次数内,尽可能的等待接收端3恢复正常工作,为接收端3恢复正常工作提供了更长的时间,从而增加了消息发送成功的概率。比如,接收端3正在重启,此时向接收端3进行重发,在有限的重发次数内,延长了重发所经过的时间,如此可度过接收端3的重启时间,更有可能在接收到3重启完毕之后还有几次向接收端3进行重发的机会,如此,则提高了接收端3成功接收到该消息的机率,优化了消息转发设备的转发信息的方式。
可选地,第n次重发,与第n+1次重发之间的时间间隔为2n-1,比如,当重发到第4次尚未成功时,第5次的重发将在第4次重发之后的8秒之后触发,在每次重发的等待时间内,可以继续转发其它的消息,这样可以降低消息转发设备的负载率,提高消息转发的效率和成功率。
可选地,上述步骤304之前,还需要为消息转发设备连接的接收端分配资源,即为不同的接收端分配线程,消息转发设备使用线程池中的线程向接收端发送消息。
可选地,根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,具体包括:
根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;根据确定的接收端在当前等级判定周期内的等级,为接收端分配接收端在当前等级判定周期内的等级对应的线程数量;
其中,接收端在当前等级判定周期的等级越高,为接收端分配的在当前等级判定周期内的等级对应的线程数量越少。
举个例子,消息转发设备的线程池中共有50条线程,共有六个个接收端,分别为接收端1、接收端2、接收端3、接收端4、接收端5和接收端6。接收端1的等级为2级,接收端2、接收端3和接收端4的等级为3级,接收端5和接收端6的等级为4级。2级高于3级,3级高于4级。由于接收端的等级越高,响应时长越短,因此等级越高的接收端使用较少的线程即可。一种可选地方式为,为等级为2级的接收端分配10个线程,为等级为3级的接收端分配15个线程,为等级为4级的接收端分配25个线程。此时,消息转发设备通过为等级为2级的接收端分配的10个线程向接收端1发送消息,消息转发设备通过为等级为3级的接收端分配的15个线程向接收端2、接收端3和接收端4发送消息,消息转发设备通过为等级为4级的接收端分配的25个线程向接收端5和接收端6发送消息。以消息转发设备通过为等级为4级的接收端分配的25个线程向接收端5和接收端6发送消息举个例子,消息转发设备需要向接收端5发送消息时,可先确定为等级为4级的接收端分配的25个线程中有未被占用的线程,确定出一个未被占用的线程,通过该确定出的未被占用的线程向接收端5发送消息,此时,该线程从未被占用状态变为占用状态,接收端5通过该线程向消息转发设备反馈该消息的响应,消息转发设备接收到该消息的响应之后,释放该线程,即该线程从占用状态又转换为未被占用的状态。
另一种可选地实施方式为,根据每个等级的接收端的数量,以及接收端的等级为每个等级的接收端分配线程。比如,接收端1的等级为2级,接收端2、接收端3和接收端4的等级为3级,接收端5和接收端6的等级为4级。此时为等级为2的接收端仅有一个,为等级为2级的接收端分配5个线程,由于等级为3级的接收端有三个,因此为等级为3级的接收端分配21个线程,此时,每个等级为3级的接收端可平均对应7个线程,由于等级为4级的接收端有两个,因此为等级为4级的接收端分配24个线程,此时,每个等级为4级的接收端可平均对应12个线程。
可选地,上述步骤304之前,为消息转发设备连接的接收端分配资源,即为不同的接收端分配线程,还包括另一种可选地实施方式。可选地,根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,具体包括:
针对接收端所在的系统所包括的多个接收端中的每个接收端,根据获取的每个接收端在第一时长内的至少一个消息的响应时长,确定每个接收端在当前等级判定周期内的等级;
根据多个接收端中每个接收端的等级,对系统的初始总的线程数量在预设的范围内进行调整,得到总的线程数量;其中,预设的范围的两个节点为预设范围的最小值和预设范围的最大值;
根据系统的总的线程数量,为每个等级的接收端分配每个等级对应的线程数量。
具体来说,本发明实施例中消息转发设备连接的多个接收端共有五个,此时根据五个接收端中每个接收端在当前等级判定周期内的等级,对消息转发设备的线程池中的总的线程数量进行调整。举个例子,线程池中线程数量的变化范围为[30,70],即线程池中的线程数量最少为30个线程,最多为70个线程,因为线程数量越多,系统负荷就越大,且造成资源浪费,但是线程数量如果过少,就会使接收端不够用,反而延迟了消息转发效率。因此,本发明实施例中的线程池中的总的线程数量可根据具体情况进行调整。
具体调整方式有多种,比如在当前等级判定周期内,大于第一等级阈值的接收端越多,则在当前等级判定周期内线程池中的总的线程数量就越多,或者处于低等级的接收端数量较少,处于高等级的接收端的数量较多,此时由于处于高等级的接收端的响应时长较短,因此线程池中使用较少的线程即可,因此此时当前等级判定周期内线程池中的总的线程数量较少即可。
本发明实施例中还提供另外一种可选地实施方式,用于确定线程池中总的线程数量。可选地,根据多个接收端中每个接收端的等级,对系统的初始总的线程数量在预设的范围内进行调整,得到总的线程数量,具体包括:
根据多个接收端中每个接收端的等级,通过以下公式计算备选总的线程数量:
备选总的线程数量=预设范围的最小值+预设范围的最大值×[(多个接收端中的等级大于第一等级阈值,且小于第二等级阈值的所有接收端的数量)÷多个接收端的总数量];
其中,第二等级阈值高于第一等级阈值;
若确定备选总的线程数量大于预设范围的最大值,则将预设范围的最大值确定为总的线程数量;
若确定备选总的线程数量小于预设范围的最小值,则将预设范围的最小值确定为总的线程数量;
若确定备选总的线程数量不大于预设范围的最大值,且不小于预设范围的最小值,则将备选总的线程数量确定为总的线程数量。
之后可根据总的线程数量为每个等级的接收端分配相应的线程,比如等级越高的接收端分配的线程数量越少。本发明实施例中还提供另一种实施方式,可选地,根据系统的总的线程数量,为每个等级的接收端分配每个等级对应的线程数量,具体包括:
针对每个等级,根据系统的总的线程数量,根据以下公式为该等级的接收端分配该等级对应的备选线程数量:
该等级对应的备选线程数量=总的线程数量×(在多个接收端中该等级对应的所有接收端的数量÷多个接收端的总的数量);
将该等级对应的备选线程数量确定为该等级对应的线程数量;或者根据每个等级对应的备选线程数量,确定每个等级对应的线程数量。
举个例子,预设范围的最小值为30,预设范围的最大值为50,第一等级阈值为5级,第二等级阈值为2级,多个接收端中的等级大于第一等级阈值,且小于第二等级阈值的所有接收端的数量,即等级为3级和4级的接收端的数量为3个,其中,等级为3级的接收端2个,等级为4级的接收端为1个,接收端总数量为6个,一个接收端的等级为5级,另外两个接收端的等级为2级,此时:
备选总的线程数量=30+50×[3÷6]=55;此时确定备选总的线程数量大于预设范围的最大值,则将预设范围的最大值确定为总的线程数量,即线程池中总的线程数量为50。
之前确定每个等级对应的线程数量,以等级为3级的接收端为例进行介绍,根据以下公式为等级为3级的2个接收端分配等级为3级对应的备选线程数量:
3级对应的备选线程数量=50×(2÷6)=17。本发明实施例中线程数量均为整数。
可选地,将17确定为等级为3级的2个接收端对应的线程数量;或者根据每个等级对应的备选线程数量,确定每个等级对应的线程数量。
根据每个等级对应的备选线程数量,确定每个等级对应的线程数量包括多种实施方式,比如根据每个等级对各个等级的接收端的数量进行调整,或者根据每个等级对应的接收端的数量进行调整。本发明实施例中提供一种可选地实施方式为,根据每个等级对应的备选线程数量,确定每个等级对应的线程数量,具体包括:
对每个等级对应的备选线程数量进行调整,将调整后的每个等级的备选线程数量确定为每个等级的线程数量;
其中,针对每个等级,调整后的每个等级的备选线程数量满足以下条件:
等级越高,调整后的该等级的备选线程数量越少;
所有等级中的每个等级对应的线程数量的总和,等于所有等级中每个等级对应的调整后的备选线程数量的总和。
举个例子,比如接收端共有6个,等级为3级的接收端有3个,等级为4级的接收端有3个,此时根据上述方法为等级为3级的接收端确定了备选线程数量为25,为等级为4级的接收端确定了备选线程数量为25。总的线程数量为50根。对每个等级对应的备选线程数量进行调整,将调整后的每个等级的备选线程数量确定为每个等级的线程数量,等级越高,调整后的该等级的备选线程数量越少;由于3级高于4级,因此调整后的等级为3级的接收端确定了线程数量为20,为等级为4级的接收端确定了线程数量为30。
通过上述方法为每个等级的接收端分配了线程之后,在第一时长后,根据接收端在当前等级判定周期内的等级,通过为接收端分配的接收端在当前等级判定周期内的等级对应的线程数量对应的线程,向接收端发送待转发消息队列中的消息。
可见,在每个等级判定周期内,根据接收端的等级动态的调整线程池中总的线程的数量,并根据接收端的等级,以及每个等级对应的接收端的数量,动态调整每个等级对应的线程的数量,一方面节省了资源,避免设置过多的线程,导致资源浪费,另一方面合理设置总的线程数量,避免过少的线程导致信息转发效率低下,第三方面优化线程的分配,即等级越高的接收端的响应时长越短,此时等级越高的接收端对应的线程数量越少,从而使有限的线程得到更高效的使用,使消息转发效率得到提高。
从上述内容可以看出:本发明实施例中,在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息;确定接收端在第一时长内的至少一个消息的响应时长;其中,一个消息的响应时长为从向接收端发送消息,至接收到接收端反馈的消息对应的响应之间的时长;根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送;若接收端在当前等级判定周期内的等级大于第一等级阈值,则在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息。由于根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,因此,接收端在当前等级判定周期内的等级可表示接收端在当前等级判定周期内的接收消息及返回响应的速度,进而可根据接收端在当前等级判定周期内的接收消息及返回响应的速度,确定是否发送针对接收端的消息,从而实现了根据接收端自身的状态灵活的发送待转发消息队列中的消息的目的;进一步由于若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送,因此,当接收端由于故障或其它原因导致接收消息及返回响应的速度较慢时,可暂时不发送针对该接收端的消息,而先发送其它接收消息及返回响应的速度正常的接收端对应的消息,如此,则避免了由于发送该接收消息及返回响应的速度较慢的接收端对应的消息导致的长时间占用线程,延迟待转发消息队列中的其它消息发送时间的情况。
图4示例性示出了本发明实施例提供的一种消息转发设备的结构示意图。
基于相同构思,本发明实施例提供一种消息转发设备,用于执行上述方法流程,如图4所示,消息转发设备400包括第一发送单元401、确定单元402和第二发送单元403,可选地,还包括获取单元404。
第一发送单元,用于在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息;
确定单元,用于确定接收端在第一时长内的至少一个消息的响应时长;根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;其中,一个消息的响应时长为从向接收端发送消息,至接收到接收端反馈的消息对应的响应之间的时长;
第二发送单元,用于若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送;
若接收端在当前等级判定周期内的等级大于第一等级阈值,则在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息。
可选地,第一发送单元,具体用于:
若确定接收端在上一个等级判定周期的等级不大于第一等级阈值,则调整接收端的等级,以使调整后的接收端的等级大于第一等级阈值,并根据调整后的接收端的等级,向接收端发送待转发消息队列中的消息;
若确定接收端在上一个等级判定周期的等级大于第一等级阈值时,根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息。
可选地,确定单元,具体用于:
根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端中在第一时长内的至少一个消息的响应时长的平均值;
若接收端在第一时长内的至少一个消息的响应时长的平均值大于响应时长阈值,则确定接收端在当前等级判定周期内的等级不大于第一等级阈值;
若接收端在第一时长内的至少一个消息的响应时长的平均值不大于响应时长阈值,则确定接收端在当前等级判定周期内的等级大于第一等级阈值的等级,且根据述接收端在第一时长内的至少一个消息的响应时长的平均值,确定接收端在当前等级判定周期内的等级;
其中,接收端的响应时长的平均值越短,所对应的接收端的等级越高。
可选地,确定单元,具体用于:
根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;
根据确定的接收端在当前等级判定周期内的等级,为接收端分配接收端在当前等级判定周期内的等级对应的线程数量;
其中,接收端在当前等级判定周期的等级越高,为接收端分配的在当前等级判定周期内的等级对应的线程数量越少。
可选地,确定单元,具体用于:
针对接收端所在的系统所包括的多个接收端中的每个接收端,根据获取的每个接收端在第一时长内的至少一个消息的响应时长,确定每个接收端在当前等级判定周期内的等级;
根据多个接收端中每个接收端的等级,对系统的初始总的线程数量在预设的范围内进行调整,得到总的线程数量;其中,预设的范围的两个节点为预设范围的最小值和预设范围的最大值;
根据系统的总的线程数量,为每个等级的接收端分配每个等级对应的线程数量。
可选地,确定单元,具体用于:
根据多个接收端中每个接收端的等级,通过以下公式计算备选总的线程数量:
备选总的线程数量=预设范围的最小值+预设范围的最大值×[(多个接收端中的等级大于第一等级阈值,且小于第二等级阈值的所有接收端的数量)÷多个接收端的总数量];
其中,第二等级阈值高于第一等级阈值;
若确定备选总的线程数量大于预设范围的最大值,则将预设范围的最大值确定为总的线程数量;
若确定备选总的线程数量小于预设范围的最小值,则将预设范围的最小值确定为总的线程数量;
若确定备选总的线程数量不大于预设范围的最大值,且不小于预设范围的最小值,则将备选总的线程数量确定为总的线程数量。
可选地,确定单元,具体用于:
针对每个等级,根据系统的总的线程数量,根据以下公式为该等级的接收端分配该等级对应的备选线程数量:
该等级对应的备选线程数量=总的线程数量×(在多个接收端中该等级对应的所有接收端的数量÷多个接收端的总的数量);
将该等级对应的备选线程数量确定为该等级对应的线程数量;或者根据每个等级对应的备选线程数量,确定每个等级对应的线程数量。
可选地,确定单元,具体用于:
对每个等级对应的备选线程数量进行调整,将调整后的每个等级的备选线程数量确定为每个等级的线程数量;
其中,针对每个等级,调整后的每个等级的备选线程数量满足以下条件:
等级越高,调整后的该等级的备选线程数量越少;
所有等级中的每个等级对应的线程数量的总和,等于所有等级中每个等级对应的调整后的备选线程数量的总和。
可选地,第二发送单元,具体用于:
在第一时长后,根据接收端在当前等级判定周期内的等级,通过为接收端分配的接收端在当前等级判定周期内的等级对应的线程数量对应的线程,向接收端发送待转发消息队列中的消息。
可选地,第二发送单元,具体用于:
在第一时长后根据接收端在当前等级判定周期内的等级向接收端发送待转发消息队列中的消息;
在确定第二时长内未接收到接收端反馈的消息对应的响应时,重发K次待发送消息;其中,K不大于预设重发次数阈值;其中,K越大,第K次重发与第(K-1)次重发之间的时间间隔越大;
在确定接收到接收端反馈的消息对应的响应时,确定消息发送成功,在确定K等于预设重发次数阈值时,确定消息发送失败。
可选地,还包括获取单元,用于:
在确定当前时刻达到当前消息队列获取周期时,从数据库中获取初始消息队列;其中,消息队列获取周期大于等级判定周期;
确定出在当前时刻对应的等级判定周期内,等级不大于第一等级阈值的接收端;
将确定出的等级不大于第一等级阈值的接收端对应的消息,从初始消息队列中移出;
将进行移出操作之后所得到的初始消息队列,确定为新的待转发消息队列。
可选地,接收端在上一个等级判定周期内的等级越高,则接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长越短。
可选地,接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长=L×2L;
其中,L为接收端在上一个等级判定周期内的等级。
从上述内容可以看出:本发明实施例中,在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向接收端发送待转发消息队列中的消息;确定接收端在第一时长内的至少一个消息的响应时长;其中,一个消息的响应时长为从向接收端发送消息,至接收到接收端反馈的消息对应的响应之间的时长;根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级;若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送;若接收端在当前等级判定周期内的等级大于第一等级阈值,则在第一时长后根据接收端在当前等级判定周期内的等级发送待转发消息队列中的消息。由于根据获取的接收端在第一时长内的至少一个消息的响应时长,确定接收端在当前等级判定周期内的等级,因此,接收端在当前等级判定周期内的等级可表示接收端在当前等级判定周期内的接收消息及返回响应的速度,进而可根据接收端在当前等级判定周期内的接收消息及返回响应的速度,确定是否发送针对接收端的消息,从而实现了根据接收端自身的状态灵活的发送待转发消息队列中的消息的目的;进一步由于若接收端在当前等级判定周期内的等级不大于第一等级阈值,则将待转发消息队列中针对接收端的消息暂停发送,因此,当接收端由于故障或其它原因导致接收消息及返回响应的速度较慢时,可暂时不发送针对该接收端的消息,而先发送其它接收消息及返回响应的速度正常的接收端对应的消息,如此,则避免了由于发送该接收消息及返回响应的速度较慢的接收端对应的消息导致的长时间占用线程,延迟待转发消息队列中的其它消息发送时间的情况。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (26)
1.一种消息转发方法,其特征在于,包括:
在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向所述接收端发送待转发消息队列中的消息;
确定所述接收端在所述第一时长内的至少一个消息的响应时长;其中,一个消息的响应时长为从向接收端发送消息,至接收到所述接收端反馈的所述消息对应的响应之间的时长;
根据获取的所述接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述接收端在当前等级判定周期内的等级;
若所述接收端在当前等级判定周期内的等级不大于第一等级阈值,则将所述待转发消息队列中针对所述接收端的消息暂停发送;
若所述接收端在当前等级判定周期内的等级大于所述第一等级阈值,则在所述第一时长后根据所述接收端在当前等级判定周期内的等级发送所述待转发消息队列中的消息。
2.如权利要求1所述的方法,其特征在于,所述在第一时长内根据接收端在上一个等级判定周期的等级,向所述接收端发送待转发消息队列中的消息,具体包括:
若确定所述接收端在所述上一个等级判定周期的等级不大于所述第一等级阈值,则调整所述接收端的等级,以使调整后的所述接收端的等级大于所述第一等级阈值,并根据调整后的所述接收端的等级,向所述接收端发送待转发消息队列中的消息;
若确定所述接收端在所述上一个等级判定周期的等级大于所述第一等级阈值时,根据所述接收端在所述上一个等级判定周期的等级,向所述接收端发送待转发消息队列中的消息。
3.如权利要求2所述的方法,其特征在于,所述根据获取的所述接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述接收端在当前等级判定周期内的等级,具体包括:
根据获取的所述接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述接收端中在所述第一时长内的所述至少一个消息的响应时长的平均值;
若所述接收端在所述第一时长内的所述至少一个消息的响应时长的平均值大于响应时长阈值,则确定所述接收端在当前等级判定周期内的等级不大于所述第一等级阈值;
若所述接收端在所述第一时长内的所述至少一个消息的响应时长的平均值不大于响应时长阈值,则确定所述接收端在所述当前等级判定周期内的等级大于所述第一等级阈值的等级,且根据述接收端在所述第一时长内的所述至少一个消息的响应时长的平均值,确定所述接收端在所述当前等级判定周期内的等级;
其中,所述接收端的响应时长的平均值越短,所对应的所述接收端的等级越高。
4.如权利要求1所述的方法,其特征在于,所述根据获取的所述接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述接收端在当前等级判定周期内的等级,具体包括:
根据获取的所述接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述接收端在当前等级判定周期内的等级;
根据确定的所述接收端在当前等级判定周期内的等级,为所述接收端分配所述接收端在当前等级判定周期内的等级对应的线程数量;
其中,所述接收端在所述当前等级判定周期的等级越高,为所述接收端分配的在当前等级判定周期内的等级对应的线程数量越少。
5.如权利要求1所述的方法,其特征在于,所述根据获取的所述接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述接收端在当前等级判定周期内的等级,具体包括:
针对所述接收端所在的系统所包括的多个接收端中的每个接收端,根据获取的所述每个接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述每个接收端在当前等级判定周期内的等级;
根据所述多个接收端中所述每个接收端的等级,对所述系统的初始总的线程数量在预设的范围内进行调整,得到总的线程数量;其中,所述预设的范围的两个节点为所述预设范围的最小值和所述预设范围的最大值;
根据所述系统的所述总的线程数量,为所述每个等级的接收端分配所述每个等级对应的线程数量。
6.如权利要求5所述的方法,其特征在于,所述根据所述多个接收端中所述每个接收端的等级,对所述系统的初始总的线程数量在预设的范围内进行调整,得到总的线程数量,具体包括:
根据所述多个接收端中每个接收端的等级,通过以下公式计算备选总的线程数量:
备选总的线程数量=所述预设范围的最小值+所述预设范围的最大值×[(所述多个接收端中的等级大于所述第一等级阈值,且小于第二等级阈值的所有接收端的数量)÷所述多个接收端的总数量];
其中,所述第二等级阈值高于所述第一等级阈值;
若确定所述备选总的线程数量大于所述预设范围的最大值,则将所述预设范围的最大值确定为所述总的线程数量;
若确定所述备选总的线程数量小于所述预设范围的最小值,则将所述预设范围的最小值确定为所述总的线程数量;
若确定所述备选总的线程数量不大于所述预设范围的最大值,且不小于所述预设范围的最小值,则将所述备选总的线程数量确定为所述总的线程数量。
7.如权利要求5所述的方法,其特征在于,所述根据所述系统的所述总的线程数量,为所述每个等级的接收端分配所述每个等级对应的线程数量,具体包括:
针对每个等级,根据所述系统的所述总的线程数量,根据以下公式为该等级的接收端分配该等级对应的备选线程数量:
该等级对应的备选线程数量=所述总的线程数量×(在所述多个接收端中该等级对应的所有接收端的数量÷所述多个接收端的总的数量);
将该等级对应的备选线程数量确定为该等级对应的线程数量;或者根据每个等级对应的备选线程数量,确定每个等级对应的线程数量。
8.如权利要求7所述的方法,其特征在于,所述根据每个等级对应的备选线程数量,确定每个等级对应的线程数量,具体包括:
对所述每个等级对应的备选线程数量进行调整,将调整后的所述每个等级的备选线程数量确定为所述每个等级的线程数量;
其中,针对所述每个等级,所述调整后的每个等级的备选线程数量满足以下条件:
等级越高,调整后的该等级的备选线程数量越少;
所有等级中的所述每个等级对应的线程数量的总和,等于所有等级中所述每个等级对应的调整后的备选线程数量的总和。
9.如权利要求4至8任一权利要求所述的方法,其特征在于,所述在所述第一时长后根据所述接收端在当前等级判定周期内的等级发送所述待转发消息队列中的消息,具体包括:
在所述第一时长后,根据所述接收端在当前等级判定周期内的等级,通过为所述接收端分配的所述接收端在当前等级判定周期内的等级对应的线程数量对应的线程,向所述接收端发送所述待转发消息队列中的消息。
10.如权利要求1所述的方法,其特征在于,所述在所述第一时长后根据所述接收端在当前等级判定周期内的等级发送所述待转发消息队列中的消息,具体包括:
在所述第一时长后根据所述接收端在当前等级判定周期内的等级向所述接收端发送所述待转发消息队列中的消息;
在确定第二时长内未接收到所述接收端反馈的所述消息对应的响应时,重发K次所述待发送消息;其中,所述K不大于预设重发次数阈值;其中,K越大,第K次重发与第(K-1)次重发之间的时间间隔越大;
在确定接收到所述接收端反馈的所述消息对应的响应时,确定所述消息发送成功,在确定K等于所述预设重发次数阈值时,确定消息发送失败。
11.如权利要求1所述的方法,其特征在于,还包括:
在确定所述当前时刻达到当前消息队列获取周期时,从数据库中获取初始消息队列;其中,消息队列获取周期大于等级判定周期;
确定出在所述当前时刻对应的等级判定周期内,等级不大于所述第一等级阈值的接收端;
将确定出的所述等级不大于所述第一等级阈值的接收端对应的消息,从所述初始消息队列中移出;
将进行移出操作之后所得到的初始消息队列,确定为新的待转发消息队列。
12.如权利要求1所述的方法,其特征在于,所述接收端在上一个等级判定周期内的等级越高,则所述接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长越短。
13.如权利要求12所述的方法,其特征在于,所述接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长=L×2L;
其中,L为所述接收端在上一个等级判定周期内的等级。
14.一种消息转发设备,其特征在于,包括:
第一发送单元,用于在确定当前时刻到达等级判定周期时,在第一时长内根据接收端在上一个等级判定周期的等级,向所述接收端发送待转发消息队列中的消息;
确定单元,用于确定所述接收端在所述第一时长内的至少一个消息的响应时长;根据获取的所述接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述接收端在当前等级判定周期内的等级;其中,一个消息的响应时长为从向接收端发送消息,至接收到所述接收端反馈的所述消息对应的响应之间的时长;
第二发送单元,用于若所述接收端在当前等级判定周期内的等级不大于第一等级阈值,则将所述待转发消息队列中针对所述接收端的消息暂停发送;
若所述接收端在当前等级判定周期内的等级大于所述第一等级阈值,则在所述第一时长后根据所述接收端在当前等级判定周期内的等级发送所述待转发消息队列中的消息。
15.如权利要求14所述的设备,其特征在于,所述第一发送单元,具体用于:
若确定所述接收端在所述上一个等级判定周期的等级不大于所述第一等级阈值,则调整所述接收端的等级,以使调整后的所述接收端的等级大于所述第一等级阈值,并根据调整后的所述接收端的等级,向所述接收端发送待转发消息队列中的消息;
若确定所述接收端在所述上一个等级判定周期的等级大于所述第一等级阈值时,根据所述接收端在所述上一个等级判定周期的等级,向所述接收端发送待转发消息队列中的消息。
16.如权利要求15所述的设备,其特征在于,所述确定单元,具体用于:
根据获取的所述接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述接收端中在所述第一时长内的所述至少一个消息的响应时长的平均值;
若所述接收端在所述第一时长内的所述至少一个消息的响应时长的平均值大于响应时长阈值,则确定所述接收端在当前等级判定周期内的等级不大于所述第一等级阈值;
若所述接收端在所述第一时长内的所述至少一个消息的响应时长的平均值不大于响应时长阈值,则确定所述接收端在所述当前等级判定周期内的等级大于所述第一等级阈值的等级,且根据述接收端在所述第一时长内的所述至少一个消息的响应时长的平均值,确定所述接收端在所述当前等级判定周期内的等级;
其中,所述接收端的响应时长的平均值越短,所对应的所述接收端的等级越高。
17.如权利要求14所述的设备,其特征在于,所述确定单元,具体用于:
根据获取的所述接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述接收端在当前等级判定周期内的等级;
根据确定的所述接收端在当前等级判定周期内的等级,为所述接收端分配所述接收端在当前等级判定周期内的等级对应的线程数量;
其中,所述接收端在所述当前等级判定周期的等级越高,为所述接收端分配的在当前等级判定周期内的等级对应的线程数量越少。
18.如权利要求14所述的设备,其特征在于,所述确定单元,具体用于:
针对所述接收端所在的系统所包括的多个接收端中的每个接收端,根据获取的所述每个接收端在所述第一时长内的所述至少一个消息的响应时长,确定所述每个接收端在当前等级判定周期内的等级;
根据所述多个接收端中所述每个接收端的等级,对所述系统的初始总的线程数量在预设的范围内进行调整,得到总的线程数量;其中,所述预设的范围的两个节点为所述预设范围的最小值和所述预设范围的最大值;
根据所述系统的所述总的线程数量,为所述每个等级的接收端分配所述每个等级对应的线程数量。
19.如权利要求18所述的设备,其特征在于,所述确定单元,具体用于:
根据所述多个接收端中每个接收端的等级,通过以下公式计算备选总的线程数量:
备选总的线程数量=所述预设范围的最小值+所述预设范围的最大值×[(所述多个接收端中的等级大于所述第一等级阈值,且小于第二等级阈值的所有接收端的数量)÷所述多个接收端的总数量];
其中,所述第二等级阈值高于所述第一等级阈值;
若确定所述备选总的线程数量大于所述预设范围的最大值,则将所述预设范围的最大值确定为所述总的线程数量;
若确定所述备选总的线程数量小于所述预设范围的最小值,则将所述预设范围的最小值确定为所述总的线程数量;
若确定所述备选总的线程数量不大于所述预设范围的最大值,且不小于所述预设范围的最小值,则将所述备选总的线程数量确定为所述总的线程数量。
20.如权利要求18所述的设备,其特征在于,所述确定单元,具体用于:
针对每个等级,根据所述系统的所述总的线程数量,根据以下公式为该等级的接收端分配该等级对应的备选线程数量:
该等级对应的备选线程数量=所述总的线程数量×(在所述多个接收端中该等级对应的所有接收端的数量÷所述多个接收端的总的数量);
将该等级对应的备选线程数量确定为该等级对应的线程数量;或者根据每个等级对应的备选线程数量,确定每个等级对应的线程数量。
21.如权利要求20所述的设备,其特征在于,所述确定单元,具体用于:
对所述每个等级对应的备选线程数量进行调整,将调整后的所述每个等级的备选线程数量确定为所述每个等级的线程数量;
其中,针对所述每个等级,所述调整后的每个等级的备选线程数量满足以下条件:
等级越高,调整后的该等级的备选线程数量越少;
所有等级中的所述每个等级对应的线程数量的总和,等于所有等级中所述每个等级对应的调整后的备选线程数量的总和。
22.如权利要求17至21任一权利要求所述的设备,其特征在于,所述第二发送单元,具体用于:
在所述第一时长后,根据所述接收端在当前等级判定周期内的等级,通过为所述接收端分配的所述接收端在当前等级判定周期内的等级对应的线程数量对应的线程,向所述接收端发送所述待转发消息队列中的消息。
23.如权利要求14所述的设备,其特征在于,所述第二发送单元,具体用于:
在所述第一时长后根据所述接收端在当前等级判定周期内的等级向所述接收端发送所述待转发消息队列中的消息;
在确定第二时长内未接收到所述接收端反馈的所述消息对应的响应时,重发K次所述待发送消息;其中,所述K不大于预设重发次数阈值;其中,K越大,第K次重发与第(K-1)次重发之间的时间间隔越大;
在确定接收到所述接收端反馈的所述消息对应的响应时,确定所述消息发送成功,在确定K等于所述预设重发次数阈值时,确定消息发送失败。
24.如权利要求14所述的设备,其特征在于,还包括获取单元,用于:
在确定所述当前时刻达到当前消息队列获取周期时,从数据库中获取初始消息队列;其中,消息队列获取周期大于等级判定周期;
确定出在所述当前时刻对应的等级判定周期内,等级不大于所述第一等级阈值的接收端;
将确定出的所述等级不大于所述第一等级阈值的接收端对应的消息,从所述初始消息队列中移出;
将进行移出操作之后所得到的初始消息队列,确定为新的待转发消息队列。
25.如权利要求14所述的设备,其特征在于,所述接收端在上一个等级判定周期内的等级越高,则所述接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长越短。
26.如权利要求25所述的设备,其特征在于,所述接收端的上一个等级判定周期的开始时刻与当前等级判定周期的开始时刻之间的时长=L×2L;
其中,L为所述接收端在上一个等级判定周期内的等级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510987875.XA CN105933369B (zh) | 2015-12-24 | 2015-12-24 | 一种消息转发方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510987875.XA CN105933369B (zh) | 2015-12-24 | 2015-12-24 | 一种消息转发方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105933369A true CN105933369A (zh) | 2016-09-07 |
CN105933369B CN105933369B (zh) | 2019-05-10 |
Family
ID=56839903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510987875.XA Active CN105933369B (zh) | 2015-12-24 | 2015-12-24 | 一种消息转发方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105933369B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919461A (zh) * | 2017-03-10 | 2017-07-04 | 广东欧珀移动通信有限公司 | 广播接收者队列调整方法、装置和终端设备 |
CN107241442A (zh) * | 2017-07-28 | 2017-10-10 | 中南大学 | 一种基于预测的键值存储数据库副本选择方法 |
CN107749861A (zh) * | 2017-11-16 | 2018-03-02 | 平安科技(深圳)有限公司 | 信息推送方法、装置、终端设备及存储介质 |
CN108076085A (zh) * | 2016-11-10 | 2018-05-25 | 北京国双科技有限公司 | 一种数据传输的方法及数据传输装置 |
CN108228363A (zh) * | 2017-12-22 | 2018-06-29 | 中国银联股份有限公司 | 一种消息发送方法及装置 |
CN108696451A (zh) * | 2017-04-06 | 2018-10-23 | 上海诺基亚贝尔股份有限公司 | 一种用于控制流量的方法和装置 |
CN110349029A (zh) * | 2019-07-17 | 2019-10-18 | 中国银行股份有限公司 | 一种基于区块链的交易一致性的处理方法、设备以及系统 |
WO2020087476A1 (zh) * | 2018-11-01 | 2020-05-07 | Oppo广东移动通信有限公司 | 传输系统信息的方法和设备 |
CN112148502A (zh) * | 2020-09-11 | 2020-12-29 | 浙江每日互动网络科技股份有限公司 | 消息分发方法、电子设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510847A (zh) * | 2009-02-24 | 2009-08-19 | 华为技术有限公司 | 链路速率调整方法和装置 |
US20150046571A1 (en) * | 2012-03-01 | 2015-02-12 | Motorola Mobility Llc | Managing adaptive streaming of data via a communication connection |
CN104506416A (zh) * | 2014-12-17 | 2015-04-08 | 东软集团股份有限公司 | 一种实现消息稳定推送的方法、装置及系统 |
CN104836742A (zh) * | 2015-05-07 | 2015-08-12 | 盐城工学院 | 一种m2m终端及其tcp传输拥塞控制方法及系统 |
-
2015
- 2015-12-24 CN CN201510987875.XA patent/CN105933369B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510847A (zh) * | 2009-02-24 | 2009-08-19 | 华为技术有限公司 | 链路速率调整方法和装置 |
US20150046571A1 (en) * | 2012-03-01 | 2015-02-12 | Motorola Mobility Llc | Managing adaptive streaming of data via a communication connection |
CN104506416A (zh) * | 2014-12-17 | 2015-04-08 | 东软集团股份有限公司 | 一种实现消息稳定推送的方法、装置及系统 |
CN104836742A (zh) * | 2015-05-07 | 2015-08-12 | 盐城工学院 | 一种m2m终端及其tcp传输拥塞控制方法及系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108076085A (zh) * | 2016-11-10 | 2018-05-25 | 北京国双科技有限公司 | 一种数据传输的方法及数据传输装置 |
CN106919461A (zh) * | 2017-03-10 | 2017-07-04 | 广东欧珀移动通信有限公司 | 广播接收者队列调整方法、装置和终端设备 |
CN106919461B (zh) * | 2017-03-10 | 2022-07-15 | Oppo广东移动通信有限公司 | 广播接收者队列调整方法、装置和终端设备 |
CN108696451B (zh) * | 2017-04-06 | 2021-09-14 | 上海诺基亚贝尔股份有限公司 | 一种用于控制流量的方法和装置 |
CN108696451A (zh) * | 2017-04-06 | 2018-10-23 | 上海诺基亚贝尔股份有限公司 | 一种用于控制流量的方法和装置 |
CN107241442A (zh) * | 2017-07-28 | 2017-10-10 | 中南大学 | 一种基于预测的键值存储数据库副本选择方法 |
CN107241442B (zh) * | 2017-07-28 | 2018-02-09 | 中南大学 | 一种基于预测的键值存储数据库副本选择方法 |
CN107749861A (zh) * | 2017-11-16 | 2018-03-02 | 平安科技(深圳)有限公司 | 信息推送方法、装置、终端设备及存储介质 |
CN108228363A (zh) * | 2017-12-22 | 2018-06-29 | 中国银联股份有限公司 | 一种消息发送方法及装置 |
WO2020087476A1 (zh) * | 2018-11-01 | 2020-05-07 | Oppo广东移动通信有限公司 | 传输系统信息的方法和设备 |
CN110349029A (zh) * | 2019-07-17 | 2019-10-18 | 中国银行股份有限公司 | 一种基于区块链的交易一致性的处理方法、设备以及系统 |
CN110349029B (zh) * | 2019-07-17 | 2022-04-15 | 中国银行股份有限公司 | 一种基于区块链的交易一致性的处理方法、设备以及系统 |
CN112148502A (zh) * | 2020-09-11 | 2020-12-29 | 浙江每日互动网络科技股份有限公司 | 消息分发方法、电子设备和介质 |
CN112148502B (zh) * | 2020-09-11 | 2024-03-22 | 每日互动股份有限公司 | 消息分发方法、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105933369B (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105933369A (zh) | 一种消息转发方法及设备 | |
CN110224922B (zh) | 一种基于RabbitMQ的异步消息重试方法、系统及系统构建方法 | |
CN103905300B (zh) | 一种数据报文发送方法、设备及系统 | |
CN103780363B (zh) | 消息再传输装置及方法 | |
CN103220206B (zh) | 一种消息发送方法、装置和一种消息接收方法、装置 | |
CN104025690A (zh) | 一种调整发送时间的方法及用户设备 | |
CN110460533B (zh) | 基于rdma的数据传输方法及装置 | |
CN104780028A (zh) | 一种实现tcp数据报文重传的方法及设备 | |
CN106034129A (zh) | 一种用于游戏同步的fbsg方法 | |
CN112929455B (zh) | 基于udp的数据传输方法、装置、设备和可读存储介质 | |
CN106161190A (zh) | 点对点即时通信方法 | |
CN111008249B (zh) | 平行链区块同步方法、设备和存储介质 | |
CN108900506A (zh) | 消息推送方法、推送服务器和传输控制协议服务器 | |
CN105792359B (zh) | 资源分配方法、数据映射方法及装置 | |
CN104298565A (zh) | 一种初始化端口的方法及装置 | |
CN109716699A (zh) | 用于混合自动重复请求过程的方法、网络设备和终端设备 | |
CN103796179B (zh) | 消息发送方法及装置 | |
CN110266446B (zh) | 一种基于sack模式调整乱序时长的方法和装置 | |
CN109191135A (zh) | 基于区块链的交易重试方法、装置、设备及可读存储介质 | |
CN110808917B (zh) | 多链路聚合数据重传方法及发送设备 | |
CN108429703A (zh) | Dhcp客户端上线方法及装置 | |
CN103220716A (zh) | 上行无线公共资源重配置方法及装置 | |
CN109905209B (zh) | 一种设置网络乱序值的方法和装置 | |
CN105637790B (zh) | 一种重传数据的方法及装置 | |
CN109361620A (zh) | 一种数据发送的方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |