多集群队列动态分流方法、装置及集群获取方法制造方法及图纸

技术编号:38127410 阅读:9 留言:0更新日期:2023-07-08 09:32
本文涉及金融科技领域,尤其涉及多集群队列动态分流方法、装置及集群获取方法。包括实时获取每一个集群中各存量队列的负载、各集群的负载,其中,集群的负载为集群中所有存量队列的负载之和;根据各集群负载、各集群中存量队列的负载确定最小负载集群、集群中已达预设负载阈值的存量队列,并获取已达预设负载阈值的存量队列的属性数据;在最小负载集群中根据已达预设负载阈值的存量队列的属性数据,生成新增队列;将新消息路由至新增队列;将包含新消息的新增队列下发至消费者,更新消费者订阅队列。本文对集群实时监控,当集群承载TPS超过阈值,动态拉起新集群进行分流,实现应用无感知;新流量均选择低负载集群进行路由,保证集群负载均衡。群负载均衡。群负载均衡。

【技术实现步骤摘要】
多集群队列动态分流方法、装置及集群获取方法


[0001]本文涉及金融科技领域,尤其是多集群队列动态分流方法、装置及集群获取方法。

技术介绍

[0002]RabbitMQ作为开源消息中间件,常用于分布式系统存储、转发消息进行异步、解耦、削峰等功能,具有消息高可靠、集群高可用、路由灵活、支持插件动态扩展等优势。RabbitMQ根据业务架构进行分层管理,具体为:每个业务系统分别创建RabbitMQ实例,并进行逻辑隔离形成不同虚拟机主机,业务子系统内根据不同的功能点构建不同的消息交换机、不同的路由键向不同的消息队列进行生产、消费,以此实现分层管理。
[0003]现有技术中,随着业务扩展、每秒事务处理量(TPS,Transaction Per Second)的增加,集群内的单个消息队列极易达到性能瓶颈,影响业务扩展支持。现有技术中RabbitMQ集群的横向扩展只能扩展集群整体的TPS及消息队列数量,RabbitMQ集群的纵向扩展(增加内存)只能提升集群支持的消息堆积量。对于已存在的消息队列,无法有效进行队列级别的扩展;另外,单个RabbitMQ集群仅能支持万级TPS,无法支持高吞吐业务需求场景。对于已使用RabbitMQ的应用系统,若消息队列需求性能高于万级,则需进行消息中间件的重新选型以及重构对接,成本极高。
[0004]现有技术中也有通过应用层面感知达到性能瓶颈的业务场景,以此调整RabbitMQ集群的解决方案,但这种方式影响应用端的资源,容易导致效率降低的问题。
[0005]针对目前技术中重选消息中间件成本高、应用层效率低的问题,需要一种多集群队列动态分流方法、装置及集群获取方法。

技术实现思路

