一种内存数据库分片调整方法、设备与流程

文档序号:33907536发布日期:2023-04-21 11:57阅读:33来源:国知局
一种内存数据库分片调整方法、设备与流程

本发明涉及内存数据库领域,尤其涉及内存数据库分片调整方法、设备。


背景技术:

1、redis是一种内存数据库,主要采用key-value的方式在内存存储数据,rediscluster突破了单台redis服务器内存的限制,在大数据、云计算、高性能计算以及高并发web中都有广泛的应用。由于对于数据的访问很多是查询请求,在内存中存储数据,避免了在访问磁盘带来的时间开销。

2、在rediscluster中采用分片技术将数据拆分为多个redis实例,常见的分片方式有范围分片、哈希(hash)分片、哈希槽分片等,redis中采用的哈希槽分片方式,但是集群中服务器数量众多,收到服务器稳定性以及业务的影响,增加、删除集群中redis节点时有发生,这就涉及到哈希槽分片的调整,现在的调整方式没有考虑业务以及节点的特点,容易造成热点分片调整到一个节点,影响业务的正常执行。


技术实现思路

1、为了解决上述问题,本发明提供了一种内存数据库分片调整方法,所述方法包括以下步骤:

2、获取rediscluster中节点个数和每个节点对应的哈希槽,每隔预设时间利用哈希槽对应的数据量和请求数计算哈希槽的负载,得到哈希槽的历史负载数据、高负载时间段、低负载时间段;根据每个节点中所有哈希槽的负载计算节点负载,得到节点的历史负载数据、高负载时间段、低负载时间段;

3、当删除rediscluster中节点时,根据哈希槽的历史负载数据对待删除节点中的哈希槽进行排序,按照排序顺序根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,更新目的节点的历史负载数据、高负载时间段、低负载时间段,直到待删除节点中所有哈希槽确定目的节点;

4、当增加redis cluster中节点时,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原rediscluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽。

5、优选地,所述根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,具体为:

6、对于待删除节点中每一个哈希槽执行以下操作:

7、计算待删除节点中哈希槽的高负载时间段与剩余节点中每一个节点的低负载时间段的重合时间t1,以及待删除节点中哈希槽的低负载时间段与剩余节点中每一个节点的高负载时间段的重合时间t2,根据公式得到与每个节点的时间匹配情况,然后利用公式得到最终匹配情况,从剩余节点中选择最终匹配情况最大的节点作为哈希槽的目标节点;其中,r1、r2、r3分别为节点的cpu利用率、内存利用率、cache利用率。

8、优选地,所述确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,具体为:

9、根据公式计算影响程度μ,计算μ与所述负载之和的乘积作为新增节点允许增加的负载l;其中,α、β为权重,且α+β=1,cache、memory分别为新增节点的cache、memory大小,cache*、memory*为cache、memory对应的预设值,cachei、memoryi为第i个节点的cache、memory值,n为增加节点后redis cluster的节点数,n为正整数。

10、优选地,所述基于允许的负载和原redis cluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽,具体为:

11、根据公式计算原redis cluster中第j个节点的负载权重,根据所述负载权重ωj和所述新增节点允许增加的负载l计算第j个节点允许迁出的最大负载,从第j个节点迁出哈希槽到新增节点,迁出的哈希槽的负载不大于第j个节点允许迁出的最大负载。

12、优选地,在向新增节点迁移哈希槽后,还包括:根据哈希槽的高负载时间段、低负载时间段对新增后的redis cluster集群进行均衡负载。

13、另外一个方面,本发明还提供了一种内存数据库分片调整设备,所述设备包括以下模块:

14、历史数据获取模块,用于获取rediscluster中节点个数和每个节点对应的哈希槽,每隔预设时间利用哈希槽对应的数据量和请求数计算哈希槽的负载,得到哈希槽的历史负载数据、高负载时间段、低负载时间段;根据每个节点中所有哈希槽的负载计算节点负载,得到节点的历史负载数据、高负载时间段、低负载时间段;

15、节点删除模块,用于当删除rediscluster中节点时,根据哈希槽的历史负载数据对待删除节点中的哈希槽进行排序,按照排序顺序根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,更新目的节点的历史负载数据、高负载时间段、低负载时间段,直到待删除节点中所有哈希槽确定目的节点;

16、节点增加模块,用于当增加rediscluster中节点时,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原rediscluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽。

17、优选地,所述根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,具体为:

18、对于待删除节点中每一个哈希槽执行以下操作:

19、计算待删除节点中哈希槽的高负载时间段与剩余节点中每一个节点的低负载时间段的重合时间t1,以及待删除节点中哈希槽的低负载时间段与剩余节点中每一个节点的高负载时间段的重合时间t2,根据公式得到与每个节点的时间匹配情况,然后利用公式得到最终匹配情况,从剩余节点中选择最终匹配情况最大的节点作为哈希槽的目标节点;其中,r1、r2、r3分别为节点的cpu利用率、内存利用率、cache利用率。

20、优选地,所述确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,具体为:

21、根据公式计算影响程度μ,计算μ与所述负载之和的乘积作为新增节点允许增加的负载l;其中,α、β为权重,且α+β=1,cache、memory分别为新增节点的cache、memory大小,cache*、memory*为cache、memory对应的预设值,cachei、memoryi为第i个节点的cache、memory值,n为增加节点后redis cluster的节点数,n为正整数。

22、优选地,所述基于允许的负载和原redis cluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽,具体为:

23、根据公式计算原redis cluster中第j个节点的负载权重,根据所述负载权重ωj和所述新增节点允许增加的负载l计算第j个节点允许迁出的最大负载,从第j个节点迁出哈希槽到新增节点,迁出的哈希槽的负载不大于第j个节点允许迁出的最大负载。

24、优选地,在向新增节点迁移哈希槽后,还包括:根据哈希槽的高负载时间段、低负载时间段对新增后的redis cluster集群进行均衡负载。

25、本发明结合redis分片的特点以及业务和节点性能,对增加redis和删除redis时,哈希槽的调整方式进行改进,有效的避免了热点分片集中到一个节点或者某一个节点负载较重,影响业务的正常执行。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1