CN113867631A - Redis集群数据移动方法、装置、设备及存储介质 - Google Patents
Redis集群数据移动方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113867631A CN113867631A CN202111108799.2A CN202111108799A CN113867631A CN 113867631 A CN113867631 A CN 113867631A CN 202111108799 A CN202111108799 A CN 202111108799A CN 113867631 A CN113867631 A CN 113867631A
- Authority
- CN
- China
- Prior art keywords
- data
- instance
- hot
- redis cluster
- instances
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013507 mapping Methods 0.000 claims abstract description 30
- 230000010076 replication Effects 0.000 claims abstract description 15
- 239000000872 buffer Substances 0.000 claims description 5
- 230000003362 replicative effect Effects 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013508 migration Methods 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 238000004781 supercooling Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010790 dilution Methods 0.000 description 1
- 239000012895 dilution Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013021 overheating Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
本发明公开了一种Redis集群数据移动方法、装置、设备及存储介质,属于数据缓存技术领域,包括:定期计算Redis集群中每个数据分组的热度和每个实例的热度,并标识出热实例和热数据分组;将热实例对应的热数据分组中热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组‑实例映射关系;向客户端发送更新指令以使客户端根据新的数据分组‑实例映射关系更新其缓存的集群状态关系。本发明在数据热度倾斜度较高时可以通过数据复制缓解单实例热点导致性能瓶颈的问题。
Description
技术领域
本发明涉及数据缓存技术领域,特别涉及一种基于数据热度感知的Redis集群数据移动方法、装置、设备及存储介质。
背景技术
Redis是一个内存Key-Value存储系统,其将数据以键值对的形式存储在内存中。由于目前环境下内存键值系统的访问分布较为倾斜(符合齐夫分布),该分布下少量数据访问频次较高,而大量数据访问频次较低。Redis内建集群模式面对该情况时存在的问题在于:一方面会遇到部分实例热度过高的问题,此时这些实例成为集群性能瓶颈,导致集群性能不能随着实例数的增加而继续增加;另一方面大多数实例负责访问频次较低的数据,这会使得大多数实例的CPU资源利用率较低,导致集群整体的CPU资源利用率较低。
发明内容
本发明的目的在于提供一种Redis集群数据移动方法、装置及设备,旨在解决现有技术存在的单实例热点导致集群性能瓶颈的问题。
为实现以上目的,一方面,本发明提出一种Redis集群数据移动方法,包括如下步骤:
定期计算Redis集群中每个数据分组的热度和每个实例的热度,并标识出热实例和热数据分组;
将热实例中的热数据分组按热度排序,并将热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组-实例映射关系;
向客户端发送更新指令以使客户端根据新的数据分组-实例映射关系更新其缓存的集群状态关系。
可选地,所述所述定期计算Redis集群中每个数据组的热度和每个实例的热度,并标识出热实例和热数据分组,包括:
获取所述Redis集群中每个数据分组承载的操作数,并根据每个数据分组承载的操作数计算对应的热度;
将热度超过第一阈值的数据分组标记为所述热数据分组;
获取所述Redis集群中每个实例的CPU占用率,并将CPU占用率超过第二阈值的实例标记为所述热实例。
可选地,所述Redis集群包括控制器、用于存放所述热实例对应的热数据分组的热实例组、用于存放冷实例的冷实例组和用于存放正常实例的普通实例组。
可选地,所述将热实例对应的热数据分组中热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组-实例映射关系,包括:
在所述实例被标记为热实例的时间超过第一时间阈值时,由控制器将所述热数据分组中热度最大的数据分组复制到所述Redis集群的副本实例上,得到所述新的数据分组-实例映射关系,所述副本实例为所述热实例组中的实例。
可选地,所述向客户端发送更新指令以使客户端根据新的数据分组-实例映射关系更新其缓存的集群状态关系,包括:
所述客户端根据新的数据分组-实例映射关系,将所述客户端访问导向数据副本,所述数据副本为所述复制到Redis集群的热实例组中的实例上的数据;
将保存所述数据副本的所述副本实例缓存每个写操作到内部buffer;
定期将缓存的指令通过网络字节流的形式发送给其他的所述副本实例进行数据同步。
可选地,还包括:
将所述CPU占用率低于第三阈值的实例标记为冷实例;
在冷实例的数量超过数量阈值时,异步执行冷实例合并操作。
可选地,所述在冷实例的数量超过数量阈值时,对冷实例进行合并,包括:
将待合并的所述冷实例生成其所保存的数据镜像到磁盘,并将所保存的数据缓存至更新缓存文件中;
启动新实例并读取数据镜像和更新缓存文件中的数据;
在新实例数据同步完成后,根据新实例修改所述客户端内缓存的集群状态关系。
此外,为实现上述目的,本发明还提出一种Redis集群数据移动装置,包括:
确定模块,用于定期计算Redis集群中每个数据分组的热度和每个实例的热度,并标识出热实例和热数据分组;
数据复制模块,用于将热实例中的热数据分组按热度排序,并将热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组-实例映射关系;
更新模块,用于向客户端发送更新指令以使客户端根据新的数据分组-实例映射关系更新其缓存的集群状态关系。
此外,为实现上述目的,本发明还提出一种Redis集群数据移动设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的Redis集群数据移动程序,所述Redis集群数据移动程序配置用于实现如上文所述的Redis集群数据移动方法。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有Redis集群数据移动程序,所述Redis集群数据移动程序被处理器执行时实现如上文所述的Redis集群数据移动方法。
与现有技术相比,本发明存在以下技术效果:本发明通过计算Redis集群中每个数据分组的热度和每个实例的热度,并标识出热实例和热数据分组,将热实例对应的热数据分组中热度最大的数据分组复制到集群的副本实例上,完成数据复制后,向客户端发送修改指令以修改客户端中缓存的集群状态关系,将客户端访问重定向至副本实例。本发明可根据数据的冷热状态及时的对数据分组和实例的状态进行冷热区分,使得本发明可以处理访问热度多变的场景;通过利用Redis客户端的特性,在数据热度倾斜度较高时可以通过数据复制缓解单实例热点导致性能瓶颈的问题,并兼容已有的客户端设计,同时数据的一致性也得到了保证。
附图说明
下面结合附图,对本发明的具体实施方式进行详细描述:
图1为本发明一种Redis集群数据移动方法的流程图;
图2为本发明中Redis集群数据映射关系示意图;
图3为本发明中改进的Redis集群架构示意图;
图4为本发明另一实施例中一种Redis集群数据移动方法的实施操作整体流程示意图;
图5为本发明中Redis集群数据/实例热度检测方法示意图;
图6为本发明中执行热数据复制后Redis集群数据/实例热度状态示意图;
图7为本发明中执行冷实例合并后Redis集群数据/实例热度状态示意图;
图8为本发明另一实施例中一种Redis集群数据移动装置的结构图;
图9为本发明另一实施例中一种Redis集群数据移动设备的结构图。
具体实施方式
为了更进一步说明本发明的特征,请参阅以下有关本发明的详细说明与附图。所附图仅供参考与说明之用,并非用来对本发明的保护范围加以限制。
如图1所示,本实施例公开了一种Redis集群数据移动方法,所述方法包括如下步骤S10至S30:
S10:定期计算Redis集群中每个数据分组的热度和每个实例的热度,并标识出热实例和热数据分组;
需要说明的是,参照图2,图2示出了Redis集群的数据分布方式和集群架构。Redis中集群数据通过固定的哈希算法映射到集群中的一个数据分组上;同时数据分组通过用户自定义的策略映射到具体的实例上并通过网络同步该信息;实例则运行在物理节点上。由于齐夫分布,对数据的访问热度是不一的,这会导致集群中部分数据分组的热度超过平均值,使得集群之间热度不均匀,因此需要动态感知的集群数据热度,进行数据的移动和复制,从而平衡集群间各个实例的热度。
需要说明的是,本实施例Redis集群中实例周期性的计算本身的热度和所对应的数据分组的热度,并根据计算出的热度对实例和数据分组进行冷/热分类。
S20:将热实例中的热数据分组按热度排序,并将热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组-实例映射关系;
需要说明的是,本实施例通过动态感知实例热度和数据分组热度,并将热实例对应的热数据分组中热度最大的数据分组进行移动和复制,从而平衡集群间各个实例的热度;在数据热度倾斜度较高时,通过数据复制缓解单实例热度导致性能瓶颈的问题。
S30:向客户端发送更新指令以使客户端根据新的数据分组-实例映射关系更新其缓存的集群状态关系。
需要说明的是,本实施例通过源实例向客户端发送更新指令,修改客户端中缓存的数据分组-实例映射关系,将客户端访问重定向至副本实例,重定向之后,客户端下次访问时会直接访问被重定向的副本实例,从而实现热度数据的访问分流。
进一步地,所述步骤S10:定期计算Redis集群中每个数据分组的热度和每个实例的热度,并标识出热实例和热数据分组,包括如下细分步骤S11至S13:
S11:获取所述Redis集群中每个数据分组承载的操作数,并根据每个数据分组承载的操作数计算对应的热度;
需要说明的是,通过记录Redis集群中每个数据组承载的操作数,从而得到每个数据分组平均每秒被请求访问的次数Pi(i为数据分组编号),并将其记为该数据分组的热度。
S12:将热度超过第一阈值的数据分组标记为所述热数据分组;
需要说明的是,本实施例将每个数据分组的热度信息在集群中同步,并计算出所有数据分组热度的平均值P,并将平均值P乘以M作为过热阈值即第一阈值,将平均值P乘以N作为过冷阈值即第四阈值。将热度超过第一阈值的数据分组标记为热数据分组将热度低于第四阈值的数据分组标记为冷数据分组,并保存数据分组的编号。
应当理解的是,本实施例中M、N为用户可配置参数,本领域技术人员可根据实际情况具体设置M、N的取值。
S13:获取所述Redis集群中每个实例的CPU占用率,并将CPU占用率超过第二阈值的实例标记为所述热实例。
需要说明的是,集群中每个实例通过操作系统周期性获得其对应的CPU占用率,若CPU占用率超过第二阈值J,将其本身标识为热实例;若CPU占用率低于第四阈值K,则将本身标识为冷实例。
应当理解的是,本实施例中J、K为用户可配置参数,本领域技术人员可根据实际情况具体设置J、K的取值。
进一步地,参照图3,图3示出了改进的Redis集群架构。原始的Redis集群为去中心化架构,每个实例承担相同的工作。在本实施例新架构下,实例被分为了三个组,分别为用于存放来自热实例的热数据分组的热实例组(Hot Group,HG),用于存放正常实例中数据分组的普通的Redis集群实例组(Normal Group,NG)和用于存放冷实例中数据分组的冷实例组(Cold Group,CG)。同时还有一个控制器以控制集群的数据复制和实例合并。
进一步地,所述步骤S20:将热实例中的热数据分组按热度排序,并将热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组-实例映射关系,包括如下细分步骤S21至S23:
S21:判断所述实例被标记为热实例的时间是否超过第一时间阈值T1,若是执行步骤S22,若否则执行步骤S23;
S22:将热实例对应的热数据分组中热度最大的数据分组的编号发送至控制器,以由控制器将所述热数据分组中热度最大的数据分组复制到所述Redis集群的副本实例上,得到所述新的数据分组-实例映射关系,所述副本实例为所述热实例组中的实例;
S23:等待第二时间阈值T2之后,重新执行步骤S21;
需要说明的是,本实施例中控制器将数据分组以字节流的形式复制到集群的副本实例上。
应当理解的是,本实施例中的第一时间阈值T1和第二时间阈值T2为可配置参数,其中,第二时间阈值的作用是控制检查热度的频率。本领域技术人员可根据具体情况设置其取值,比如工作负载变化较频繁时,会使得实例热度值变化速度较快,此时可将检查时间即第二时间阈值缩短以提高检查频率。
进一步地,所述步骤S30:向客户端发送更新指令以使客户端根据新的数据分组-实例映射关系更新其缓存的集群状态关系,包括如下步骤S31至S33:
S31:源实例向所述客户端发送更新指令,以使所述客户端根据新L的数据分组-实例映射关系,将所述客户端访问导向数据副本且广播写请求,所述数据副本为所述复制到Redis集群的副本实例上的数据;
S32:将保存所述数据副本的所述副本实例缓存每个写操作到内部buffer;
S33:定期将缓存的指令通过网络字节流的形式发送给其他的所述副本实例进行数据同步。
需要说明的是,该处周期参数,本领域技术人员可根据实际情况调整取值。
在一实施例中,如图4所示,基于第一实施例提出本发明Redis集群数据移动方法第二实施例,还包括如下步骤S51至S53:
S51:判断被标记为冷实例的数量超过数量阈值N,若是执行步骤S52,若否执行步骤S53;
S52:异步执行冷实例合并操作;
S53:等待一段时间后,重新执行步骤S51。
需要说明的是,数量阈值N是一个用户可自定义的参数,其作用是控制实例合并的频率,如阈值设定较低,实例合并发生的更频繁,集群CPU资源利用率更均衡,但会对集群性能产生影响,阈值设定较高时则相反。
需要说明的是,在集群实例检测其本身被标记为冷实例时,将其地址信息和热度信息发送至控制器,由控制器周期性检测冷实例的数量,在冷实例的数量超过数量阈值时,执行实例合并操作。
应当理解的是,本实施例中的数量阈值N为可配置参数,本领域技术人员可根据具体情况设置其取值。
可以理解的是,本实施例通过异步数据移动实现了高性能的实例合并,提高了集群的CPU资源利用率。
进一步地,在所述步骤S51:判断被标记为冷实例的数量超过数量阈值之前,还包括步骤S50:
S50:实例检测本身被标记为冷实例的时间是否超过第二时间阈值T2,并在超过第二时间阈值时,将其地址信息和热度信息发送至控制器。
需要说明的是,本实施例判断被标记为冷实例的时间是否超过设定时长的作用是控制合并的敏感度,设定时长较短,冷实例的门槛较低,合并策略会更积极。
进一步地,所述步骤S52:异步执行冷实例合并操作,具体包括如下步骤S521至S523:
S521:将待合并的所述冷实例生成其所保存的数据镜像到磁盘,并将所保存的数据缓存至更新缓存文件中;
S522:启动新实例并读取数据镜像和更新缓存文件中的数据;
S523:在新实例数据同步完成后,根据新实例修改所述客户端内缓存的集群状态关系。
需要说明的是,本实施例中控制器根据实例热度值相加小于指定阈值的原则,生成合并方案。比如控制器中存储了冷实例A,B,C,D,E的信息,通过计算发现实例A,B,C的热度和小于阈值,同时实例D,E的热度和也小于阈值,因此生成合并方案为“实例A,实例B和实例C合并成一个实例,而实例D和实例E合并成一个实例。
需要说明的是,实例合并之后,热度值会变为合并前热度值之和,通过设定阈值,在待合并实例热度值之和小于设定阈值时进行实例合并以避免合并后实例变为热实例,从而引发热数据组复制的问题
需要说明的是,本实施例首先进行实例和数据的热度检测,当达到周期时间后,检查实例的冷热程度。如果存在热实例,则根据数据组热度复制最热的数据组,复制完成后重定向客户端,且广播写请求;如果存在冷实例,则报告该实例信息给控制器,当冷实例数量超过阈值时,开始生成并执行合并计划。首先导出旧实例数据,导出完毕后,新实例读取该信息,当读取完成后,重定向客户端并删除旧实例,整个流程完成。
本实施例方案提出的Redis集群数据移动方案,包含Redis集群中数据和实例热度感知、热数据分组复制、冷实例合并等步骤。本方法和传统方法相比,只涉及到服务端代码修改,兼容已有的Redis集群客户端,因此通用性较好;同时可以感知到数据和实例热度的变化,适用于数据热度集中且多变的场景,既能使得集群整体性能更好,又能保证集群整体的CPU资源利用率更佳。
而且,由于客户端访问是基于缓存的集群状态信息的,可以一次访问完成请求,因此本发明和传统方法相比,缩短了访问路径,性能较好;本实施例方案可以动态感知数据冷热变化,同时提供了大量的可自定义参数,所以本方法适用于多种场景,且尤其适用于数据热度多变的场景,通用性较好。
以下结合图5至图7,对本实施例方案进行详细说明:
本实施例基于数据热度感知的Redis集群数据移动策略,是在2台主机上同时运行4个Redis实例组成的集群,假设Redis集群中共有8个数据分组(为简化问题,实际情况下有16384个),其中数据访问分布遵循齐夫分布,因此集群中会出现实例热度不一致的问题。
本实施例提出的Redis集群数据移动策略,具体包括以下步骤:
(1)Redis集群中数据和实例热度感知:
附图5给出了Redis集群中实例检测数据和实例冷热方式的示意图。图5中有四个Redis实例R1,R2,R3,R4,共有8个数据分组G1~G8,其中每个实例负责两个数据分组。每个数据分组中包含两个数据,如实例R1负责数据分组G1,同时数据分组G1包含数据D1和D9,具体的映射关系可参见附图2。
其中每个实例会统计一定时间内每个数据分组的数据的访问量,并同步该信息,从而获得集群中每个数据分组的平均热度信息;同时每个实例会记录本身一定时间内的CPU平均使用率,将此作为本身的实例热度信息。当一个实例发现一个数据分组的热度超过阈值后,将其标记为热数据组,且热数据组之间根据热度进行排序。如图5中实例R1中的数据分组G1,G2和实例R3中的数据分组G5被标识为热数据组,且数据组之间热度关系为G1>G2=G5。同时根据定期获取的实例热度信息,当一个实例发现自己热度高于或低于阈值,将本身标为热实例或冷实例。如图5中的实例R1被标识为热实例,而实例R2,R4被标识为冷实例。
(2)热数据分组复制:
附图6给出了热数据分组复制的示意图。基于步骤(1)中探测的实例冷热信息,实例R1发现本身属于热实例。对于R1,其检查本身负责的数据分组的热度,发现数据分组G1的热度最高,告知控制器数据分组信息,并由控制器帮助下将数据分组G1迁移到热实例组的实例上,即附图6中的R5,R6,R7。迁移完成后,更新客户端缓存的集群状态以重定向客户端到副本实例上。如对客户端A,将其重定向到副本实例R5上,而对客户端B,将其重定向到副本实例R6上。重定向之后客户端下次访问会直接访问被重定向的副本实例,从而实现热点数据访问分流。
进一步地,对于数据一致性,本实施例考虑写操作造成的一致性开销。每个写操作会首先广播到其他副本实例上,然后才会指向真正的写操作。如附图6中客户端A向副本实例R5写入一条数据D,首先D会被广播给实例R6和R7,然后才会真正的在副本实例R5上进行修改。
(3)冷实例合并:
附图7给出了冷实例合并过程的示意图。根据步骤(1)计算的冷热信息,被长时间标识为冷的实例将自己的信息报告给控制器,如图7中的实例R2,R4。控制器定期检查冷实例的数量,当冷实例数量超过阈值时,启动一次实例合并流程。控制器首先获取每个实例的当前热度,并按热度之和低于阈值的原则生成合并计划。
如图7中,该合并计划是合并实例R2和R4。首先控制器通知实例R2和R4生成其所保存数据的镜像到磁盘,并将这一过程中的数据更改缓存起来。在数据镜像生成完成后,控制器启动一个新的实例R5,并读取数据镜像和更新缓存文件。在所有的数据完成同步之后,修改所有连接到实例R2和R4的客户端的缓存信息,将其重定向到实例R5,该流程结束。
需要说明的是,本实施例方案适用于处理任何类型的数据存储,可以动态的进行热点的稀释和冷资源的回收;而且针对Redis集群层面,解决的了当请求量过大时Redis集群中的热实例导致性能瓶颈的问题,方案可用在所有支持Redis集群的客户端上,通用性较好。
此外,参照图8,本发明实施例还提出一种Redis集群数据移动装置,所述装置包括:
确定模块10,用于定期计算Redis集群中每个数据分组的热度和每个实例的热度,并标识出热实例和热数据分组;
需要说明的是,参照图2,图2示出了Redis集群的数据分布方式和集群架构。Redis中集群数据通过固定的哈希算法映射到集群中的一个数据分组上;同时数据分组通过用户自定义的策略映射到具体的实例上并通过网络同步该信息;实例则运行在物理节点上。由于齐夫分布,对数据的访问热度是不一的,这会导致集群中部分数据分组的热度超过平均值,使得集群之间热度不均匀,因此需要动态感知的集群数据热度,进行数据的移动和复制,从而平衡集群间各个实例的热度。
需要说明的是,本实施例通过记录Redis集群中每个数据组承载的操作数,从而得到每个数据分组平均每秒被请求访问的次数Pi(i为数据分组编号),并将其记为该数据分组的热度。将每个数据分组的热度信息在集群中同步,并计算出所有数据分组热度的平均值P,并将平均值乘以M作为过热阈值即第一阈值,将平均值P乘以N作为过冷阈值即第四阈值。将热度超过第一阈值的数据分组标记为热数据分组将热度低于第四阈值的数据分组标记为冷数据分组,并保存数据分组的编号。
集群中每个实例通过操作系统周期性获得其对应的CPU占用率,若CPU占用率超过第二阈值J,将其本身标识为热实例;若CPU占用率低于第四阈值K,则将本身标识为冷实例。
数据复制模块20,用于将热实例中的热数据分组按热度排序,并将热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组-实例映射关系;
需要说明的是,本实施例新架构下,实例被分为了三个组,分别为用于存放来自热实例的热数据分组的热实例组(Hot Group,HG),用于存放正常实例中数据分组的普通的Redis集群实例组(Normal Group,NG)和用于存放冷实例中数据分组的冷实例组(ColdGroup,CG)。同时还有一个控制器以控制集群的数据复制和实例合并。
本实施例通过将热实例对应的热数据分组中热度最大的数据分组的编号发送至控制器,以由控制器将所述热数据分组中热度最大的数据分组复制到所述Redis集群的副本实例上,得到所述新的数据分组-实例映射关系,所述副本实例为所述热实例组中的实例。
需要说明的是,本实施例通过动态感知实例热度和数据分组热度,并将热实例对应的热数据分组中热度最大的数据分组进行移动和复制,从而平衡集群间各个实例的热度;在数据热度倾斜度较高时,通过数据复制缓解单实例热度导致性能瓶颈的问题。
更新模块30,用于向客户端发送更新指令以使客户端根据新的数据分组-实例映射关系更新其缓存的集群状态关系。
需要说明的是,本实施例通过源实例向客户端发送更新指令,修改客户端中缓存的数据分组-实例映射关系,将客户端访问重定向至副本实例,重定向之后,客户端下次访问时会直接访问被重定向的副本实例,从而实现热度数据的访问分流。
同时,本方案还将保存所述数据副本的所述副本实例缓存每个写操作到内部buffer;定期将缓存的指令通过网络字节流的形式发送给其他的所述副本实例进行数据同步。
进一步地,所述装置还包括实例合并模块40,用于在冷实例数量超过阈值时,异步执行冷实例合并操作;
相应地,所述更新模块30用于在新实例数据同步完成后,根据新实例修改所述客户端内缓存的集群状态关系。
本发明所述隔离网络下基于区块链的数据引用装置的其他实施例或具有实现方法可参照上述各方法实施例,此处不在赘余。
此外,参照图9,本发明实施例还提出一种Redis集群数据移动设备,包括处理器100、存储有程序指令的存储器200、总线300和通信接口400,处理器100、通信接口400和存储器200通过总线300连接;所述处理器100被配置为在执行所述程序指令时,执行如上实施例所述的Redis集群数据移动方法。
其中,存储器200可能包含高速随机存取存储器(RAM:RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口703(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线300可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。其中,存储器200用于存储程序,处理器100在接收到执行指令后,执行程序,前述本申请实施例任一实施方式揭示的Redis集群数据移动方法程序可以应用于处理器100中,或者由处理器100实现。
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器200,处理器100读取存储器200中的信息,结合其硬件完成上述方法的步骤。
此外,本发明实施例还提出一种存储介质,存储介质上存储有Redis集群数据移动程序,所述Redis集群数据移动程序被处理器执行时实现如上文实施例所述的Redis集群数据移动方法。
由于本存储介质采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,或者网络设备等)执行本发明各个实施例所述的方法。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
需要说明的是,本文中“第一”和“第二”等仅仅用来区分名称相同的实体或操作,并不暗示这些实体或操作之间顺序或关系。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种Redis集群数据移动方法,其特征在于,包括:
定期计算Redis集群中每个数据分组的热度和每个实例的热度,并标识出热实例和热数据分组;
将热实例中的热数据分组按热度排序,并将热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组-实例映射关系;
向客户端发送更新指令以使客户端根据新的数据分组-实例映射关系更新其缓存的集群状态关系。
2.如权利要求1所述的Redis集群数据移动方法,其特征在于,所述定期计算Redis集群中每个数据组的热度和每个实例的热度,并标识出热实例和热数据分组,包括:
获取所述Redis集群中每个数据分组承载的操作数,并根据每个数据分组承载的操作数计算对应的热度;
将热度超过第一阈值的数据分组标记为所述热数据分组;
获取所述Redis集群中每个实例的CPU占用率,并将CPU占用率超过第二阈值的实例标记为所述热实例。
3.如权利要求1所述的Redis集群数据移动方法,其特征在于,所述Redis集群包括控制器、用于存放所述热实例对应的热数据分组的热实例组、用于存放冷实例的冷实例组对应的数据分组和用于存放正常实例对应的数据分组的普通实例组。
4.如权利要求3所述的Redis集群数据移动方法,其特征在于,所述将热实例对应的热数据分组中热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组-实例映射关系,包括:
在所述实例被标记为热实例的时间超过第一时间阈值时,由控制器将所述热数据分组中热度最大的数据分组复制到所述Redis集群的副本实例上,得到所述新的数据分组-实例映射关系,所述副本实例为所述热实例组中的实例。
5.如权利要求3所述的Redis集群数据移动方法,其特征在于,所述向客户端发送更新指令以使客户端根据新的数据分组-实例映射关系更新其缓存的集群状态关系,包括:
所述客户端根据新的数据分组-实例映射关系,将所述客户端访问导向数据副本,所述数据副本为所述复制到Redis集群的副本实例上的数据;
将保存所述数据副本的所述副本实例缓存每个写操作到内部buffer;
定期将缓存的指令通过网络字节流的形式发送给其他的所述副本实例进行数据同步。
6.如权利要求2所述的Redis集群数据移动方法,其特征在于,还包括:
将所述CPU占用率低于第三阈值的实例标记为冷实例;
在冷实例的数量超过数量阈值时,异步执行冷实例合并操作。
7.如权利要求6所述的Redis集群数据移动方法,其特征在于,所述在冷实例的数量超过数量阈值时,对冷实例进行合并,包括:
将待合并的所述冷实例生成其所保存的数据镜像到磁盘,并将所保存的数据缓存至更新缓存文件中;
启动新实例并读取数据镜像和更新缓存文件中的数据;
在新实例数据同步完成后,根据新实例修改所述客户端内缓存的集群状态关系。
8.一种Redis集群数据移动装置,其特征在于,包括:
确定模块,用于定期计算Redis集群中每个数据分组的热度和每个实例的热度,并标识出热实例和热数据分组;
数据复制模块,用于将热实例中的热数据分组按热度排序,并将热度最大的数据分组复制到Redis集群的副本实例上,得到新的数据分组-实例映射关系;
更新模块,用于向客户端发送更新指令以使客户端根据新的数据分组-实例映射关系更新其缓存的集群状态关系。
9.一种Redis集群数据移动设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的Redis集群数据移动程序,所述Redis集群数据移动程序配置用于实现如权利要求1至7中任一项所述的Redis集群数据移动方法。
10.一种存储介质,其特征在于,所述存储介质上存储有Redis集群数据移动程序,所述Redis集群数据移动程序被处理器执行时实现如权利要求1至7中任一项所述的Redis集群数据移动方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111108799.2A CN113867631A (zh) | 2021-09-22 | 2021-09-22 | Redis集群数据移动方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111108799.2A CN113867631A (zh) | 2021-09-22 | 2021-09-22 | Redis集群数据移动方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113867631A true CN113867631A (zh) | 2021-12-31 |
Family
ID=78993125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111108799.2A Pending CN113867631A (zh) | 2021-09-22 | 2021-09-22 | Redis集群数据移动方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113867631A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130151683A1 (en) * | 2011-12-13 | 2013-06-13 | Microsoft Corporation | Load balancing in cluster storage systems |
CN107844269A (zh) * | 2017-10-17 | 2018-03-27 | 华中科技大学 | 一种基于一致性哈希的分层混合存储系统及方法 |
CN110569233A (zh) * | 2019-06-30 | 2019-12-13 | 华为技术有限公司 | 一种热点数据的管理方法、装置及系统 |
CN112947860A (zh) * | 2021-03-03 | 2021-06-11 | 成都信息工程大学 | 一种分布式数据副本的分级存储与调度方法 |
-
2021
- 2021-09-22 CN CN202111108799.2A patent/CN113867631A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130151683A1 (en) * | 2011-12-13 | 2013-06-13 | Microsoft Corporation | Load balancing in cluster storage systems |
CN107844269A (zh) * | 2017-10-17 | 2018-03-27 | 华中科技大学 | 一种基于一致性哈希的分层混合存储系统及方法 |
CN110569233A (zh) * | 2019-06-30 | 2019-12-13 | 华为技术有限公司 | 一种热点数据的管理方法、装置及系统 |
CN112947860A (zh) * | 2021-03-03 | 2021-06-11 | 成都信息工程大学 | 一种分布式数据副本的分级存储与调度方法 |
Non-Patent Citations (1)
Title |
---|
瞿龙俊;李星毅;: "一种基于TwemProxy的HBase索引缓存方案", 信息技术, no. 10, pages 111 - 115 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020063763A1 (zh) | 数据存储方法、装置、系统、服务器、控制节点及介质 | |
US10884926B2 (en) | Method and system for distributed storage using client-side global persistent cache | |
CN110908589B (zh) | 数据文件的处理方法、装置、系统和存储介质 | |
TW201711432A (zh) | 對伺服器進行健康檢查的方法及設備 | |
WO2011107040A2 (zh) | 数据访问处理方法和设备 | |
CN110908965A (zh) | 一种对象存储管理方法、装置、设备及存储介质 | |
WO2022156650A1 (zh) | 访问数据的方法及装置 | |
CN111782707A (zh) | 一种数据查询方法及系统 | |
JP5817558B2 (ja) | 情報処理装置、分散処理システム、キャッシュ管理プログラムおよび分散処理方法 | |
US10664349B2 (en) | Method and device for file storage | |
CN110618974A (zh) | 一种数据存储方法、装置、设备及存储介质 | |
CN113535708A (zh) | 一种数据重删方法、系统、存储介质及设备 | |
WO2015055035A1 (zh) | 一种对元数据对象进行散列的方法及装置 | |
CN114527938A (zh) | 一种基于固态硬盘的数据读取方法、系统、介质及设备 | |
US20190332544A1 (en) | Method, device and computer programme product for storage management | |
CN113794764A (zh) | 服务器集群的请求处理方法、介质和电子设备 | |
CN113867631A (zh) | Redis集群数据移动方法、装置、设备及存储介质 | |
CN111459913B (zh) | 分布式数据库的容量扩展方法、装置及电子设备 | |
WO2016029441A1 (zh) | 一种文件扫描方法及装置 | |
CN110019086B (zh) | 基于分布式文件系统的多副本读取方法、设备及存储介质 | |
CN112130747A (zh) | 分布式对象存储系统及数据读写方法 | |
JP7392168B2 (ja) | Cdnにおけるurlリフレッシュ方法、装置、機器及びcdnノード | |
CN112363671B (zh) | 一种基于融合架构云平台的虚拟机模板镜像存储方法 | |
CN115129728A (zh) | 一种文件校验的方法及装置 | |
CN113411364B (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 |