一种时序数据库集群的负载均衡方法及系统与流程

摘要: 本发明属于分布式数据库,特别是涉及一种时序数据库集群的负载均衡方法及系统。背景技术:1、随着分布式数据库技术的快速发展,时序数据库广泛应用于设备监控、传感器数据...
一种时序数据库集群的负载均衡方法及系统与流程

本发明属于分布式数据库,特别是涉及一种时序数据库集群的负载均衡方法及系统。

背景技术:

1、随着分布式数据库技术的快速发展,时序数据库广泛应用于设备监控、传感器数据采集等场景,需要支撑海量时序数据的高并发写入与实时查询。

2、时序数据库通常采用分片机制,将时序数据按序列键哈希映射到不同存储节点。数据先写入内存表,达到预设阈值后冻结并压缩为不可变的数据块存储至磁盘,通过元数据管理节点记录数据块的位置信息。查询时,根据元数据定位数据块所在节点并返回结果。

3、然而,传统方法在面对写入和读取负载不均时存在明显不足。对于写入热点,若某分片的数据写入量远超其他分片,会导致对应存储节点负载过高,而传统方案在进行分片迁移时,通常仅迁移元数据指针,历史数据仍保留在原节点,查询时可能产生跨节点开销,甚至因原节点内存数据未及时持久化而导致数据丢失。对于读取热点,若某数据块被频繁查询,所在节点易成为性能瓶颈,传统方案缺乏对热点数据块的动态副本扩展能力,无法将查询负载分散到多个低负载节点。因此,亟需一种能够同时应对读写热点、保证数据完整性的负载均衡方案。

技术实现思路

1、基于此,有必要针对上述技术问题,提供一种能够在写入热点分片切换时确保数据完整不丢失,同时为读取热点数据块动态创建副本以分散查询负载的时序数据库集群的负载均衡方法及系统。

2、第一方面,本技术提供了一种时序数据库集群的负载均衡方法,包括:

3、s1、获取时序数据,确定时序数据的归属分片,根据时序数据库集群中元数据管理节点维护的分片与存储节点的映射关系,将时序数据路由至归属分片对应的存储节点,按预设内存大小阈值将时序数据组织为不可变的数据块存储至存储节点,通过元数据管理节点记录各数据块的元数据;

4、s2、对各存储节点进行负载监控,得到节点级负载指标、各数据块的读取热度和各分片的写入吞吐量,根据节点级负载指标,计算各存储节点的负载分数,基于写入吞吐量识别写入热点分片,基于读取热度识别读取热点数据块;

5、s3、根据负载分数在各存储节点中选择低负载节点创建读取热点数据块的只读副本,并在元数据中增添只读副本的副本存储位置;将接收到的查询请求分解为子查询;对于读取热点数据块的子查询,基于读取热点数据块的原始存储节点位置和副本存储位置确定读取存储节点,将各读取存储节点中负载分数最低的读取存储节点作为子查询的执行节点,聚合执行节点返回的子查询结果,得到查询结果;

6、s4、根据负载分数在各存储节点中选择低负载的目标节点,将写入热点分片的写入流切换至目标节点,并将写入热点分片归属的存储节点变更为目标节点;通过目标节点接收写入热点分片的写入请求并生成新的数据块,将变更前的存储节点上已生成的数据块标记为只读副本并保留,将变更前的存储节点上未持久化的时序数据持久化后标记为只读副本并保留。

7、在其中一个实施例中,获取时序数据,确定时序数据的归属分片,根据时序数据库集群中元数据管理节点维护的分片与存储节点的映射关系,将时序数据路由至归属分片对应的存储节点,按预设内存大小阈值将时序数据组织为不可变的数据块存储至存储节点,通过元数据管理节点记录各数据块的元数据,包括:

8、s11、获取时序数据,对时序数据的序列键进行哈希计算,得到键哈希值,根据键哈希值在预设一致性哈希环上匹配时序数据的归属分片;

9、s12、将时序数据路由至归属分片对应的存储节点,并将时序数据写入归属分片在存储节点的内存中的内存表,当内存表满足预设内存大小阈值时,冻结内存表并进行压缩,生成不可变的数据块并存储于存储节点的本地磁盘;

10、s13、通过元数据管理节点记录各数据块的元数据,元数据包括数据块标识、时间范围、原始存储节点位置、只读副本的副本存储位置和标签索引信息。

11、在其中一个实施例中,根据节点级负载指标,在各存储节点中选择低负载节点创建读取热点数据块的只读副本,并在元数据中增添只读副本的副本存储位置;在接收到查询请求时,将查询请求分解为子查询;对于读取热点数据块的子查询,基于读取热点数据块的原始存储节点位置和副本存储位置确定读取存储节点,将各读取存储节点中负载分数最低的读取存储节点作为子查询的执行节点,聚合执行节点的子查询的返回结果,得到查询结果,包括:

12、s21、从各存储节点中筛选出负载分数低于第一预设负载阈值且存储空间满足预设存储空间阈值的存储节点作为候选节点,从各候选节点中选择负载分数最低的候选节点作为低负载节点,向低负载节点发送读取热点数据块的只读副本的文件拷贝指令;

13、s22、根据文件拷贝指令中携带的数据块标识和原始存储节点位置,从原始存储节点位置对应的存储节点拉取数据块标识对应的数据块作为只读副本,将只读副本存储至低负载节点的本地磁盘,并在元数据中为读取热点数据块增添指向只读副本的副本存储位置;