[0006]为解决上述现有技术的问题,本文实施例提供了一种多集群队列动态分流方法、装置及集群获取方法。
[0007]本文实施例提供了一种多集群队列动态分流方法,所述方法由代理方执行,当接收到生产者发布的新消息时,所述方法包括:实时获取每一个集群中各存量队列的负载、各集群的负载,其中,所述集群的负载为集群中所有存量队列的负载之和;根据所述各集群的负载、各集群中存量队列的负载确定最小负载集群、集群中已达预设负载阈值的存量队列,并获取所述已达预设负载阈值的存量队列的属性数据;在最小负载集群中根据所述已达预设负载阈值的存量队列的属性数据,生成新增队列;将新消息路由至新增队列;将包含所述新消息的新增队列下发至消费者,更新消费者订阅的队列。
[0008]根据本文实施例的一个方面,所述生成新增队列包括:在最小负载集群中生成新增队列,所述新增队列无初始消息;记录并存储所述新增队列与所述最小负载集群的集群队列映射关系。
[0009]根据本文实施例的一个方面,所述生成新增队列进一步包括:获取所述已达到预设负载阈值的存量队列名称;为所述新增队列,赋予与所述已达到预设负载阈值相同的队
列名称,或赋予与所述已达到预设负载阈值的队列名称相关的队列名称。
[0010]根据本文实施例的一个方面,所述实时获取多集群中各集群的负载、各集群中存量队列的负载包括:基于应用程序编程接口API(Application Programming Interface)实时采集的集群状态信息、队列状态信息,由代理获取集群的负载及集群中各存量队列的负载。
[0011]根据本文实施例的一个方面,将所述新增队列下发至消费者端,更新消费者订阅的队列包括:根据与消费者的连接,确定消费者的订阅消息,所述订阅消息包括消费者订阅的队列;根据所述新增队列的队列名称,判断所述新增队列是否与消费者订阅的队列相关;若相关,将所述新增队列更新至消费者订阅的队列。
[0012]本文实施例提供了一种集群获取方法,所述方法应用于消费者,所述方法包括:获取消费者订阅的队列;根据所述队列从预先存储的集群队列映射关系中查询,所述消费者订阅的队列所属的集群。
[0013]本文实施例还公开了一种多集群队列动态分流装置,所述装置包括:
[0014]负载获取单元,用于实时获取各集群的负载、各集群中存量队列的负载,其中,所述集群的负载为集群中所有存量队列的负载之和;属性数据获取单元,用于根据所述各集群的负载、各集群中存量队列的负载确定最小负载集群、集群中已达预设负载阈值的存量队列,并获取所述存量队列的属性数据;新增队列生成单元,用于将所述队列的属性数据拷贝至最小负载集群,并生成新增队列;路由单元,用于将新消息路由至新增队列;队列更新单元,用于将所述新增队列下发至消费者,更新消费者订阅的队列。
[0015]本文实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述多集群队列动态分流方法。
[0016]本文实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述多集群队列动态分流方法。
[0017]本文实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现所述多集群队列动态分流方法。
[0018]本方案对集群实时监控,当集群承载TPS超过阈值,动态拉起新集群进行分流,实现应用无感知;新流量均选择低负载集群进行路由,保证集群负载均衡。
附图说明
[0019]为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1所示为本文实施例一种多集群队列动态分流方法的系统示意图;
[0021]图2所示为本文实施例一种多集群队列动态分流方法的流程图;
[0022]图3所示为本文实施例一种生成新增队列的方法流程图;
[0023]图4所示为本文实施例一种生成新增队列的方法流程图;
[0024]图5所示为本文实施例一种更新消费者订阅的队列的方法流程图;
[0025]图6所示为本文实施例一种多集群队列动态分流装置的结构示意图;
[0026]图7所示为本实施例多集群队列动态分流装置的具体结构示意图;
[0027]图8所示为本文实施例提供的一种计算机设备的示意图。
[0028]附图符号说明:
[0029]101、生产者;
[0030]102、代理方;
[0031]103、消息队列服务器;
[0032]104、集群;
[0033]105、消费者;
[0034]601、负载获取单元;
[0035]602、属性数据获取单元;
[0036]603、新增队列生成单元;
[0037]6031、集群队列映射关系记录模块;
[0038]6032、名称赋予模块;
[0039]604、路由单元;
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多集群队列动态分流方法,其特征在于,所述方法由代理方执行,当接收到生产者发布的新消息时,所述方法包括:实时获取每一个集群中各存量队列的负载、各集群的负载,其中,所述集群的负载为集群中所有存量队列的负载之和;根据所述各集群的负载、各集群中存量队列的负载确定最小负载集群、集群中已达预设负载阈值的存量队列,并获取所述已达预设负载阈值的存量队列的属性数据;在最小负载集群中根据所述已达预设负载阈值的存量队列的属性数据,生成新增队列;将新消息路由至新增队列;将包含所述新消息的新增队列下发至消费者,更新消费者订阅的队列。2.根据权利要求1所述的多集群队列动态分流方法,其特征在于,所述生成新增队列包括:在最小负载集群中生成新增队列,所述新增队列无初始消息;记录并存储所述新增队列与所述最小负载集群的集群队列映射关系。3.根据权利要求2所述的多集群队列动态分流方法,其特征在于,所述生成新增队列进一步包括:获取所述已达到预设负载阈值的存量队列名称;为所述新增队列,赋予与所述已达到预设负载阈值相同的队列名称,或赋予与所述已达到预设负载阈值的队列名称相关的队列名称。4.根据权利要求3所述的多集群队列动态分流方法,其特征在于,所述实时获取多集群中各集群的负载、各集群中存量队列的负载包括:基于API接口实时采集的集群状态信息、队列状态信息,由代理获取集群的负载及集群中各存量队列的负载。5.根据权利要求3所述的多集群队列动态分流方法,其特征在于,将所述新增队列下发至消费者端,更新消费者订阅的队列包括:根据与消费者的连接,确定消...

【专利技术属性】
技术研发人员:高小娟刘汝强
申请(专利权)人:中信银行股份有限公司
类型:发明
国别省市:

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

1