CN112230853A - 存储容量调整方法、装置、设备及存储介质 - Google Patents
存储容量调整方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112230853A CN112230853A CN202011101186.1A CN202011101186A CN112230853A CN 112230853 A CN112230853 A CN 112230853A CN 202011101186 A CN202011101186 A CN 202011101186A CN 112230853 A CN112230853 A CN 112230853A
- Authority
- CN
- China
- Prior art keywords
- instance
- target
- migration
- server
- data
- 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
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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- 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
本发明公开了一种存储容量调整方法、装置、设备及存储介质,该方法通过在命中实例处于迁移状态,代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器时,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系,实现系统存储容量的调整;在分布式存储系统的数据库底层进行扩/缩操作时,可以将读写访问临时转移到备用储存服务器,而不会影响数据的读写访问,以此解决现有技术通过物理槽来实现数据分布,不能实现备机方案,从而无法实现扩/缩容期间实现数据写入的问题。
Description
技术领域
本发明涉及分布式存储技术领域,尤其涉及一种存储容量调整方法、装置、设备及存储介质。
背景技术
为了实现数据的高效管理,一般采用分布式系统来解决。为了实现海量数据的存储,分布式系统一般采用集群进行缓存。随着数据量的变化,集群的存储容量也需要随之调整(扩/缩容)。然而,现有的分布式系统扩/缩容方法无法实现扩/缩容期间数据的写入,影响系统数据存储效率。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种存储容量调整方法、装置、设备及存储介质,旨在解决现有的分布式系统扩/缩容方法无法在扩/缩容期间实现数据写入的技术问题。
为实现上述目的,本发明提供一种存储容量调整方法,所述存储容量调整方法用于分布式存储系统中的监测服务器,所述分布式存储系统还包括代理服务器、主存储服务器和备用存储服务器,所述主存储服务器包括多个实例,所述多个实例用于存储数据;
所述存储容量调整方法包括:
基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态;其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例,且所述命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器;
在所述命中实例处于迁移状态时,获取所述原有实例中与所述目标逻辑槽对应的目标数据的标识;
基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系;其中,所述目标实例为与所述容量调整需求对应的所述分布式存储系扩容时新增的实例或缩容时剩余的实例。
可选地,所述基于所述容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表的步骤,包括:
基于所述容量调整需求,采用均衡算法生成关于所述代理服务器中目标逻辑槽的迁移计划表。
可选地,所述容量调整需求为扩容需求,所述目标实例为新增的主存储服务器中的实例;所述基于所述容量调整需求,采用均衡算法生成关于所述代理服务器中目标逻辑槽的迁移计划表的步骤,包括:
基于所述扩容需求,获得分配给扩容后实例的逻辑槽的平均数;
基于扩容前的各实例的逻辑槽数量,对扩容前的各实例进行降序排列;
遍历降序排列后的扩容前的各实例,将每个扩容前的实例中超出所述平均数的逻辑槽分配到目标实例中,直到所述扩容前的实例中的逻辑槽数量等于所述平均数,生成关于所述代理服务器中目标逻辑槽的迁移计划表。
可选地,所述容量调整需求为缩容需求,所述目标实例为原有的主存储服务器中的实例;所述基于所述容量调整需求,采用均衡算法生成关于所述代理服务器中目标逻辑槽的迁移计划表的步骤,包括:
基于所述缩容需求,获得分配给缩容后的实例的逻辑槽的平均数;
基于缩容前各实例的逻辑槽数量,对缩容保留的实例进行升序排列;
遍历升序排列后的缩容保留的实例,将缩减的实例中的逻辑槽分配到目标实例中,直到所述缩容保留的实例中的逻辑槽数量等于所述平均数,生成关于所述代理服务器中目标逻辑槽的迁移计划表。
可选地,所述基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例的步骤,包括:
基于所述目标数据的标识,生成原生迁移命令;
基于所述原生迁移命令,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例。
可选地,所述迁移命令中包括多个目标逻辑槽对应的目标数据的迁移计划;所述基于所述迁移命令,将所述目标数据从所述原有实例迁移至所述目标实例的步骤,包括:
基于所述迁移命令,创建任务队列,其中,所述任务队列中包括所述多个目标逻辑槽对应的目标数据的迁移计划;
基于所述任务队列,创建与所述目标逻辑槽数量相同的多个线程;
所述多个线程分别获取所述任务队列中的迁移计划,以将所述多个目标逻辑槽对应的目标数据从所述原有实例迁移至所述目标实例。
可选地,所述分布式存储系统还包括协调服务器,所述协调服务器中储存有所述多个逻辑槽与所述多个实例存在映射关系;
所述基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态的步骤,包括:
基于所述容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表;
将所述迁移计划表存储到所述协调服务器中,以使所述代理服务器从所述协调服务器中获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态。
此外,为实现上述目的,本发明还提出一种存储容量调整装置,所述存储容量调整方法用于分布式存储系统中的监测服务器,所述分布式存储系统还包括代理服务器、主存储服务器和备用存储服务器,所述主存储服务器包括多个实例,所述多个实例用于存储数据;
所述存储容量调整装置包括:
计划生成模块,用于基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态;其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例,且所述命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器;
标识获取模块,用于在所述命中实例处于迁移状态时,获取所述原有实例中与所述目标逻辑槽对应的目标数据的标识;
数据迁移模块,用于基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系;其中,所述目标实例为与所述容量调整需求对应的所述分布式存储系扩容时新增的实例或缩容时剩余的实例。
此外,为实现上述目的,本发明还提供一种存储容量调整设备,所述存储容量调整设备包括处理器,存储器以及存储在所述存储器中的存储容量调整程序,所述存储容量调整程序被所述处理器运行时,实现如上所述的存储容量调整方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有存储容量调整程序,所述存储容量调整程序被处理器运行时实现如上所述存储容量调整方法的步骤。
本发明所能实现的有益效果。
本发明实施例提出的一种存储容量调整方法、装置、设备及存储介质,所述存储容量调整方法用于分布式存储系统中的监测服务器,所述分布式存储系统还包括代理服务器、主存储服务器和备用存储服务器,所述主存储服务器包括多个实例,所述多个实例用于存储数据;所述存储容量调整方法包括:基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态;其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例,且所述命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器;然后在所述命中实例处于迁移状态时,获取所述原有实例中与所述目标逻辑槽对应的目标数据的标识;再基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系;其中,所述目标实例为与所述容量调整需求对应的所述分布式存储系扩容时新增的实例或缩容时剩余的实例,从而实现分布式存储系统的扩/缩容。由此可见,由于代理服务器中通过逻辑槽来实现数据分布,而并没有对数据库底层进行分片,因此,在分布式存储系统的数据库底层进行扩/缩操作时,可以将读写访问临时转移到备用储存服务器,而不会影响数据的读写访问,以此解决现有技术通过物理槽来实现数据分布,不能实现备机方案,从而无法实现扩/缩容期间实现数据写入的问题;继而在完成扩/缩操作后,可以将备用储存服务器临时读写的数据同步到集群,保证分布式存储系统的数据一致性。
附图说明
图1为本发明实施例的分布式存储系统的结构示意图;
图2为本发明实施例中存储容量调整方法流程示意图;
图3为本发明实施例中扩容时生成计划表的方法的流程示意图;
图4为本发明实施例中缩容时生成计划表的方法的流程示意图;
图5为本发明实施例中存储容量调整方法执行序列图;
图6为本发明实施例的存储容量调整装置的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明实施例的主要解决方案是:采用一种存储容量调整方法,该方法基于分布式存储系统中的监测服务器,所述分布式存储系统还包括代理服务器、主存储服务器和备用存储服务器,所述主存储服务器包括多个实例,所述多个实例用于存储数据;基于该分布式储存系统,该方法通过获取容量调整需求;并基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态;其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例,且所述命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器;然后在所述命中实例处于迁移状态时,获取所述原有实例中与所述目标逻辑槽对应的目标数据的标识;再基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系;其中,所述目标实例为与所述容量调整需求对应的所述分布式存储系扩容时新增的实例或缩容时剩余的实例,从而实现分布式存储系统的扩/缩容。
由于现有技术通过物理槽来实现数据分布,不能实现备机方案,因此,无法实现扩/缩容期间实现数据写入。
本发明提供一种解决方案,在一种存储容量调整方法中,由于代理服务器中通过逻辑槽来实现数据分布,而并没有对数据库底层进行分片,因此,在分布式存储系统的数据库底层进行扩/缩操作时,可以将读写访问临时转移到备用储存服务器,而不会影响数据的读写访问,以此解决现有技术通过物理槽来实现数据分布,不能实现备机方案,从而无法实现扩/缩容期间实现数据写入的问题;继而在完成扩/缩操作后,可以将备用储存服务器临时读写的数据同步到集群,保证分布式存储系统的数据一致性。
需要说明的是,由于本申请实施例的存储容量调整方法是基于分布式存储系统实现的,因此,在对本申请的存储容量调整方法进行解释说明之前,首先将分布式存储系统进行解释说明。
参照图1,本申请实施例提供一种分布式存储系统,所述分布式存储系统包括服务器集群和代理服务器,所述服务器集群包括主存储服务器和备用存储服务器,所述主存储服务器包括多个实例,所述多个实例用于存储数据;所述代理服务器中配置有多个逻辑槽,所述多个逻辑槽与所述多个实例存在映射关系。
具体的,在本实施例中,代理服务器为Redis代理服务器;主存储服务器为Redis服务器,备用存储服务器为LMDB服务器,因此,本实施例中的实例为Redis实例,Redis实例用于存储目标数据。
所述Redis代理服务器用于将所述Redis实例中的目标数据生产到发布订阅消息系统中;所述LMDB服务器中的LMDB实例用于消费所述发布订阅消息系统中的目标数据,以使所述Redis服务器与所述LMDB服务器存储有相同的目标数据;
所述Redis代理服务器还用于接收数据读取请求,基于所述数据读取请求中的标识,读取所述Redis实例中的目标数据或所述LMDB实例中的目标数据。
需要说明的是,Redis的全称是Remote Dictionary Server,译为远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value(标识-值)数据库,并提供多种语言的API。具体的,redis支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。在本实施例中,Redis服务器是指安装并配置了Redis软件的用于存储数据的服务器。
LMDB的全称是Lightning Memory-Mapped Database,译为:快如闪电的内存映射数据库,LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现;数据库单文件还能减少数据集复制/传输过程的开销。在本实施例中,LMDB服务器是指安装并配置了LMDB软件的用于存储数据的服务器,作为Redis服务器的备机。
由此可见,由于Redis和LMDB都是基于内存的数据结构存储器,其通过调用内存来实现数据库的功能。因此,同等条件下,在本实施例中,相对于Redis,选用LMDB对内存空间的需求相对较少,相应的其对硬件的配置需求相对较低,部署的硬件成本即相对较低。
此外,Redis代理服务器是指安装和配置了RedisProxy程序的服务器,RedisProxy是Redis方案中的代理程序;RedisProxy支持多种业务语句接入方式,命令方式跟Redis语法命令无缝兼容,向量模式提供二进制数据/自然语句输入。
在具体实施过程中,本实施例中的存储分布式存储系统中,服务器集群与Redis代理服务器通信连接,以实现数据的读写。为了实现扩大数据存储容量的同时实现高可用,服务器集群可以包括多个Redis组,每个Redis组包括一个Redis服务器和一个LMDB服务器,Redis服务器作为主机,LMDB服务器作为备机。
此外,为了避免代理点的单点问题,Redis代理服务器也可以设置多个,分别与多个Redis组通信连接。
请参见图1,该存储分布式存储系统包括:3个Redis代理服务器,3个Redis组,每个Redis组包括一个Redis服务器和一个LMDB服务器。其中,每个Redis代理服务器都分别与每个Redis组建立长链接,长链接可降低因频繁链接带来的耗时。
在一种实施例中,在Redis代理服务器跟Redis组之间可以建立长链接池机制,具体的,可以在Redis代理服务器中添加长链接管理程序,以执行以下步骤:
监测到缓存数据读写请求时,获取链接池中的空闲链接;
通过所述空闲链接发送数据读取/写入请求至Redis服务器,以供所述Redis服务器根据所述数据读取/写入请求执行目标数据读写操作;
若检测到读写操作失败,则判定所述空闲链接为无效链接;
若检测到所述空闲链接为无效链接,则发送无效通知至链接池管理器,以供链接池管理器对所述空闲链接启动链接回收机制。
与现有技术中采用定期对链接池中的无效链接进行回收的技术相比,本实施例中的存储分布式存储系统通过在检测到空闲链接为无效链接时立刻发送无效通知至链接池管理器,以供链接池管理器及时对空闲链接启动链接回收机制,克服了现有技术中无法及时回收无效链接的技术缺陷,从而避免无效链接占用链接池资源。
此外,3个Redis代理服务器还可以连接用户端(在本实施例中也成为业务端),在一种场景中,该存储分布式存储系统用于对画像数据进行在线投放,则用户端可以开发一套软件,方便画像数据的导入以及将从服务器集群中读取的数据输出给广告投放软件DSP(Demand Side Platform,需求方平台),以便于DSP投放出去。需要说明的是,Redis代理服务器与用户端之间也可以建立长链接。
进一步的,Redis服务器可以包括多个Redis实例,LMDB服务器可以包括多个LMDB实例,多个Redis实例用于存储目标数据。其中,存储的方式可以是缓存,不同于磁盘存储的是,缓存可以快速的读写,使得数据投放更快速。
所述Redis代理服务器用于将所述Redis实例中的目标数据生产到发布订阅消息系统中;所述LMDB服务器中的LMDB实例用于消费所述发布订阅消息系统中的目标数据,以使所述Redis服务器与所述LMDB服务器存储有相同的目标数据。在这种情况下,Redis服务器作为主机,存储目标数据,并供用户端通过Redis代理服务器读取目标数据;LMDB服务器作为备机,在主机中的Redis实例下线时,供用户端通过Redis代理服务器读取目标数据。
具体的,发布订阅消息系统可以是kafka,安装有kafka软件的kafka服务器与Redis代理服务器以及LMDB服务器通信连接,在Redis实例正常情况下,用户端读写数据都通过Redis代理服务器读写主机Redis实例,同时Redis代理服务器会作为生产者,把写命令数据生产到Kafka的lmdbtopic主题上;LMDB代理服务器作为消费者,准实时消费Kafka里面的数据,保证主备之间数据的最终一致性,在更低部署成本的情况下,保证该分布式系统的高可用性。
此外,Redis实例下线情况下,Redis代理服务器检查到失败的实例启动备机方案,下线实例的读命令数据会切换到备机LMDB代理服务器进行读取,下线实例的写命令数据会作为生产数据多生产一份到Kafka的failtopic主题上,failtopic会在实例上线后进行消费,保证下线实例期间把写数据缓存下来,避免丢失和避免主备之间的不一致。
当Redis实例恢复正常后,通过调用组件感知到实例恢复并且作为消费者开始消费failtopic的数据,并且直接写入到Redis实例,当failtopic中数据都消费完成后,就会把读写请求从备机切换到主机,提供正常高性能的服务。
此外,在本实施例中,所述Redis代理服务器中还可以配置有多个虚拟组以及多个逻辑槽,所述多个逻辑槽与所述多个虚拟组存在映射关系,所述多个虚拟组与所述Redis实例和/或LMDB实例存在映射关系,从而实现多个逻辑槽与所述多个Redis实例存在映射关系;
所述存储分布式存储系统还包括zookeeper服务器,所述zookeeper服务器中存储有映射关系表,所述映射关系表中包括所述多个逻辑槽与所述多个虚拟组存在映射关系,以及所述多个虚拟组与所述Redis实例和/或LMDB实例存在映射关系。
在具体实施过程中,slot(槽)在本实施例为逻辑分片获得的,因此,称为逻辑槽;根据数据中的标识key,利用CRC(循环冗余校验)算法进行逻辑分片,获得1024个逻辑槽,即slot0、slot1、slot2...slot1023。
根据业务端设置有表名规则,即:AppName.TableName对映着一个实例,静态配置着多个slot逻辑槽(app.table->slot),不同slot也映射到对应的group虚拟组上(slot->group)关系,虚拟组group对应着一主多从实例,三者关系保存在zookeeper服务器上;
在对Redis服务器进行数据读写时,通过AppName.TablName得到所有的slot关系;
基于crc32(key)%1024得到落在的slotid;
查找slotid对应虚拟组groupid上,并且得到group所对应的实例信息。
作为一种可选的实施方式,所述Redis代理服务器还用于接收数据写入请求,基于所述数据写入请求中的标识获得目标逻辑槽,基于所述映射关系表获得与所述目标逻辑槽存在映射关系的目标虚拟组,并将所述数据写入请求中的目标数据存入与所述目标虚拟组存在映射关系的Redis实例中。
举例来说,在业务端有关于画像数据devicemd5:1101(key:value格式)的数据写入请求时,Redis代理服务器收到数据写入请求后,会对请求中key使用CRC32算法并且对1024取模,计算得到slotid,该slotid即为逻辑槽的对应ID;然后根据slotid查找到对应的虚拟组groupid,并跟据其映射关系表得到Redis实例信息(IP和Port),把数据devicemd5:1101写入到Redis实例中。
作为另一种可选的实施方式,所述Redis代理服务器还用于接收数据读取请求,基于所述数据读取请求中的标识对应的值获得对应的目标逻辑槽,基于所述映射关系表获得与所述目标逻辑槽存在映射关系的目标虚拟组,并从所述Redis服务器中读取与所述目标虚拟组存在映射关系的Redis实例中的目标数据或从所述LMDB服务器中读取与所述目标虚拟组存在映射关系的LMDB实例中的目标数据。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限制,本领域的技术人员在实际应用中可以基于需要进行设置,此处不做限制。
通过上述描述不难发现,由于本实施例中的分布式存储系统,在Redis代理服务器中进行逻辑分片,并在zookeeper服务器中存储映射关系表,以实现与集群的低耦合设计,即可以匹配集群中各种版本的Redis软件;相对于现有的codis方案,根据目前版本的codis代码显示,codis并未采用逻辑分片,而是在数据底层进行分片,且目前的codis版本较低,已经不能兼容高版本的redis数据库,因此,本实施例的分布式系统不仅实现了低成本高可用,其数据底层Redis服务器兼容原生任何版本的Redis,支持Redis版本升级。
请参见图2,在前述分布式存储系统的基础上,本申请的实施例提供一种存储容量调整方法,所述存储容量调整方法包括:
S10、基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态;其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例,且所述命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器;
S20、在所述命中实例处于迁移状态时,获取所述原有实例中与所述目标逻辑槽对应的目标数据的标识;
S30、基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系;其中,所述目标实例为与所述容量调整需求对应的所述分布式存储系扩容时新增的实例或缩容时剩余的实例。
需要说明的是,本实施例中,存储容量调整是指对上述实施例中的分布式存储系统进行扩容或缩容,即,对服务器集群增加或减少实例,从硬件上来说,可以体现为增加或减少主存储服务器。
具体来说,本实施例的方法可以由一个程序进程来完成,该程序进程可以安装在与代理服务器不同的主机上,并可以与服务器集群建立通信连接。下面就以该程序进程为执行主体,来描述本实施例的方法执行过程。
首先,获取容量调整需求。
在具体实施过程中,存储容量调整是指对上述实施例中的分布式存储系统进行扩容或缩容,容量调整需求可以从运维系统中获取。运维系统的功能是:当业务数据增长/减少,通过该工具/平台触发Redis实例扩/缩容指令。
接下来,执行S10,基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态;
其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例,且所述命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器。
在具体实施过程中,迁移计划表是指关于逻辑槽的迁移计划表,目标逻辑槽是指容量调整需求中涉及目标数据迁移所对应的逻辑槽。需要说明的是,本实施例中,代理服务器中配置有多个逻辑槽,所述多个逻辑槽与所述多个实例存在映射关系。因此,要增加实例或减少实例,都需要进行重新分片,对逻辑槽进行迁移,以重新建立映射关系,实现数据的读写。
此外,迁移计划表中包括命中实例,其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例。为了实现数据迁移期间的可读可写,代理服务器在获取到所述迁移计划表后,可以设置所述迁移计划表中的命中实例为迁移状态,命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器。与现有技术相比,由于代理服务器中通过逻辑槽来实现数据分布,而并没有对数据库底层进行分片,因此,在分布式存储系统的数据库底层进行扩/缩操作时,可以将读写访问临时转移到备用储存服务器,而不会影响数据的读写访问,以此解决现有技术通过物理槽来实现数据分布,不能实现备机方案,从而无法实现扩/缩容期间实现数据写入的问题;继而在完成扩/缩操作后,可以将备用储存服务器临时读写的数据同步到集群,保证分布式存储系统的数据一致性。
因此,在数据迁移前,需要生成关于目标逻辑槽的迁移计划表。
作为一种可选地实施例,所述基于所述容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表的步骤,包括:
基于所述容量调整需求,采用均衡算法生成关于所述代理服务器中目标逻辑槽的迁移计划表。
在具体实施过程中,采用均衡算法可使得迁移后的逻辑槽的分配更均衡,从而使得扩/缩容后的分布式存储系统读写性能更稳定。
请参见图3,作为一种可选地实施例,当所述容量调整需求为扩容需求,所述目标实例为新增的主存储服务器中的实例;所述基于所述容量调整需求,采用均衡算法生成关于所述代理服务器中目标逻辑槽的迁移计划表的步骤,包括:
S211、基于所述扩容需求,获得分配给扩容后实例的逻辑槽的平均数;
S212、基于扩容前的各实例的逻辑槽数量,对扩容前的各实例进行降序排列;
S213、遍历降序排列后的扩容前的各实例,将每个扩容前的实例中超出所述平均数的逻辑槽分配到目标实例中,直到所述扩容前的实例中的逻辑槽数量等于所述平均数,生成关于所述代理服务器中目标逻辑槽的迁移计划表。
在具体实施过程中,当所述容量调整需求为扩容需求,所述目标实例为新增的主存储服务器中的实例,此时,需要将现有的部分逻辑槽分配到映射新增的实例,因此,需要重新进行逻辑槽的分配。具体的,对排序后的实例根据逻辑槽数量依次按平均数进行分配,保证分配后的逻辑槽的均衡。
请参见图4,作为另一种可选地实施例,当所述容量调整需求为缩容需求,所述目标实例为原有的主存储服务器中的实例;所述基于所述容量调整需求,采用均衡算法生成关于所述代理服务器中目标逻辑槽的迁移计划表的步骤,包括:
S221、基于所述缩容需求,获得分配给缩容后的实例的逻辑槽的平均数;
S222、基于缩容前各实例的逻辑槽数量,对缩容保留的实例进行升序排列;
S223、遍历升序排列后的缩容保留的实例,将缩减的实例中的逻辑槽分配到目标实例中,直到所述缩容保留的实例中的逻辑槽数量等于所述平均数,生成关于所述代理服务器中目标逻辑槽的迁移计划表。
在具体实施过程中,当所述容量调整需求为缩容需求,所述目标实例为原有的主存储服务器中的实例,此时,需要将缩减的实例中的逻辑槽映射到目标实例中,因此,需要重新进行逻辑槽的分配。具体的,对排序后的实例根据逻辑槽数量依次按平均数进行分配,保证分配后的逻辑槽的均衡。
接下来,执行S20,在所述命中实例处于迁移状态时,获取所述原有实例中与所述目标逻辑槽对应的目标数据的标识。
在具体实施过程中,对目标数据进行迁移之前,为了后续生成迁移命令,对目标数据进行迁移,首先需要对实例进行扫描,以获得目标数据的标识。且,在此过程中,所述命中实例处于迁移状态,实现可读可写。
接下来,执行S30,基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系;其中,所述目标实例为与所述容量调整需求对应的所述分布式存储系扩容时新增的实例或缩容时剩余的实例。
在具体实施过程中,需要首先基于所述目标数据的标识,生成迁移命令。作为一种可选的实施例,所述基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例的步骤,包括:
基于所述目标数据的标识,生成原生迁移命令;
基于所述原生迁移命令,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例。
其中,原生迁移命令为原生的Migrate迁移命令。在具体实施过程中,原生的Migrate迁移命令可以实现批量迁移,提高数据迁移效率,进而提高扩/缩容的效率。
在具体实施过程中,首先对目标数据进行迁移,作为一种可选的实施例,所述迁移命令中包括多个目标逻辑槽对应的目标数据的迁移计划;所述基于所述迁移命令,将所述目标数据从所述原有实例迁移至所述目标实例的步骤,包括:
基于所述迁移命令,创建任务队列,其中,所述任务队列中包括所述多个目标逻辑槽对应的目标数据的迁移计划;
基于所述任务队列,创建与所述目标逻辑槽数量相同的多个线程;
所述多个线程分别获取所述任务队列中的迁移计划,以将所述多个目标逻辑槽对应的目标数据从所述原有实例迁移至所述目标实例。
可以理解的是,在具体实施过程中,当迁移命令中包括多个目标逻辑槽对应的目标数据的迁移计划时,可以创建共享内存的任务队列,把每个目标逻辑槽对应的目标数据的迁移计划当作一个任务放到队列中,充分利用CPU核数,创建多个线程,每个线程去获取队列中的任务,将所述多个目标逻辑槽对应的目标数据从所述原有实例迁移至所述目标实例,实现并发迁移,提高迁移速度。
此外,作为一种可选的实施例,在前述分布式储存系统的基础上,所述分布式存储系统还包括协调服务器,所述协调服务器中储存有所述多个逻辑槽与所述多个实例存在映射关系;
所述基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态的步骤,包括:
基于所述容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表;
将所述迁移计划表存储到所述协调服务器中,以使所述代理服务器从所述协调服务器中获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态。
在具体实施过程中,本实施例中的协调服务器可以是Zookeeper,用于保存迁移计划表、逻辑槽和实例状态信息。
请参见图5,为本实施例中存储容量调整方法执行序列图,其中,OPS:运维系统,当业务数据增长/减少,通过该工具/平台触发Redis实例扩/缩容指令;
RedisGuard:程序进程,用于在监听到扩/缩容需求后,按照规则算法生成逻辑槽迁移计划表,并且把迁移计划表更新到Zookeeper中;
Zookeeper:用于保存迁移计划表、逻辑槽、实例状态信息;
RedisProxy:代理服务器,用于当监听到迁移计划表后,设置实例的迁移状态,例如RedisA为迁移状态时,命中该实例的数据会由代理RedisProxy路由到LMDB进行读写访问,而不请求RedisA;直到数据迁移完成后,RedisA才更新为正常状态对RedisProxy提供访问;
RedisA:数据迁出的实例;
RedisC:数据迁入的实例;
LMDB:内存映射数据库,内存+SSD存储,在本实施例中也称为备用储存服务器,提供系统异常或者迁移时作为备机使用。
以上便是利用本实施例的存储容量调整方法的过程。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限制,本领域的技术人员在实际应用中可以基于需要进行设置,此处不做限制。
通过上述描述不难发现,由于代理服务器中通过逻辑槽来实现数据分布,而并没有对数据库底层进行分片,因此,在分布式存储系统的数据库底层进行扩/缩操作时,可以将读写访问临时转移到备用储存服务器,而不会影响数据的读写访问,以此解决现有技术通过物理槽来实现数据分布,不能实现备机方案,从而无法实现扩/缩容期间实现数据写入的问题;继而在完成扩/缩操作后,可以将备用储存服务器临时读写的数据同步到集群,保证分布式存储系统的数据一致性。
此外,本发明实施例还提出一种计算机存储介质,所述计算机存储介质上存储有存储容量调整程序,所述存储容量调整程序被处理器运行时实现如上所述存储容量调整方法的步骤。
请参见图6,基于与前述实施例相同的发明构思,本申请的实施例还提供一种存储容量调整装置,所述存储容量调整装置用于分布式存储系统,所述分布式存储系统包括服务器集群和代理服务器,所述服务器集群包括主存储服务器和备用存储服务器,所述主存储服务器包括多个实例,所述多个实例用于存储数据;所述代理服务器中配置有多个逻辑槽,所述多个逻辑槽与所述多个实例存在映射关系;
所述存储容量调整装置包括:
计划生成模块10,用于基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态;其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例,且所述命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器;
标识获取模块20,用于在所述命中实例处于迁移状态时,获取所述原有实例中与所述目标逻辑槽对应的目标数据的标识;
数据迁移模块30,用于基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系;其中,所述目标实例为与所述容量调整需求对应的所述分布式存储系扩容时新增的实例或缩容时剩余的实例。
需要说明的是,本实施中的存储容量调整装置与前述实施例中的存储容量调整方法一一对应,因此,其各种实施方式也可以参照前述实施例中实施方式,这里不再赘述。
基于上述实施例中的分布式存储系统,本申请的实施例还提供一种分布式存储系统的数据同步方法。在本实施中,分布式存储系统在前述实施例的基础上,还包括监测服务器、协调服务器和发布订阅消息系统。
具体的,监测服务器一方面与主存储服务器连接,以监测主存储服务器中实例的状态;另一方面与发布订阅消息系统连接,以消费其中的数据;同时,与协调服务器连接,以存储实例的状态信息。代理服务器与与协调服务器连接,以读取其中的实例状态信息;发布订阅消息系统还与代理服务器和备用存储服务器连接,以接收代理服务器的数据写入,并供备用存储服务器消费其中的数据。
本实施例的分布式存储系统的数据同步方法包括:
监测所述主存储服务器中实例的状态;
若监测到所述主存储服务器中的目标实例为下线状态,生成所述目标实例的下线状态信息,以使所述代理服务器在读取到所述下线状态信息后,将对所述目标实例的读写访问路径切换到所述备用存储服务器;其中,在所述目标实例的读写访问路径切换到所述备用存储服务器期间,所述代理服务器将目标数据分别写入所述备用存储服务器和发布订阅消息系统中;
在监测到所述目标实例从下线状态恢复为上线状态后,消费所述发布订阅消息系统中的目标数据,并将所述发布订阅消息系统中的目标数据写入处于上线状态的所述目标实例中,以使所述主存储服务器与所述备用存储服务器中的数据同步。
需要说明的是,由于实例会存在上线和下线状态,在上线状态时为正常状态,可正常进行数据读写;当实例处于下线状态,则不能进行数据读写,因此,会存在实例中数据不同步的情况。本实施例的数据同步方法可针对实例状态变化导致的数据不同步,而对各实例中的数据实现同步。
此外,本实施中的方法执行主体可以是监测服务器。
首先,执行监测所述主存储服务器中实例的状态。
在具体实施过程中,实例的状态是指主存储服务器中各实例处于上线,还是下线状态。由于数据不同步是因为实例的状态变化导致,因此,为了进行数据同步,首先要监测主存储服务器中实例的状态。
在一种实施例中,所述监测所述主存储服务器中实例的状态的步骤,包括:
按照预设时间间隔周期性检测所述主存储服务器中实例的网络连接情况;
若所述实例至少连续三次网络连接失败,则判断所述实例为下线状态。
在具体实施过程中,网络连接可以是ping命令连接,ping是Windows、Unix和Linux系统下的一个命令,ping也属于一个通信协议,是TCP/IP协议的一部分,利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。因此,可以通过ping连接来检测实例是否处于上线状态,即如果不能与实例进行网络连接,则表示该实例下线。
具体的,由于一次ping连接失败,可能只是偶然的网络掉线导致的暂时性的ping连接失败,因此,在本实施例中,若所述实例至少连续三次ping连接失败,则判断所述实例为下线状态。
进一步的,在若所述实例至少连续三次ping连接失败,则判断所述实例为下线状态的步骤之后,所述方法还包括:
在所述实例处于下线状态时,若检测到所述实例至少一次ping连接成功,则判断所述目标实例从下线状态恢复为上线状态。
在具体实施过程中,一次ping连接成功则可代表网络连通,此时,实例必然处于上线状态。
接下来,执行若监测到所述主存储服务器中的目标实例为下线状态,生成所述目标实例的下线状态信息,以使所述代理服务器在读取到所述下线状态信息后,将对所述目标实例的读写访问路径切换到所述备用存储服务器;其中,在所述目标实例的读写访问路径切换到所述备用存储服务器期间,所述代理服务器将目标数据分别写入所述备用存储服务器和发布订阅消息系统中。
需要说明的是,目标实例为主存储服务器中的实例。正常情况下,实例都处于上线状态,而当监测服务器监测到所述主存储服务器中的目标实例为下线状态时,生成所述目标实例的下线状态信息。
具体的,所述分布式存储系统还可以包括协调服务器;此时,可以将所述下线状态信息存储到所述协调服务器中,则代理服务器可从所述协调服务器中读取到该下线状态信息,确定目标实例处于下线状态,此时,将对该目标实例的读写访问路径切换到备用存储服务器。在目标实例的读写访问路径切换到所述备用存储服务器期间,所述代理服务器将目标数据分别写入所述备用存储服务器和发布订阅消息系统中。
其中,将目标数据写入所述备用存储服务器是为了保证分布式存储系统在目标实例下线时,将备用存储服务器作为备机,也能正常写入数据;而将目标数据写入发布订阅消息系统中,是为了后续在目标实例上线后,将目标数据补入目标实例中,以保证主存储服务器与备用存储服务器中有同步的数据。
因此,接下来,执行在监测到所述目标实例从下线状态恢复为上线状态后,消费所述发布订阅消息系统中的目标数据,并将所述发布订阅消息系统中的目标数据写入处于上线状态的所述目标实例中,以使所述主存储服务器与所述备用存储服务器中的数据同步。
在具体实施过程中,在监测到目标实例下线后,持续对目标实例的状态进行监测,监测服务器在监测到所述目标实例从下线状态恢复为上线状态后,消费所述发布订阅消息系统中的目标数据,并将所述发布订阅消息系统中的目标数据写入处于上线状态的所述目标实例中,以使所述主存储服务器与所述备用存储服务器中的数据同步。
具体的,由于发布订阅消息系统中的目标数据也同步存储到备用存储服务器中,因此,将所述发布订阅消息系统中的目标数据写入处于上线状态的所述目标实例中,可以使所述主存储服务器与所述备用存储服务器中的数据同步。
作为一种实施例,所述监测所述主存储服务器中的实例状态的步骤之后,所述方法还包括:
若监测到所述主存储服务器中的目标实例为上线状态,生成所述目标实例的上线状态信息,以使所述代理服务器在读取到所述上线状态信息后,将所述目标实例中的目标数据发送到所述发布订阅消息系统中;
其中,所述备用存储服务器与发布订阅消息系统存在订阅关系,以使所述备用存储服务器消费所述发布订阅消息系统中的目标数据,同步所述主存储服务器与所述备用存储服务器中的数据。
此外,在一种实施例中,还提供一种存储容量调整设备,所述存储容量调整设备包括处理器,存储器以及存储在所述存储器中的存储容量调整程序,所述存储容量调整程序被所述处理器运行时,实现如上所述的存储容量调整方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台多媒体终端设备(可以是手机,计算机,电视接收机,或者网络设备等)执行本发明各个实施例所述的方法
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种存储容量调整方法,其特征在于,所述存储容量调整方法用于分布式存储系统中的监测服务器,所述分布式存储系统还包括代理服务器、主存储服务器和备用存储服务器,所述主存储服务器包括多个实例,所述多个实例用于存储数据;
所述存储容量调整方法包括:
基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态;其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例,且所述命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器;
在所述命中实例处于迁移状态时,获取所述原有实例中与所述目标逻辑槽对应的目标数据的标识;
基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系;其中,所述目标实例为与所述容量调整需求对应的所述分布式存储系扩容时新增的实例或缩容时剩余的实例。
2.如权利要求1所述的存储容量调整方法,其特征在于,所述基于所述容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表的步骤,包括:
基于所述容量调整需求,采用均衡算法生成关于所述代理服务器中目标逻辑槽的迁移计划表。
3.如权利要求2所述的存储容量调整方法,其特征在于,所述容量调整需求为扩容需求,所述目标实例为新增的主存储服务器中的实例;所述基于所述容量调整需求,采用均衡算法生成关于所述代理服务器中目标逻辑槽的迁移计划表的步骤,包括:
基于所述扩容需求,获得分配给扩容后实例的逻辑槽的平均数;
基于扩容前的各实例的逻辑槽数量,对扩容前的各实例进行降序排列;
遍历降序排列后的扩容前的各实例,将每个扩容前的实例中超出所述平均数的逻辑槽分配到目标实例中,直到所述扩容前的实例中的逻辑槽数量等于所述平均数,生成关于所述代理服务器中目标逻辑槽的迁移计划表。
4.如权利要求2所述的存储容量调整方法,其特征在于,所述容量调整需求为缩容需求,所述目标实例为原有的主存储服务器中的实例;所述基于所述容量调整需求,采用均衡算法生成关于所述代理服务器中目标逻辑槽的迁移计划表的步骤,包括:
基于所述缩容需求,获得分配给缩容后的实例的逻辑槽的平均数;
基于缩容前各实例的逻辑槽数量,对缩容保留的实例进行升序排列;
遍历升序排列后的缩容保留的实例,将缩减的实例中的逻辑槽分配到目标实例中,直到所述缩容保留的实例中的逻辑槽数量等于所述平均数,生成关于所述代理服务器中目标逻辑槽的迁移计划表。
5.如权利要求1所述的存储容量调整方法,其特征在于,所述基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例的步骤,包括:
基于所述目标数据的标识,生成原生迁移命令;
基于所述原生迁移命令,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例。
6.如权利要求5所述的存储容量调整方法,其特征在于,所述迁移命令中包括多个目标逻辑槽对应的目标数据的迁移计划;所述基于所述迁移命令,将所述目标数据从所述原有实例迁移至所述目标实例的步骤,包括:
基于所述迁移命令,创建任务队列,其中,所述任务队列中包括所述多个目标逻辑槽对应的目标数据的迁移计划;
基于所述任务队列,创建与所述目标逻辑槽数量相同的多个线程;
所述多个线程分别获取所述任务队列中的迁移计划,以将所述多个目标逻辑槽对应的目标数据从所述原有实例迁移至所述目标实例。
7.如权利要求1所述的存储容量调整方法,其特征在于,所述分布式存储系统还包括协调服务器,所述协调服务器中储存有所述多个逻辑槽与所述多个实例存在映射关系;
所述基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态的步骤,包括:
基于所述容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表;
将所述迁移计划表存储到所述协调服务器中,以使所述代理服务器从所述协调服务器中获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态。
8.一种存储容量调整装置,其特征在于,所述存储容量调整方法用于分布式存储系统中的监测服务器,所述分布式存储系统还包括代理服务器、主存储服务器和备用存储服务器,所述主存储服务器包括多个实例,所述多个实例用于存储数据;
所述存储容量调整装置包括:
计划生成模块,用于基于获取到的容量调整需求,生成关于所述代理服务器中目标逻辑槽的迁移计划表,以使所述代理服务器在获取到所述迁移计划表后,设置所述迁移计划表中的命中实例为迁移状态;其中,所述命中实例包括所述目标逻辑槽迁移前映射的原有实例以及所述目标逻辑槽迁移后映射的目标实例,且所述命中实例处于迁移状态时,所述代理服务器对所述命中实例中数据的读写访问路径转移到所述备用存储服务器;
标识获取模块,用于在所述命中实例处于迁移状态时,获取所述原有实例中与所述目标逻辑槽对应的目标数据的标识;
数据迁移模块,用于基于所述目标数据的标识,将所述目标数据从所述原有实例迁移至所述目标实例,并将所述目标逻辑槽与所述原有实例的映射关系迁移到所述目标实例,以使所述目标逻辑槽与所述目标实例存在映射关系;其中,所述目标实例为与所述容量调整需求对应的所述分布式存储系扩容时新增的实例或缩容时剩余的实例。
9.一种存储容量调整设备,其特征在于,所述存储容量调整设备包括处理器,存储器以及存储在所述存储器中的存储容量调整程序,所述存储容量调整程序被处理器运行时实现如权利要求1-7中任一项所述存储容量调整方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有存储容量调整程序,所述存储容量调整程序被处理器运行时实现如权利要求1-7中任一项所述存储容量调整方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011101186.1A CN112230853A (zh) | 2020-10-14 | 2020-10-14 | 存储容量调整方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011101186.1A CN112230853A (zh) | 2020-10-14 | 2020-10-14 | 存储容量调整方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112230853A true CN112230853A (zh) | 2021-01-15 |
Family
ID=74113724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011101186.1A Pending CN112230853A (zh) | 2020-10-14 | 2020-10-14 | 存储容量调整方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112230853A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860720A (zh) * | 2021-03-09 | 2021-05-28 | 中国电子系统技术有限公司 | 一种存储容量的更新方法以及装置 |
CN113364806A (zh) * | 2021-06-30 | 2021-09-07 | 深圳前海微众银行股份有限公司 | 一种服务接口迁移的校验方法及装置 |
CN113515502A (zh) * | 2021-07-14 | 2021-10-19 | 重庆度小满优扬科技有限公司 | 数据迁移方法、装置、设备以及存储介质 |
-
2020
- 2020-10-14 CN CN202011101186.1A patent/CN112230853A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860720A (zh) * | 2021-03-09 | 2021-05-28 | 中国电子系统技术有限公司 | 一种存储容量的更新方法以及装置 |
CN113364806A (zh) * | 2021-06-30 | 2021-09-07 | 深圳前海微众银行股份有限公司 | 一种服务接口迁移的校验方法及装置 |
CN113364806B (zh) * | 2021-06-30 | 2023-04-07 | 深圳前海微众银行股份有限公司 | 一种服务接口迁移的校验方法及装置 |
CN113515502A (zh) * | 2021-07-14 | 2021-10-19 | 重庆度小满优扬科技有限公司 | 数据迁移方法、装置、设备以及存储介质 |
CN113515502B (zh) * | 2021-07-14 | 2023-11-21 | 重庆度小满优扬科技有限公司 | 数据迁移方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9965203B1 (en) | Systems and methods for implementing an enterprise-class converged compute-network-storage appliance | |
CN102455942B (zh) | 一种广域网虚拟机动态迁移方法及系统 | |
CN112230853A (zh) | 存储容量调整方法、装置、设备及存储介质 | |
US10216949B1 (en) | Dynamic quorum membership changes | |
CN111124475B (zh) | 存储管理的方法、电子设备和计算机可读存储介质 | |
CN102955845B (zh) | 数据访问方法、装置与分布式数据库系统 | |
EP3502877B1 (en) | Data loading method and apparatus for virtual machines | |
US20150169718A1 (en) | System and method for supporting persistence partition discovery in a distributed data grid | |
CN111274310A (zh) | 一种分布式数据缓存方法及系统 | |
CN112235405A (zh) | 分布式存储系统及数据投放方法 | |
KR100936238B1 (ko) | 파일 입출력과 복제의 균형적 수행을 위한 지연복제 시스템및 방법 | |
CN111343219B (zh) | 计算服务云平台 | |
CN114385561A (zh) | 文件管理方法和装置及hdfs系统 | |
CN114780252B (zh) | 数据仓库系统的资源管理方法及装置 | |
CN113312139A (zh) | 信息处理系统和方法 | |
CN112243030A (zh) | 分布式存储系统的数据同步方法、装置、设备及介质 | |
CN110377664B (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN111818188B (zh) | 一种Kubernetes集群的负载均衡可用性提升方法和装置 | |
CN113032091B (zh) | 一种采用aep提升虚拟机存储性能的方法、系统及介质 | |
CN110807039A (zh) | 一种云计算环境下数据一致性维护系统及方法 | |
CN109992447B (zh) | 数据复制方法、装置及存储介质 | |
CN115292408A (zh) | MySQL数据库的主从同步方法、装置、设备及介质 | |
CN114969206A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN116635831A (zh) | 一种数据存储方法、装置及相关设备 | |
CN113934575A (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 |