14、s23、当接收到查询请求时,将查询请求分解为各子查询;对于每个读取热点数据块,根据元数据中读取热点数据块的原始存储节点位置和副本存储位置,确定读取热点数据块所在的所有的存储节点,得到读取存储节点,选择负载分数最低的读取存储节点作为读取热点数据块对应的子查询的执行节点;

15、s24、对于查询请求中非读取热点数据块的子查询,将子查询对应的数据块的原始存储节点作为子查询的执行节点;

16、s25、将各子查询分别下发至子查询对应的执行节点,并聚合各子查询的返回结果,得到查询结果。

17、在其中一个实施例中,负载分数的计算公式为:

18、;

19、其中,为第个存储节点的负载分数,为第个存储节点的处理器利用率,为第个存储节点的输入/输出利用率,为第个存储节点的网络带宽占用率,为处理器利用率的权重系数,为输入/输出利用率的权重系数,为网络带宽占用率的权重系数。

20、在其中一个实施例中,根据节点级负载指标,在各存储节点中选择低负载的目标节点,将写入热点分片的写入流切换至目标节点,并将写入热点分片归属的存储节点变更为目标节点;通过目标节点接收写入热点分片的写入请求并生成新的数据块,将变更前的存储节点上已生成的数据块在元数据中标记为只读副本并保留,并将变更前的存储节点的内存中未持久化的时序数据持久化后标记为只读副本并保留包括:

21、s31、从各存储节点中筛选出负载分数低于第二预设负载阈值且存储空间满足预设存储空间阈值的存储节点作为候选节点,从候选节点中选择负载最低的候选节点作为低负载目标节点;

22、s32、将写入热点分片的写入流从写入热点分片对应的存储节点切换至目标节点,并同时将写入热点分片归属的存储节点变更为目标节点;

23、s33、通过目标节点接收写入热点分片的写入请求,将接收到的时序数据写入写入热点分片在目标节点的内存中的内存表,当内存表满足预设内存大小阈值时,冻结内存表并进行压缩,生成新的数据块存储于目标节点的本地磁盘,并向元数据管理节点上报新生成的数据块的元数据;

24、s34、将变更前的存储节点上已生成的数据块在元数据中标记为只读副本,在元数据中将数据块的原始存储节点位置变更为指向变更前的存储节点的副本存储位置;将变更前的存储节点的内存中属于写入热点分片的内存表强制冻结并生成不可变的数据块,将不可变的数据块在元数据中标记为只读副本,在元数据中将不可变的数据块的存储位置记录为指向变更前的存储节点的副本存储位置,并向元数据管理节点上报不可变的数据块的元数据;不可变的数据块的时间范围上限为切换时刻;切换时刻为执行将写入热点分片的写入流从变更前的存储节点切换至目标节点的切换操作的时间点;目标节点生成的新的数据块的时间范围从切换时刻之后开始。

25、第二方面,本技术还提供了一种时序数据库集群的负载均衡系统,包括:

26、数据写入模块,用于获取时序数据,确定时序数据的归属分片,根据时序数据库集群中元数据管理节点维护的分片与存储节点的映射关系,将时序数据路由至归属分片对应的存储节点,按预设内存大小阈值将时序数据组织为不可变的数据块存储至存储节点,通过元数据管理节点记录各数据块的元数据;

27、负载监控模块,用于对各存储节点进行负载监控,得到节点级负载指标、各数据块的读取热度和各分片的写入吞吐量,根据节点级负载指标,计算各存储节点的负载分数,基于写入吞吐量识别写入热点分片,基于读取热度识别读取热点数据块;

28、读取均衡模块,用于根据负载分数在各存储节点中选择低负载节点创建读取热点数据块的只读副本,并在元数据中增添只读副本的副本存储位置;将接收到的查询请求分解为子查询;对于读取热点数据块的子查询,基于读取热点数据块的原始存储节点位置和副本存储位置确定读取存储节点,将各读取存储节点中负载分数最低的读取存储节点作为子查询的执行节点,聚合执行节点返回的子查询结果,得到查询结果;

29、写入均衡模块,用于根据负载分数在各存储节点中选择低负载的目标节点,将写入热点分片的写入流切换至目标节点,并将写入热点分片归属的存储节点变更为目标节点;通过目标节点接收写入热点分片的写入请求并生成新的数据块,将变更前的存储节点上已生成的数据块标记为只读副本并保留,将变更前的存储节点上未持久化的时序数据持久化后标记为只读副本并保留。

30、上述一种时序数据库集群的负载均衡方法及系统,通过识别高读取热度的数据块,为高热度的数据块在低负载节点上动态创建只读副本,并将副本存储位置增添至元数据中。查询请求到来时,系统将查询分解为子查询,基于原始存储节点位置和所有副本存储位置共同确定候选节点集合,从中选择负载分数最低的节点执行子查询,从而将查询负载分散至多个低负载节点,消除读取瓶颈,提升查询响应速度。对于写入热点,在检测到分片写入吞吐量过高时,自动将写入流切换至低负载目标节点,原节点上已持久化数据块标记为只读副本并保留,内存中未持久化时序数据强制持久化后同样标记为只读副本并保留,确保切换过程数据不丢失,历史数据可查,实现分片平滑迁移。本发明在不中断服务的前提下,兼顾读写双重热点均衡,保证数据完整性,提升集群整体吞吐能力与运行稳定性。