消息调度控制方法及其相应的装置、设备、介质制造方法及图纸

技术编号:30964437 阅读:21 留言:0更新日期:2021-11-25 20:31
本申请公开一种消息调度控制方法及其相应的装置、设备、介质,该方法包括:持续获取消息队列的下游服务的每秒请求总量及其每请求的平均执行时长;监听每秒请求总量超过下游服务的每秒请求阈值时,控制当前消息线程处于缓释状态,且使当前消息线程的释放时长根据每秒请求总量的增减状态的维持而相应延长或缩短;统计当前消息线程相对应的前方阻塞量,根据前方阻塞量与所述平均执行时长的乘积计算当前消息线程对应的预期排队时长;监听当当前消息线程的预期排队时长超过预设延迟阈值时,控制当前消息线程处于活跃状态,将当前消息线程交付异步执行。本申请实现当消息线程消费过快时自动降低消费速率保护下游服务,当消费太慢时自动提升消费速度。自动提升消费速度。自动提升消费速度。

【技术实现步骤摘要】
消息调度控制方法及其相应的装置、设备、介质


[0001]本申请实施例涉及互联网任务调度技术,尤其涉及一种消息调度控制方法及其相应的装置、设备、介质。

技术介绍

[0002]互联网应用中经常使用消息队列作为中间件,一般用来实现服务解耦,流量削峰和异步化处理等功能。但是实际应用中,当生产大量时消费端经常遇到两方面的问题:一是消费太快,导致的结果是给下游服务造成巨大请求的压力,甚至压垮下游服务。下游服务也包括系统内部使用的数据库、文件系统等等。二是消费太慢,消息出现严重堆积,消息得不到及时消费,对业务的实时性造成影响。
[0003]当前的业界主要的消息中间件,其消费端的配置参数都是静态配置的,消费者启动后不能进行动态变更,更无法随着消息量变化按照系统管理者的意图实现动态控制。因此,目前常见的消息队列的消费端没有动态控制消息消费速度的技术,以至于当出现消息堆积时,只能修改配置参数重启服务,或者通过节点扩缩容方式去解决消费太快或太慢的问题,这将导致部署成本的增加。
[0004]因此,根据本申请人的理解,针对消息队列的任务调度机制,影响到互联网后台的响应效率及部署成本,理想的状态是实现消息队列根据下游服务的负载情况进行均衡调度,期望可以由此实现消费的动态控制,尽可能快速便捷地解决消费太快或者消费太慢带来的系统问题。

技术实现思路

