[发明专利]一种基于镜像队列的主队列负载平衡方法有效
申请号: | 202010784404.X | 申请日: | 2020-08-06 |
公开(公告)号: | CN111897656B | 公开(公告)日: | 2022-08-16 |
发明(设计)人: | 马博;瞿洪桂;张男男 | 申请(专利权)人: | 北京中电兴发科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/54 |
代理公司: | 北京市盛峰律师事务所 11337 | 代理人: | 于国强 |
地址: | 100095 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 队列 主队 负载 平衡 方法 | ||
一种基于镜像队列的主队列负载平衡方法,设置了动态平衡主队列的机制,通过自动获取节点中的主队列数量,并根据设定的规则主动迁移主队列;本发明能够自主发现节点中主队列的分布数量,并将主队列分布数量较多的节点中的主队列平滑迁移至主队列分布数量较少的节点中,可以完全覆盖所有主队列负载不均衡的场景;本发明的主队列平衡方法适用于节点宕机恢复、新节点加入和部分消息队列使用完释放后造成的压力不均衡现象,可以自动均衡消息队列集群所在节点上的主队列分布。
技术领域
本发明涉及数据处理领域,尤其涉及一种基于镜像队列的主队列负载平衡方法。
背景技术
在目前的RabbitMQ集群的镜像队列模式下,每一个消息队列由一个主队列和若干个从队列构成;正常情况下,由主队列提供消息服务,从队列备份消息,如果有一个消息队列的主队列存在异常,消息队列集群会从其他节点中选举出新的主队列;初始情况下,一个节点有较少数量的主队列和相对较多的从队列,如果有新的消息队列加入集群,则该消息队列的主队列自动加入到当前主队列最少的节点上,其从队列加入到其他节点上。
但是上述镜像队列模式仍存在以下问题,当有节点存在异常时,例如宕机或节点重启的场景下,该节点的主队列自动分散至正常的节点上,但该节点恢复至正常状态后,原有节点的主队列仍旧分布于当前的节点上,不会自动迁移回复至原有节点;另外,在扩容状态下,有新的节点加入消息队列集群时,原有节点上主队列数量较多的节点上的消息队列并不能分散到新的节点上。这会使的在较长时间内并不能分摊运行压力。
现有技术中的镜像队列模式下,这能自动均衡新生成的主队列,却不能动态平衡已有旧的主队列,所以并不能分摊原有节点的压力。
发明内容
本发明的目的在于提供一种基于镜像队列的主队列负载平衡方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于镜像队列的主队列负载平衡方法,包括以下步骤:
S1、消息队列中设有主队列和从队列,所述消息队列均存放于节点中,存放有消息队列的节点构成消息队列集群;
S2、获取所述消息队列集群中的节点信息,通过命令获取所述消息队列中的节点构成,并统计出每个所述节点中存放的所述主队列的数量;
S3、根据步骤S2中统计的所述节点的总数以及所述主队列的总数,计算出所述节点中期望存放的所述主队列的最大数量;
S4、从步骤S2中选出存放主队列数量最大的节点和存放主队列数量最小的节点,将所述存放主队列数量最大的节点中的主队列的数量与步骤S3中的计算出期望存放的所述主队列的最大数量进行对比;当所述节点中的主队列的数量大于期望存放的所述主队列的最大数量时,从所述存放主队列数量最大的节点中随机选择一个所述主队列迁移至所述存放主队列数量最小的节点中;否则,结束本次平衡;
S5、所述消息队列集群经过步骤S4中的主队列迁移后,重新进行步骤S2至步骤S4的循环,直至步骤S4中的对比结果为存放主队列最大数量的节点中的主队列的数量小于或等于期望存放的最大数量,结束所述消息队列集群的负载平衡。
优选的,步骤S3节点中期望存放的主队列的最大数量的计算方法为:
期望存放主队列最大数量=(主队列总数/节点总数)+(主队列总数%节点总数)。
优选的,步骤S4中,所述主队列在所述节点之间的迁移方法如下:
S401、从所述存放主队列数量最大的节点中选择一个所述消息队列,并设置所述消息队列的临时策略:将所述消息队列的设置为副本1,并执行所述消息队列,使所述临时策略生效;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中电兴发科技有限公司,未经北京中电兴发科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010784404.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种高压电力电缆故障检测装置
- 下一篇:一种新能源汽车用充电线自动收纳箱