本发明涉及计算机技术领域,具体提供一种基于消息队列的弹性伸缩活动优先级管理系统及方法。
背景技术:
随着互联网行业的发展,面对厂商不同业务场景下对计算资源的动态需求,弹性伸缩成为解决动态分配计算能力的方法之一,通过对一个弹性伸缩组中的云服务器实例资源的增加和减少,即可完成资源的动态分配。伸缩活动分为初始化活动,期望实例数维持活动,最大最小实例数维持活动,策略执行活动,健康检查活动和用户自定义的策略活动,这些活动是一个弹性伸缩组进行伸动作或缩动作的最小单位,然而目前缺少一种对多种活动同时触发的有效管理手段,若多种伸缩活动同时触发,只能保证其中的一个活动执行,其他活动会因为取不到锁等因素导致阻塞。因此,需要一种根据伸缩活动优先级对伸缩活动触发进行管理的方法,将需要执行的伸缩活动放进优先级消息队列,再根据消息的优先级逐个取出,保证伸缩活动能够正常执行。
技术实现要素:
本发明的技术任务是针对上述存在的问题,提供一种能保证弹性伸缩活动的执行顺序,避免同一时间多个不同活动同时触发导致的部分活动被阻塞的情况发生的基于消息队列的弹性伸缩活动优先级管理系统。
本发明进一步的技术任务是提供一种基于消息队列的弹性伸缩活动优先级管理方法。
为实现上述目的,本发明提供了如下技术方案:
一种基于消息队列的弹性伸缩活动优先级管理系统,包括伸缩组实例管理模块、定时任务管理模块、rabbitmq消息队列、消息队列管理模块和伸缩活动执行模块;
伸缩组实例管理模块用于在创建伸缩组时,根据伸缩组id创建唯一的rabbitmq优先级队列;
定时任务管理模块用于在伸缩组创建伸缩活动后,与定时任务平台进行对接交互,创建与伸缩活动相对应的定时任务;
rabbitmq消息队列用于存放一个伸缩组的所有要触发的伸缩活动,且rabbitmq消息队列自发对触发的伸缩活动消息进行排序;
消息队列管理模块对排好序的伸缩活动进行管理;
伸缩活动执行模块执行从rabbitmq消息队列排序好并将要出rabbitmq消息队列的伸缩活动,且完成与定时任务平台的交互。
作为优选,伸缩组实例管理模块在创建唯一的rabbitmq优先级队列时,同时创建相应的监听器。
作为优选,所述监听器监听rabbitmq消息队列,在监听到rabbitmq消息队列有活动时,取出伸缩活动消息,根据所包含消息执行伸缩活动操作。
作为优选,定时任务管理模块用于在伸缩组创建伸缩活动后,与定时任务平台进行对接交互,触发伸缩活动时,将伸缩活动相关信息发送至rabbitmq消息队列,伸缩活动相关信息包括伸缩活动类型、伸缩活动id、伸缩活动优先级及伸缩组信息。
作为优选,rabbitmq消息队列对带有优先级属性的伸缩活动进行排序,将高优先级伸缩活动信息放置于rabbitmq消息队列前端。
作为优选,对于不同的伸缩活动,每一种伸缩活动自身带有优先级属性。
一种基于消息队列的弹性伸缩活动优先级管理方法,在创建伸缩组时,为每一个新创建的伸缩组创建对应的rabbitmq消息队列,并为该伸缩组创建用于监听消息队列的监听器;伸缩组定时任务触发时,handler侧根据伸缩活动类型定义每个伸缩活动的优先级,将伸缩活动相关信息放入rabbitmq消息队列中,当监听器监听到rabbitmq消息队列中有消息时,取出消息,并根据消息中的伸缩组信息执行伸缩活动,若执行成功,则开启消息确认,若执行失败,将消息放入消息队列中,再次执行。
该基于消息队列的弹性伸缩活动优先级管理方法在创建伸缩组时,通过设置rabbitmq的队列名称、routingkey、交换机等属性,可为每一个弹性伸缩组创立一个唯一的rabbitmq消息队列。通过将不同优先级的消息入队即可完成按照优先级顺序将消息从队列中取出,伸缩活动可根据活动本身优先级,自发组织活动,避免出现因多种类型活动同时发生导致的阻塞现象。
作为优选,为每一个新创建的伸缩组创建对应的rabbitmq消息队列时,rabbitmq消息队列名称设置与伸缩组id相同,完成伸缩组与rabbitmq消息队列的绑定。
作为优选,handler侧根据伸缩活动类型定义每个伸缩活动的优先级时,用户自定活动优先级高,系统触发活动优先级低。
作为优选,将伸缩活动相关信息放入rabbitmq消息队列中时,相关信息包括伸缩活动的id、伸缩活动的类型、伸缩活动的优先级及伸缩活动的伸缩组信息。
与现有技术相比,本发明的基于消息队列的弹性伸缩活动优先级管理方法具有以下突出的有益效果:所述基于消息队列的弹性伸缩活动优先级管理方法能够保证弹性伸缩活动的执行顺序,避免同一时间多个不同活动同时触发导致的部分活动被阻塞的情况发生,具有良好的推广应用价值。
附图说明
图1是本发明所述基于消息队列的弹性伸缩活动优先级管理方法的流程图。
具体实施方式
下面将结合附图实施例,对本发明的基于消息队列的弹性伸缩活动优先级管理系统及方法作进一步详细说明。
实施例
本发明的基于消息队列的弹性伸缩活动优先级管理系统包括伸缩组实例管理模块、定时任务管理模块、rabbitmq消息队列、消息队列管理模块和伸缩活动执行模块。
伸缩组实例管理模块用于在创建伸缩组时,根据伸缩组id创建唯一的rabbitmq优先级队列。伸缩组实例管理模块在创建唯一的rabbitmq优先级队列时,同时创建相应的监听器。监听器监听rabbitmq消息队列,在监听到rabbitmq消息队列有活动时,取出伸缩活动消息,根据所包含消息执行伸缩活动操作。
定时任务管理模块用于在伸缩组创建伸缩活动后,与定时任务平台进行对接交互,创建与伸缩活动相对应的定时任务。
定时任务管理模块用于在伸缩组创建伸缩活动后,与定时任务平台进行对接交互,触发伸缩活动时,将伸缩活动相关信息发送至rabbitmq消息队列,伸缩活动相关信息包括伸缩活动类型、伸缩活动id、伸缩活动优先级及伸缩组信息。
rabbitmq消息队列用于存放一个伸缩组的所有要触发的伸缩活动,且rabbitmq消息队列自发对触发的伸缩活动消息进行排序。
rabbitmq消息队列对带有优先级属性的伸缩活动进行排序,将高优先级伸缩活动信息放置于rabbitmq消息队列前端。其中对于不同的伸缩活动,每一种伸缩活动自身带有优先级属性。
消息队列管理模块对排好序的伸缩活动进行管理。
伸缩活动执行模块执行从rabbitmq消息队列排序好并将要出rabbitmq消息队列的伸缩活动,且完成与定时任务平台的交互。
如图1所示,本发明的基于消息队列的弹性伸缩活动优先级管理方法,在创建伸缩组时,为每一个新创建的伸缩组创建对应的rabbitmq消息队列,为每一个新创建的伸缩组创建对应的rabbitmq消息队列时,rabbitmq消息队列名称设置与伸缩组id相同,完成伸缩组与rabbitmq消息队列的绑定。通过伸缩组id或名称等唯一属性,为该伸缩组创建用于监听消息队列的监听器,完成监听器与消息队列的绑定。
当伸缩组定时任务触发时,handler侧根据伸缩活动类型定义每个伸缩活动的优先级,用户自定活动优先级高,系统触发活动优先级低。将伸缩活动的id、伸缩活动的类型、伸缩活动的优先级及伸缩活动的伸缩组信息放入rabbitmq消息队列中,至此完成消息的入队,若同时又多个不同优先级的消息入队,则队列将根据优先级将消息排列好顺序。当监听器监听到rabbitmq消息队列中有消息时,取出消息,并根据消息中的伸缩活动id、伸缩组信息执行伸缩活动,若执行成功,则开启消息确认,若执行失败,将消息放入消息队列中,再次执行。
该基于消息队列的弹性伸缩活动优先级管理方法在创建伸缩组时,通过设置rabbitmq的队列名称、routingkey、交换机等属性,可为每一个弹性伸缩组创立一个唯一的rabbitmq消息队列。通过将不同优先级的消息入队即可完成按照优先级顺序将消息从队列中取出,伸缩活动可根据活动本身优先级,自发组织活动,避免出现因多种类型活动同时发生导致的阻塞现象。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
1.一种基于消息队列的弹性伸缩活动优先级管理系统,其特征在于:包括伸缩组实例管理模块、定时任务管理模块、rabbitmq消息队列、消息队列管理模块和伸缩活动执行模块;
伸缩组实例管理模块用于在创建伸缩组时,根据伸缩组id创建唯一的rabbitmq优先级队列;
定时任务管理模块用于在伸缩组创建伸缩活动后,与定时任务平台进行对接交互,创建与伸缩活动相对应的定时任务;
rabbitmq消息队列用于存放一个伸缩组的所有要触发的伸缩活动,且rabbitmq消息队列自发对触发的伸缩活动消息进行排序;
消息队列管理模块对排好序的伸缩活动进行管理;
伸缩活动执行模块执行从rabbitmq消息队列排序好并将要出rabbitmq消息队列的伸缩活动,且完成与定时任务平台的交互。
2.根据权利要求1所述的基于消息队列的弹性伸缩活动优先级管理系统,其特征在于:伸缩组实例管理模块在创建唯一的rabbitmq优先级队列时,同时创建相应的监听器。
3.根据权利要求2所述的基于消息队列的弹性伸缩活动优先级管理系统,其特征在于:所述监听器监听rabbitmq消息队列,在监听到rabbitmq消息队列有活动时,取出伸缩活动消息,根据所包含消息执行伸缩活动操作。
4.根据权利要求3所述的基于消息队列的弹性伸缩活动优先级管理系统,其特征在于:定时任务管理模块用于在伸缩组创建伸缩活动后,与定时任务平台进行对接交互,触发伸缩活动时,将伸缩活动相关信息发送至rabbitmq消息队列,伸缩活动相关信息包括伸缩活动类型、伸缩活动id、伸缩活动优先级及伸缩组信息。
5.根据权利要求4所述的基于消息队列的弹性伸缩活动优先级管理系统,其特征在于:rabbitmq消息队列对带有优先级属性的伸缩活动进行排序,将高优先级伸缩活动信息放置于rabbitmq消息队列前端。
6.根据权利要求5所述的基于消息队列的弹性伸缩活动优先级管理系统,其特征在于:对于不同的伸缩活动,每一种伸缩活动自身带有优先级属性。
7.一种基于消息队列的弹性伸缩活动优先级管理方法,其特征在于:在创建伸缩组时,为每一个新创建的伸缩组创建对应的rabbitmq消息队列,并为该伸缩组创建用于监听消息队列的监听器;伸缩组定时任务触发时,handler侧根据伸缩活动类型定义每个伸缩活动的优先级,将伸缩活动相关信息放入rabbitmq消息队列中,当监听器监听到rabbitmq消息队列中有消息时,取出消息,并根据消息中的伸缩组信息执行伸缩活动,若执行成功,则开启消息确认,若执行失败,将消息放入消息队列中,再次执行。
8.根据权利要求7所述的基于消息队列的弹性伸缩活动优先级管理方法,其特征在于:为每一个新创建的伸缩组创建对应的rabbitmq消息队列时,rabbitmq消息队列名称设置与伸缩组id相同,完成伸缩组与rabbitmq消息队列的绑定。
9.根据权利要求8所述的基于消息队列的弹性伸缩活动优先级管理方法,其特征在于:handler侧根据伸缩活动类型定义每个伸缩活动的优先级时,用户自定活动优先级高,系统触发活动优先级低。
10.根据权利要求9所述的基于消息队列的弹性伸缩活动优先级管理方法,其特征在于:将伸缩活动相关信息放入rabbitmq消息队列中时,相关信息包括伸缩活动的id、伸缩活动的类型、伸缩活动的优先级及伸缩活动的伸缩组信息。
技术总结