[0005]本申请的目的是针对现有技术中存在的至少部分不足或为满足现有技术的至少部分需求而提供一种消息调度控制方法及其相应的装置、计算机设备及存储介质。
[0006]为解决上述技术问题,本申请采用的一个技术方案是:
[0007]本申请提供一种消息调度控制方法,包括如下步骤:
[0008]持续获取每秒请求总量及其每请求的平均执行时长,所述每秒请求总量通过持续统计从消息队列调度给下游服务的消息线程的总量而获得,所述平均执行时长为根据每秒请求总量计算出的每请求的平均值;
[0009]监听每秒请求总量的变动,当每秒请求总量超过所述下游服务的每秒请求阈值时,控制当前消息线程处于延缓执行的缓释状态,且使当前消息线程的释放时长根据每秒请求总量的增减状态的维持而相应延长或缩短;
[0010]统计当前消息线程相对应的前方阻塞量,根据前方阻塞量与所述平均执行时长的乘积计算当前消息线程对应的预期排队时长;
[0011]监听预期排队时长的变动,当当前消息线程的预期排队时长超过预设延迟阈值时,控制当前消息线程处于等待同步执行的活跃状态,将其释放时长归零,且,在当前消息线程连续多次处于活跃状态时,将当前消息线程交付异步执行。
[0012]较佳的实施例中,所述消息队列中的每个所述的消息线程均作为所述的当前消息线程独立执行本方法的各个步骤。
[0013]具体化的实施例中,监听每秒请求总量的变动,当每秒请求总量超过所述下游服务的每秒请求阈值时,控制当前消息线程处于延缓执行的缓释状态,且使当前消息线程的释放时长根据每秒请求总量的增减状态的维持而相应延长或缩短,包括如下步骤:
[0014]监听获取每次统计产生的每秒请求总量,比较每秒请求总量与所述下游服务的每秒请求阈值之间的差值;
[0015]当每秒请求总量超过所述每秒请求阈值时,将当前消息线程的释放时长置为极限执行时长与所述平均执行时长的差值而使当前消息线程进入缓释状态,且使当前消息线程的释放时长根据每秒请求总量的增长状态的维持而相应延长,所述极限执行时长为根据每秒请求阈值计算出的每请求的平均值;
[0016]当每秒请求总量低于所述每秒请求阈值的一定范围且所述释放时长未归零时,使当前消息线程的释放时长根据每秒请求总量的减少状态的维持而相应缩短而使当前消息线程持续处于缓释状态。
[0017]进一步的实施例中,当每秒请求总量超过所述每秒请求阈值时执行的步骤中,包括如下步骤:
[0018]当每秒请求总量首次超过所述每秒请求阈值时,将预先被初始化为零值的所述释放时长置为极限执行时长与所述平均执行时长的差值而使当前消息线程进入缓释状态;
[0019]当每秒请求总量连续超过所述每秒请求阈值时,将所述释放时长累加预设定值实现微调,以使当前消息线程的释放时长根据每秒请求总量的增长状态的维持而相应延长。
[0020]进一步的实施例中,当每秒请求总量低于所述每秒请求阈值的一定范围且所述释放时长未归零时执行的步骤中,将所述释放时长累减所述预设定值实现微调,以使当前消息线程的释放时长根据每秒请求总量的减少状态的维持而相应缩短。
[0021]具体化的实施例中,监听预期排队时长的变动,当当前消息线程的预期排队时长超过预设延迟阈值时,控制当前消息线程处于等待同步执行的活跃状态,将其释放时长归零,且,在当前消息线程连续多次处于活跃状态时,将当前消息线程交付异步执行,包括如下步骤:
[0022]监听获取每次计算所得的预期排队时长;
[0023]判断所述预期排队时长是否超过预设延迟阈值,当判定为超过时,将当前消息线程的释放时长归零而使当前消息线程处于等待同步执行的活跃状态;
[0024]判断所述预期排队时长是否连续多次超过所述预设延迟阈值,若是,将当前消息线程交付用于异步消费消息线程的任务线程池以实现异步执行。
[0025]较佳的实施例中,本方法还包括如下步骤:
[0026]监测所述任务线程池中的消息线程总量;
[0027]当任务线程池中的消息线程总量大于预设上限后,阻塞向其中添加所述的消息线程;
[0028]当持续多次任务线程池中的消息线程总量归零且所述每秒请求总量低于所述每秒请求阈值时,销毁该任务线程池。
[0029]较佳的实施例中,持续统计从消息队列调度给下游服务的消息线程总量获得每秒
请求总量,计算每个消息线程的平均执行时长,包括如下步骤:
[0030]每秒定期统计从消息队列调度出列以传递给下游服务而被消费的消息线程的总量,作为所述的每秒请求总量;
[0031]计算每秒请求总量中每个请求在一秒内平均占用的时隙,将该时隙确定为所述的平均执行时长。
[0032]为解决上述技术问题,本申请采用的另一技术方案是:
[0033]本申请提供一种消息调度控制装置,其包括数据获取模块、缓释控制模块、阻塞控制模块以及活跃控制模块,其中,所述数据获取模块,用于持续获取每秒请求总量及其每请求的平均执行时长,所述每秒请求总量通过持续统计从消息队列调度给下游服务的消息线程的总量而获得,所述平均执行时长为根据每秒请求总量计算出的每请求的平均值;所述缓释控制模块,用于监听每秒请求总量的变动,当每秒请求总量超过所述下游服务的每秒请求阈值时,控制当前消息线程处于延缓执行的缓释状态,且使当前消息线程的释放时长根据每秒请求总量的增减状态的维持而相应延长或缩短;所述阻塞统计模块,用于统计当前消息线程相对应的前方阻塞量,根据前方阻塞量与所述平均执行时长的乘积计算当前消息线程对应的预期排队时长;所述活跃控制模块,用于监听预期排队时长本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息调度控制方法,其特征在于,包括如下步骤:持续获取每秒请求总量及其每请求的平均执行时长,所述每秒请求总量通过持续统计从消息队列调度给下游服务的消息线程的总量而获得,所述平均执行时长为根据每秒请求总量计算出的每请求的平均值;监听每秒请求总量的变动,当每秒请求总量超过所述下游服务的每秒请求阈值时,控制当前消息线程处于延缓执行的缓释状态,且使当前消息线程的释放时长根据每秒请求总量的增减状态的维持而相应延长或缩短;统计当前消息线程相对应的前方阻塞量,根据前方阻塞量与所述平均执行时长的乘积计算当前消息线程对应的预期排队时长;监听预期排队时长的变动,当当前消息线程的预期排队时长超过预设延迟阈值时,控制当前消息线程处于等待同步执行的活跃状态,将其释放时长归零,且,在当前消息线程连续多次处于活跃状态时,将当前消息线程交付异步执行。2.根据权利要求1所述的消息调度控制方法,其特征在于,所述消息队列中的每个所述的消息线程均作为所述的当前消息线程独立执行本方法的各个步骤。3.根据权利要求1所述的消息调度控制方法,其特征在于,监听每秒请求总量的变动,当每秒请求总量超过所述下游服务的每秒请求阈值时,控制当前消息线程处于延缓执行的缓释状态,且使当前消息线程的释放时长根据每秒请求总量的增减状态的维持而相应延长或缩短,包括如下步骤:监听获取每次统计产生的每秒请求总量,比较每秒请求总量与所述下游服务的每秒请求阈值之间的差值;当每秒请求总量超过所述每秒请求阈值时,将当前消息线程的释放时长置为极限执行时长与所述平均执行时长的差值而使当前消息线程进入缓释状态,且使当前消息线程的释放时长根据每秒请求总量的增长状态的维持而相应延长,所述极限执行时长为根据每秒请求阈值计算出的每请求的平均值;当每秒请求总量低于所述每秒请求阈值的一定范围且所述释放时长未归零时,使当前消息线程的释放时长根据每秒请求总量的减少状态的维持而相应缩短而使当前消息线程持续处于缓释状态。4.根据权利要求3所述的消息调度控制方法,其特征在于,当每秒请求总量超过所述每秒请求阈值时执行的步骤中,包括如下步骤:当每秒请求总量首次超过所述每秒请求阈值时,将预先被初始化为零值的所述释放时长置为极限执行时长与所述平均执行时长的差值而使当前消息线程进入缓释状态;当每秒请求总量连续超过所述每秒请求阈值时,将所述释放时长累加预设定值实现微调,以使当前消息线程的释放时长根据每秒请求总量的增长状态的维持而相应延长。5.根据权利要求4所述的消息调度控制方法,其特征在于,当每秒请求总量低于所述每秒请求阈值的一定范围且所述释放时长未归零时执行的步骤中,...

【专利技术属性】
技术研发人员:黄育才
申请(专利权)人:广州华多网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1