System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及大数据,具体的涉及消息中间件,更具体地涉及一种基于动态映射策略的负载均衡方法、装置、设备、存储介质和程序产品。
技术介绍
1、在大数据处理和实时分析场景中,许多企业和组织使用kafka作为消息队列,同时使用clickhouse作为数据库管理系统。为了实现kafka数据的高效存储和查询,需要在clickhouse中实现分区到shard的映射。然而,相关技术中的映射策略通常较为固定,无法实现灵活的负载均衡。当kafka分区数与clickhouse的shard数量不匹配时,有可能导致某些shard承担更多的负载,而其他shard的资源未得到充分利用。这可能影响clickhouse集群的性能和稳定性。
2、需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现思路
1、鉴于上述问题,本公开提供了一种基于动态映射策略的负载均衡方法、装置、设备、存储介质和程序产品。
2、根据本公开的第一个方面,提供了一种基于动态映射策略的负载均衡方法,所述方法包括:
3、获取消息中间件逻辑分区数和物理分片数,所述物理分片用于存储消息中间件中的消息数据;
4、根据预设函数、所述消息中间件逻辑分区数和所述物理分片数确定映射关系;
5、实时监控各物理分片的负载情况,并根据所述负载情况调整所述映射关系;以及
6、根据所述映射关系进行消息的消费和存储
7、根据本公开的实施例,所述根据预设函数、所述消息中间件逻辑分区数和所述物理分片数确定映射关系包括:
8、根据所述消息中间件逻辑分区数和所述物理分片数确定目标预设函数;以及
9、根据所述目标预设函数确定映射关系,所述映射关系用于表征消息中间件逻辑分区和物理分片对应关系。
10、根据本公开的实施例,所述根据所述消息中间件逻辑分区数和所述物理分片数确定预设函数,包括:
11、当确定所述消息中间件逻辑分区数为所述物理分片数的整数倍时,确定所述目标预设函数为第一预设函数,所述第一预设函数为模运算函数;
12、当确定所述消息中间件逻辑分区数不为所述物理分片数的整数倍时,确定所述目标预设函数为第二预设函数,所述第二预设函数为哈希函数。
13、根据本公开的实施例,所述根据所述目标预设函数确定映射关系包括:
14、当确定所述目标预设函数为第一预设函数时,使用模运算将分区映射到物理分片上;以及
15、当确定所述目标预设函数为第二预设函数时,通过哈希函数将分区映射到物理分片上。
16、根据本公开的实施例,所述实时监控各物理分片的负载情况,并根据所述负载情况调整所述映射关系包括:
17、收集各物理分片的数据消费速率和数据存储量;
18、根据所述数据消费速率和所述数据存储量确定各物理分片的负载指数;以及
19、若确定某一物理分片负载指数高于第一预设阈值,调整映射关系将分区映射到负载指数低于第二预设阈值的物理分片上。
20、根据本公开的实施例,所述根据所述映射关系进行消息的消费和存储包括:
21、在每个物理分片上创建一个本地表,所述本地表用于存储从消息中间件中消费的数据;
22、在数据库集群上创建以所述映射关系作为分区键的分布式表,所述分布式表与所述本地表结构相同;
23、监听消息中间件中的消息并将消息数据插入到分布式表中;以及
24、根据所述分区键将所述消息数据路由至对应的物理分片的本地表中。
25、本公开的第二方面提供了一种基于动态映射策略的负载均衡装置,所述装置包括:
26、获取模块,用于获取消息中间件逻辑分区数和物理分片数,所述物理分片用于存储消息中间件中的消息数据;
27、映射关系确定模块,用于根据预设函数、所述消息中间件逻辑分区数和所述物理分片数确定映射关系;
28、映射关系调整模块,用于实时监控各物理分片的负载情况,并根据所述负载情况调整所述映射关系;以及
29、消息消费存储模块,用于根据所述映射关系进行消息的消费和存储。
30、根据本公开的实施例,所述映射关系确定包括:第一确定子模块和第二确定子模块。
31、第一确定子模块,用于根据所述消息中间件逻辑分区数和所述物理分片数确定目标预设函数;以及
32、第二确定子模块,用于根据所述目标预设函数确定映射关系,所述映射关系用于表征消息中间件逻辑分区和物理分片对应关系。
33、根据本公开的实施例,所述第一确定子模块包括第一确定单元和第二确定单元。
34、第一确定单元,用于当确定所述消息中间件逻辑分区数为所述物理分片数的整数倍时,确定所述目标预设函数为第一预设函数,所述第一预设函数为模运算函数;
35、第二确定单元,用于当确定所述消息中间件逻辑分区数不为所述物理分片数的整数倍时,确定所述目标预设函数为第二预设函数,所述第二预设函数为哈希函数。
36、根据本公开的实施例,所述第二确定子模块包括第三确定单元和第四确定单元。
37、第三确定单元,用于当确定所述目标预设函数为第一预设函数时,使用模运算将分区映射到物理分片上;以及
38、第四确定单元,用于当确定所述目标预设函数为第二预设函数时,通过哈希函数将分区映射到物理分片上。
39、根据本公开的实施例,所述映射关系调整模块包括收集子模块、第三确定子模块和映射关系调整子模块。
40、收集子模块,用于收集各物理分片的数据消费速率和数据存储量;
41、第三确定子模块,用于根据所述数据消费速率和所述数据存储量确定各物理分片的负载情况;以及
42、映射关系调整子模块,用于若确定某一物理分片负载高于第一预设阈值,调整映射关系将分区映射到负载低于第二预设阈值的物理分片上。
43、根据本公开的实施例,所述消息消费存储模块包括第一创建子模块、第二创建子模块、插入子模块和数据路由子模块。
44、第一创建子模块,用于在每个物理分片上创建一个本地表,所述本地表用于存储从消息中间件中消费的数据;
45、第二创建子模块,用于在数据库集群上创建以所述映射关系作为分区键的分布式表,所述分布式表与所述本地表结构相同;
46、插入子模块,用于监听消息中间件中的消息并将消息数据插入到分布式表中;以及
47、数据路由子模块,用于根据所述分区键将所述消息数据路由至对应的物理分片的本地表中。
48、本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述基于动态映射策略的负载均衡方法。本文档来自技高网...
【技术保护点】
1.一种基于动态映射策略的负载均衡方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据预设函数、所述消息中间件逻辑分区数和所述物理分片数确定映射关系包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述消息中间件逻辑分区数和所述物理分片数确定预设函数,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标预设函数确定映射关系包括:
5.根据权利要求1所述的方法,其特征在于,所述实时监控各物理分片的负载情况,并根据所述负载情况调整所述映射关系包括:
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述根据所述映射关系进行消息的消费和存储包括:
7.一种基于动态映射策略的负载均衡装置,其特征在于,所述装置包括:
8.一种电子设备,包括:
9.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~6中任一项所述的方法。
10.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器
...【技术特征摘要】
1.一种基于动态映射策略的负载均衡方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据预设函数、所述消息中间件逻辑分区数和所述物理分片数确定映射关系包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述消息中间件逻辑分区数和所述物理分片数确定预设函数,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标预设函数确定映射关系包括:
5.根据权利要求1所述的方法,其特征在于,所述实时监控各物理分片的负载情况,并根据所述负...
【专利技术属性】
技术研发人员:王泽洋,李兰彬,陈巧燕,贾珂,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。