CN115981848B - 一种内存数据库分片调整方法、设备 - Google Patents
一种内存数据库分片调整方法、设备 Download PDFInfo
- Publication number
- CN115981848B CN115981848B CN202211628245.XA CN202211628245A CN115981848B CN 115981848 B CN115981848 B CN 115981848B CN 202211628245 A CN202211628245 A CN 202211628245A CN 115981848 B CN115981848 B CN 115981848B
- Authority
- CN
- China
- Prior art keywords
- node
- load
- time period
- hash
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 239000012634 fragment Substances 0.000 title claims abstract description 11
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000005192 partition Methods 0.000 abstract description 3
- 238000012163 sequencing technique Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 3
- 230000008602 contraction Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种内存数据库分片调整方法、设备,计算得到哈希槽和节点的历史负载数据、高负载时间段、低负载时间段,当删除集群中节点时,根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,当增加集群中节点时,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原RedisCluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽。本发明实现了分布式内存数据库的分片管理,避免了节点负载过重以及热点分片集中到某一个节点导致的业务查询缓慢甚至崩溃的情况。
Description
技术领域
本发明涉及内存数据库领域,尤其涉及内存数据库分片调整方法、设备。
背景技术
Redis是一种内存数据库,主要采用key-value的方式在内存存储数据,RedisCluster突破了单台Redis服务器内存的限制,在大数据、云计算、高性能计算以及高并发Web中都有广泛的应用。由于对于数据的访问很多是查询请求,在内存中存储数据,避免了在访问磁盘带来的时间开销。
在RedisCluster中采用分片技术将数据拆分为多个Redis实例,常见的分片方式有范围分片、哈希(Hash)分片、哈希槽分片等,Redis中采用的哈希槽分片方式,但是集群中服务器数量众多,收到服务器稳定性以及业务的影响,增加、删除集群中Redis节点时有发生,这就涉及到哈希槽分片的调整,现在的调整方式没有考虑业务以及节点的特点,容易造成热点分片调整到一个节点,影响业务的正常执行。
发明内容
为了解决上述问题,本发明提供了一种内存数据库分片调整方法,所述方法包括以下步骤:
获取RedisCluster中节点个数和每个节点对应的哈希槽,每隔预设时间利用哈希槽对应的数据量和请求数计算哈希槽的负载,得到哈希槽的历史负载数据、高负载时间段、低负载时间段;根据每个节点中所有哈希槽的负载计算节点负载,得到节点的历史负载数据、高负载时间段、低负载时间段;
当删除RedisCluster中节点时,根据哈希槽的历史负载数据对待删除节点中的哈希槽进行排序,按照排序顺序根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,更新目的节点的历史负载数据、高负载时间段、低负载时间段,直到待删除节点中所有哈希槽确定目的节点;
当增加Redis Cluster中节点时,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原RedisCluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽。
优选地,所述根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,具体为:
对于待删除节点中每一个哈希槽执行以下操作:
计算待删除节点中哈希槽的高负载时间段与剩余节点中每一个节点的低负载时间段的重合时间t1,以及待删除节点中哈希槽的低负载时间段与剩余节点中每一个节点的高负载时间段的重合时间t2,根据公式得到与每个节点的时间匹配情况,然后利用公式/>得到最终匹配情况,从剩余节点中选择最终匹配情况最大的节点作为哈希槽的目标节点;其中,r1、r2、r3分别为节点的CPU利用率、内存利用率、Cache利用率。
优选地,所述确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,具体为:
根据公式计算影响程度μ,计算μ与所述负载之和的乘积作为新增节点允许增加的负载L;其中,α、β为权重,且α+β=1,Cache、Memory分别为新增节点的Cache、Memory大小,Cache*、Memory*为Cache、Memory对应的预设值,Cachei、Memoryi为第i个节点的Cache、Memory值,N为增加节点后Redis Cluster的节点数,N为正整数。
优选地,所述基于允许的负载和原Redis Cluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽,具体为:
根据公式计算原Redis Cluster中第j个节点的负载权重,根据所述负载权重ωj和所述新增节点允许增加的负载L计算第j个节点允许迁出的最大负载,从第j个节点迁出哈希槽到新增节点,迁出的哈希槽的负载不大于第j个节点允许迁出的最大负载。
优选地,在向新增节点迁移哈希槽后,还包括:根据哈希槽的高负载时间段、低负载时间段对新增后的Redis Cluster集群进行均衡负载。
另外一个方面,本发明还提供了一种内存数据库分片调整设备,所述设备包括以下模块:
历史数据获取模块,用于获取RedisCluster中节点个数和每个节点对应的哈希槽,每隔预设时间利用哈希槽对应的数据量和请求数计算哈希槽的负载,得到哈希槽的历史负载数据、高负载时间段、低负载时间段;根据每个节点中所有哈希槽的负载计算节点负载,得到节点的历史负载数据、高负载时间段、低负载时间段;
节点删除模块,用于当删除RedisCluster中节点时,根据哈希槽的历史负载数据对待删除节点中的哈希槽进行排序,按照排序顺序根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,更新目的节点的历史负载数据、高负载时间段、低负载时间段,直到待删除节点中所有哈希槽确定目的节点;
节点增加模块,用于当增加RedisCluster中节点时,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原RedisCluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽。
优选地,所述根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,具体为:
对于待删除节点中每一个哈希槽执行以下操作:
计算待删除节点中哈希槽的高负载时间段与剩余节点中每一个节点的低负载时间段的重合时间t1,以及待删除节点中哈希槽的低负载时间段与剩余节点中每一个节点的高负载时间段的重合时间t2,根据公式得到与每个节点的时间匹配情况,然后利用公式/>得到最终匹配情况,从剩余节点中选择最终匹配情况最大的节点作为哈希槽的目标节点;其中,r1、r2、r3分别为节点的CPU利用率、内存利用率、Cache利用率。
优选地,所述确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,具体为:
根据公式计算影响程度μ,计算μ与所述负载之和的乘积作为新增节点允许增加的负载L;其中,α、β为权重,且α+β=1,Cache、Memory分别为新增节点的Cache、Memory大小,Cache*、Memory*为Cache、Memory对应的预设值,Cachei、Memoryi为第i个节点的Cache、Memory值,N为增加节点后Redis Cluster的节点数,N为正整数。
优选地,所述基于允许的负载和原Redis Cluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽,具体为:
根据公式计算原Redis Cluster中第j个节点的负载权重,根据所述负载权重ωj和所述新增节点允许增加的负载L计算第j个节点允许迁出的最大负载,从第j个节点迁出哈希槽到新增节点,迁出的哈希槽的负载不大于第j个节点允许迁出的最大负载。
优选地,在向新增节点迁移哈希槽后,还包括:根据哈希槽的高负载时间段、低负载时间段对新增后的Redis Cluster集群进行均衡负载。
本发明结合Redis分片的特点以及业务和节点性能,对增加Redis和删除Redis时,哈希槽的调整方式进行改进,有效的避免了热点分片集中到一个节点或者某一个节点负载较重,影响业务的正常执行。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例的流程图;
图2为节点和哈希槽对应关系示意图;
图3为本发明一个具体实施例的流程图。
具体实施方式
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种内存数据库分片调整方法,如图1所示,所述方法包括以下步骤:
获取RedisCluster中节点个数和每个节点对应的哈希槽,每隔预设时间利用哈希槽对应的数据量和请求数计算哈希槽的负载,得到哈希槽的历史负载数据、高负载时间段、低负载时间段;根据每个节点中所有哈希槽的负载计算节点负载,得到节点的历史负载数据、高负载时间段、低负载时间段;
Redis是内存数据库,在内存中的数据库,主要采用key-value的方式存储数据,当用户操作数据库时,直接从内存中完成查询等操作,已经在很多大数据中心、云计算、Web应用服务器中应用。所谓分片是指将一个大的数据分为多个小的数据,这样打破了单个主机(节点)内存对数据的限制,在Redis中采用哈希槽(hashslot)的方式实现分片,数据的key和插槽绑定,在Redis设置有0-16383个插槽,如图2所示。
当集群伸缩时,需要调整集群中哈希槽和节点的关系,但是有些哈希槽对应的数据是热点数据,而有些是非热点数据,这就容易出现热点分片,如果热点分片集中到一个节点,很容易对热点分片所在节点造成压力。哈希槽对应的数据量和请求数反映了对热点数据的访问情况以及对节点的压力,如果请求数很多,而且数据量很大,这明显会对节点有较大压力。通过定时统计数据量和请求数得到哈希槽的负载,进而根据节点上各个哈希槽的负载得到节点的负载。不同的数据,用户访问的时间也有差别,有些数据当前是热点数据,但是其他时刻不一定是热点数据,对应的哈希槽也就不一定是热点哈希槽,对此,本发明还记录各个哈希槽和节点的高低负载时间段。对于哈希槽的负载的计算方式有多种,例如以数据量和请求数的乘积作为负载,本发明对此不作具体限定。
在一个具体实施例中,在第一步之后,还包括判断的步骤,判断是删除节点还是增加节点,如果删除节点则执行第二步,如果增加节点则执行第三步。
当删除RedisCluster中节点时,根据哈希槽的历史负载数据对待删除节点中的哈希槽进行排序,按照排序顺序根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,更新目的节点的历史负载数据、高负载时间段、低负载时间段,直到待删除节点中所有哈希槽确定目的节点;
对于RedisCluster中节点的伸缩有两种操作,一种是增加节点,另外一种是删除节点,当集群压力很大时,需要增加节点,当出现节点故障或者业务收缩时,需要把节点删除。当删除节点时,需要把待删除节点对应的哈希槽移出或者说分配到其他节点。
如图3所示,首先,对待删除节点中所有哈希槽进行排序,具体的是根据哈希槽的历史负载数据进行排序,例如以上一步中记录的哈希槽的所有历史负载数据的平均值作为本步骤哈希槽的历史负载数据,也可以将距离当前最近的历史负载数据作为本步骤的历史负载数据;
按照历史负载数据从大到小的顺序对哈希槽排序,然后从排序后的第一个哈希槽开始,根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,更新目的节点的历史负载数据、高负载时间段、低负载时间段,直到确定所有待迁移哈希槽的目的节点。
当增加RedisCluster中节点时,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原RedisCluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽。
当在RedisCluster中增加节点时,需要将原RedisCluster中的部分哈希槽迁移到新节点上,首先,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原RedisCluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽。
在一个具体实施例中,所述根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,具体为:
对于待删除节点中每一个哈希槽执行以下操作:
计算待删除节点中哈希槽的高负载时间段与剩余节点中每一个节点的低负载时间段的重合时间t1,以及待删除节点中哈希槽的低负载时间段与剩余节点中每一个节点的高负载时间段的重合时间t2,根据公式得到与每个节点的时间匹配情况,然后利用公式/>得到最终匹配情况,从剩余节点中选择最终匹配情况最大的节点作为哈希槽的目标节点;其中,r1、r2、r3分别为节点的CPU利用率、内存利用率、Cache利用率。
假设原集群有3个节点,分别为Node1、Node2、Node3,若删除Node1,Node1有1个哈希槽Slot1,则Slot1计算与Node2高低负载时间段的匹配情况为0.8,计算与Node3高低负载时间段的匹配情况为0.6,则选择Node2作为目标节点。
Redis是内存数据库,内存和Cache对其性能的影响最为关键,当增加一个新的节点时,如果新增节点的Cache、Memory很大,则新增节点能够分配更多的负载。在一个具体实施例中,所述确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,具体为:
根据公式计算影响程度μ,计算μ与所述负载之和的乘积作为新增节点允许增加的负载L;其中,α、β为权重,且α+β=1,Cache、Memory分别为新增节点的Cache、Memory大小,Cache*、Memory*为Cache、Memory对应的预设值,Cachei、Memoryi为第i个节点的Cache、Memory值,N为增加节点后Redis Cluster的节点数,N为正整数。
为了降低热点哈希槽对原节点的影响,需要尽可能的将热点哈希槽从原节点迁出,对于负载重的节点分配更多的迁出负载,有助于对节点降温。在一个实施例中,所述基于允许的负载和原Redis Cluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽,具体为:
根据公式计算原Redis Cluster中第j个节点的负载权重,根据所述负载权重ωj和所述新增节点允许增加的负载L计算第j个节点允许迁出的最大负载,从第j个节点迁出哈希槽到新增节点,迁出的哈希槽的负载不大于第j个节点允许迁出的最大负载。M为原Redis Cluster中节点个数,也即增加节点前Redis Cluster中节点个数。
优选地,在向新增节点迁移哈希槽后,还包括:根据哈希槽的高负载时间段、低负载时间段对新增后的Redis Cluster集群进行均衡负载。
另外一个方面,本发明还提供了一种内存数据库分片调整设备,所述设备包括以下模块:
历史数据获取模块,用于获取RedisCluster中节点个数和每个节点对应的哈希槽,每隔预设时间利用哈希槽对应的数据量和请求数计算哈希槽的负载,得到哈希槽的历史负载数据、高负载时间段、低负载时间段;根据每个节点中所有哈希槽的负载计算节点负载,得到节点的历史负载数据、高负载时间段、低负载时间段;
节点删除模块,用于当删除RedisCluster中节点时,根据哈希槽的历史负载数据对待删除节点中的哈希槽进行排序,按照排序顺序根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,更新目的节点的历史负载数据、高负载时间段、低负载时间段,直到待删除节点中所有哈希槽确定目的节点;
节点增加模块,用于当增加RedisCluster中节点时,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原RedisCluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽。
在一个具体实施例中,所述设备还包括判断模块,所述判断模块用于判断是执行节点删除模块还是节点增加模块。
优选地,所述根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间的匹配情况,确定目的节点,具体为:
对于待删除节点中每一个哈希槽执行以下操作:
计算待删除节点中哈希槽的高负载时间段与剩余节点中每一个节点的低负载时间段的重合时间t1,以及待删除节点中哈希槽的低负载时间段与剩余节点中每一个节点的高负载时间段的重合时间t2,根据公式得到与每个节点的时间匹配情况,然后利用公式/>得到最终匹配情况,从剩余节点中选择最终匹配情况最大的节点作为哈希槽的目标节点;其中,r1、r2、r3分别为节点的CPU利用率、内存利用率、Cache利用率。
优选地,所述确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,具体为:
根据公式计算影响程度μ,计算μ与所述负载之和的乘积作为新增节点允许增加的负载L;其中,α、β为权重,且α+β=1,Cache、Memory分别为新增节点的Cache、Memory大小,Cache*、Memory*为Cache、Memory对应的预设值,Cachei、Memoryi为第i个节点的Cache、Memory值,N为增加节点后Redis Cluster的节点数,N为正整数。
优选地,所述基于允许的负载和原Redis Cluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽,具体为:
根据公式计算原Redis Cluster中第j个节点的负载权重,根据所述负载权重ωj和所述新增节点允许增加的负载L计算第j个节点允许迁出的最大负载,从第j个节点迁出哈希槽到新增节点,迁出的哈希槽的负载不大于第j个节点允许迁出的最大负载。
优选地,在向新增节点迁移哈希槽后,还包括:根据哈希槽的高负载时间段、低负载时间段对新增后的Redis Cluster集群进行均衡负载。
最后,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述程序被处理器执行时运行上述所述的方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种内存数据库分片调整方法,其特征在于,所述方法包括以下步骤:
获取Redis Cluster中节点个数和每个节点对应的哈希槽,每隔预设时间利用哈希槽对应的数据量和请求数计算哈希槽的负载,得到哈希槽的历史负载数据、高负载时间段、低负载时间段;根据每个节点中所有哈希槽的负载计算节点负载,得到节点的历史负载数据、高负载时间段、低负载时间段;
当删除Redis Cluster中节点时,根据哈希槽的历史负载数据对待删除节点中的哈希槽进行排序,按照排序顺序根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间段的匹配情况,确定目的节点,更新目的节点的历史负载数据、高负载时间段、低负载时间段,直到待删除节点中所有哈希槽确定目的节点;
当增加Redis Cluster中节点时,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原RedisCluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽;
所述根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间段的匹配情况,确定目的节点,具体为:
对于待删除节点中每一个哈希槽执行以下操作:
计算待删除节点中哈希槽的高负载时间段与剩余节点中每一个节点的低负载时间段的重合时间t1,以及待删除节点中哈希槽的低负载时间段与剩余节点中每一个节点的高负载时间段的重合时间t2,根据公式得到与每个节点的时间匹配情况,然后利用公式/>得到最终匹配情况,从剩余节点中选择最终匹配情况最大的节点作为哈希槽的目标节点;其中,/>、/>、/>分别为节点的CPU利用率、内存利用率、Cache利用率;
所述确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,具体为:
根据公式计算影响程度/>,计算/>与所述负载之和的乘积作为新增节点允许增加的负载L;其中,/>、/>为权重,且/>,Cache、Memory分别为新增节点的Cache、Memory大小,/>、/>为Cache、Memory对应的预设值,/>、为第i个节点的Cache、Memory值,N为增加节点后Redis Cluster的节点数,N为正整数;
所述基于允许的负载和原Redis Cluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽,具体为:
根据公式计算原Redis Cluster中第j个节点的负载权重,根据所述负载权重/>和所述新增节点允许增加的负载L计算第j个节点允许迁出的最大负载,从第j个节点迁出哈希槽到新增节点,迁出的哈希槽的负载不大于第j个节点允许迁出的最大负载;M为增加节点前Redis Cluster中节点个数。
2.如权利要求1所述的方法,其特征在于,在向新增节点迁移哈希槽后,还包括:根据哈希槽的高负载时间段、低负载时间段对新增后的Redis Cluster集群进行均衡负载。
3.一种内存数据库分片调整设备,其特征在于,所述设备包括以下模块:
历史数据获取模块,用于获取Redis Cluster中节点个数和每个节点对应的哈希槽,每隔预设时间利用哈希槽对应的数据量和请求数计算哈希槽的负载,得到哈希槽的历史负载数据、高负载时间段、低负载时间段;根据每个节点中所有哈希槽的负载计算节点负载,得到节点的历史负载数据、高负载时间段、低负载时间段;
节点删除模块,用于当删除Redis Cluster中节点时,根据哈希槽的历史负载数据对待删除节点中的哈希槽进行排序,按照排序顺序根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间段的匹配情况,确定目的节点,更新目的节点的历史负载数据、高负载时间段、低负载时间段,直到待删除节点中所有哈希槽确定目的节点;
节点增加模块,用于当增加Redis Cluster中节点时,确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,基于允许的负载和原Redis Cluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽;
所述根据待删除节点的哈希槽高负载时间段、低负载时间段与剩余节点中每一个节点的低负载时间段、高负载时间段的匹配情况,确定目的节点,具体为:
对于待删除节点中每一个哈希槽执行以下操作:
计算待删除节点中哈希槽的高负载时间段与剩余节点中每一个节点的低负载时间段的重合时间t1,以及待删除节点中哈希槽的低负载时间段与剩余节点中每一个节点的高负载时间段的重合时间t2,根据公式得到与每个节点的时间匹配情况,然后利用公式/>得到最终匹配情况,从剩余节点中选择最终匹配情况最大的节点作为哈希槽的目标节点;其中,/>、/>、/>分别为节点的CPU利用率、内存利用率、Cache利用率;
所述确定新增节点对集群性能的影响程度,根据影响程度和所有哈希槽的负载之和确定新增节点允许增加的负载,具体为:
根据公式计算影响程度/>,计算/>与所述负载之和的乘积作为新增节点允许增加的负载L;其中,/>、/>为权重,且/>,Cache、Memory分别为新增节点的Cache、Memory大小,/>、/>为Cache、Memory对应的预设值,/>、为第i个节点的Cache、Memory值,N为增加节点后Redis Cluster的节点数,N为正整数;
所述基于允许的负载和原Redis Cluster中节点的历史负载和节点中哈希槽的负载情况确定迁移到新增节点的哈希槽,具体为:
根据公式计算原Redis Cluster中第j个节点的负载权重,根据所述负载权重/>和所述新增节点允许增加的负载L计算第j个节点允许迁出的最大负载,从第j个节点迁出哈希槽到新增节点,迁出的哈希槽的负载不大于第j个节点允许迁出的最大负载;M为增加节点前Redis Cluster中节点个数。
4.如权利要求3所述的设备,其特征在于,在向新增节点迁移哈希槽后,还包括:根据哈希槽的高负载时间段、低负载时间段对新增后的Redis Cluster集群进行均衡负载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211628245.XA CN115981848B (zh) | 2022-12-17 | 2022-12-17 | 一种内存数据库分片调整方法、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211628245.XA CN115981848B (zh) | 2022-12-17 | 2022-12-17 | 一种内存数据库分片调整方法、设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115981848A CN115981848A (zh) | 2023-04-18 |
CN115981848B true CN115981848B (zh) | 2024-05-28 |
Family
ID=85967384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211628245.XA Active CN115981848B (zh) | 2022-12-17 | 2022-12-17 | 一种内存数据库分片调整方法、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115981848B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117193989B (zh) * | 2023-11-07 | 2024-03-15 | 广东云下汇金科技有限公司 | 一种分区数据中心的数据集中调度方法及其相关设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105516367A (zh) * | 2016-02-02 | 2016-04-20 | 北京百度网讯科技有限公司 | 分布式数据存储系统、方法和装置 |
CN109800236A (zh) * | 2019-01-28 | 2019-05-24 | 上海雷腾软件股份有限公司 | 支持多节点的分布式缓存方法及设备 |
CN110019503A (zh) * | 2017-09-01 | 2019-07-16 | 北京京东尚科信息技术有限公司 | Redis集群的扩容和/或缩容的方法及装置 |
CN111177154A (zh) * | 2019-12-27 | 2020-05-19 | 掌迅亿通(北京)信息科技有限公司 | 分布式数据库缓存方法及其哈希环优化 |
CN112541039A (zh) * | 2020-12-07 | 2021-03-23 | 武汉联影医疗科技有限公司 | 数据库处理方法、装置、计算机设备和存储介质 |
CN113821495A (zh) * | 2021-08-30 | 2021-12-21 | 山东有人物联网股份有限公司 | 数据库集群实现系统及方法 |
CN115455117A (zh) * | 2022-09-16 | 2022-12-09 | 国电南京自动化股份有限公司 | 基于Cuckoo Hash及Chain Hash的Redis集群管理系统及方法 |
-
2022
- 2022-12-17 CN CN202211628245.XA patent/CN115981848B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105516367A (zh) * | 2016-02-02 | 2016-04-20 | 北京百度网讯科技有限公司 | 分布式数据存储系统、方法和装置 |
CN110019503A (zh) * | 2017-09-01 | 2019-07-16 | 北京京东尚科信息技术有限公司 | Redis集群的扩容和/或缩容的方法及装置 |
CN109800236A (zh) * | 2019-01-28 | 2019-05-24 | 上海雷腾软件股份有限公司 | 支持多节点的分布式缓存方法及设备 |
CN111177154A (zh) * | 2019-12-27 | 2020-05-19 | 掌迅亿通(北京)信息科技有限公司 | 分布式数据库缓存方法及其哈希环优化 |
CN112541039A (zh) * | 2020-12-07 | 2021-03-23 | 武汉联影医疗科技有限公司 | 数据库处理方法、装置、计算机设备和存储介质 |
CN113821495A (zh) * | 2021-08-30 | 2021-12-21 | 山东有人物联网股份有限公司 | 数据库集群实现系统及方法 |
CN115455117A (zh) * | 2022-09-16 | 2022-12-09 | 国电南京自动化股份有限公司 | 基于Cuckoo Hash及Chain Hash的Redis集群管理系统及方法 |
Non-Patent Citations (2)
Title |
---|
云计算环境下海量空间数据高效存储关键技术研究;涂振发;《中国博士学位论文全文数据库基础科学辑》;A008-8 * |
面向离散制造行业的实时数据库系统的设计与实现;苏博群;《中国优秀硕士学位论文全文数据库 信息科技辑》;I138-812 * |
Also Published As
Publication number | Publication date |
---|---|
CN115981848A (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190303382A1 (en) | Distributed database systems and methods with pluggable storage engines | |
CN108551474B (zh) | 一种服务器集群的负载均衡方法 | |
US7092971B2 (en) | Prefetch appliance server | |
US7457835B2 (en) | Movement of data in a distributed database system to a storage location closest to a center of activity for the data | |
CN110147407B (zh) | 一种数据处理方法、装置及数据库管理服务器 | |
US9774676B2 (en) | Storing and moving data in a distributed storage system | |
Xu et al. | Drop: Facilitating distributed metadata management in eb-scale storage systems | |
US9602590B1 (en) | Shadowed throughput provisioning | |
CN110825704B (zh) | 一种读数据方法、写数据方法及服务器 | |
Elmeleegy et al. | Spongefiles: Mitigating data skew in mapreduce using distributed memory | |
CN115981848B (zh) | 一种内存数据库分片调整方法、设备 | |
JP2007249468A (ja) | Cpu割当方法、cpu割当プログラム、cpu割当装置、および、データベース管理システム | |
US10691723B2 (en) | Distributed database systems and methods of distributing and accessing data | |
CN111124309B (zh) | 一种分片映射关系确定方法、装置、设备及存储介质 | |
CN112948178A (zh) | 一种数据处理方法、装置、系统、设备及介质 | |
US11269544B1 (en) | Deleting an object from an object storage subsystem for managing paged metadata | |
US11455305B1 (en) | Selecting alternate portions of a query plan for processing partial results generated separate from a query engine | |
CN115934794B (zh) | 一种海量多源异构遥感空间数据查询的弹性管理方法 | |
EP4016312B1 (en) | Data operations using a cache table in a file system | |
KR102054068B1 (ko) | 그래프 스트림에 대한 실시간 분산 저장을 위한 분할 방법 및 분할 장치 | |
JP7458610B2 (ja) | データベースシステム、及びクエリ実行方法 | |
CN112527751B (zh) | 数据处理方法、装置、电子设备和存储介质 | |
Shen et al. | A Distributed Caching Scheme for Improving Read-write Performance of HBase | |
CN117075823B (zh) | 对象查找方法、系统、电子设备及存储介质 | |
CN117539915B (zh) | 一种数据处理方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240430 Address after: 5 / F, building 7, 3601 Dongfang Road, Pudong New Area, Shanghai Applicant after: Shanghai Legal Protection Technology Co.,Ltd. Country or region after: China Address before: No. 502, 5th Floor, Building 13, North Courtyard, No. 16 Hongtu Street, Zhengdong New District, Zhengzhou City, Henan Province, 450000 Applicant before: Zhengzhou Zhaigan Network Technology Co.,Ltd. Country or region before: China |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant |