CN109683826B - 用于分布式存储***的扩容方法和装置 - Google Patents
用于分布式存储***的扩容方法和装置 Download PDFInfo
- Publication number
- CN109683826B CN109683826B CN201811597461.6A CN201811597461A CN109683826B CN 109683826 B CN109683826 B CN 109683826B CN 201811597461 A CN201811597461 A CN 201811597461A CN 109683826 B CN109683826 B CN 109683826B
- Authority
- CN
- China
- Prior art keywords
- data
- information
- migrated
- target
- capacity expansion
- 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
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
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例公开了用于分布式存储***的扩容方法和装置。该方法的一具体实施方式包括:响应于接收到扩容请求,获取目标分片的信息,从至少一个原分片中获取全量数据作为备份数据;根据目标分片的信息从备份数据中过滤出待迁移的数据;将待迁移的数据同步到目标分片中;响应于确定出待迁移的数据同步成功,根据目标分片的信息变更分布式存储***的元信息。该实施方式能够提高扩容过程的效率和稳定性,同时保障了资源利用率。
Description
技术领域
本公开的实施例涉及计算机技术领域,具体涉及用于分布式存储***的扩容方法和装置。
背景技术
在分布式存储***中,由于数据的持续增长,为了提升***的容量,需要保证***拥有良好的可扩展性,也就是需要有一种扩容机制。而传统的扩容机制,一般使用基于存储层本身实现或者新建集群的方式进行扩容。基于存储层实现的主要问题是为了保证数据的一致性,迁移时会阻塞对应数据的写操作。并且同步完成迁移操作,对业务有感知,导致稳定性下降。为了保证迁移时对业务的影响,基于key(键)进行迁移,会导致迁移效率较低等问题。基于新建集群或成倍扩容的方案,导致资源的浪费,容易遇到资源不足的问题。
发明内容
本公开的实施例提出了用于分布式存储***的扩容方法和装置。
第一方面,本公开的实施例提供了一种用于分布式存储***的扩容方法,包括:响应于接收到扩容请求,获取目标分片的信息,从至少一个原分片中获取全量数据作为备份数据;根据目标分片的信息从备份数据中过滤出待迁移的数据;将待迁移的数据同步到目标分片中;响应于确定出待迁移的数据同步成功,根据目标分片的信息变更分布式存储***的元信息。
在一些实施例中,该方法还包括:从至少一个原分片中删除已经同步到目标分片中的待迁移的数据,以及删除备份数据。
在一些实施例中,该方法还包括:通知分布式存储***中的代理服务器按照变更后的元信息进行数据路由。
在一些实施例中,根据目标分片的信息从备份数据中过滤出待迁移的数据,包括:根据目标分片的信息和至少一个原分片的数量确定每个分片扩容后的哈希槽的数量;根据扩容后的哈希槽的数量确定至少一个原分片中待迁移的哈希槽;根据待迁移的哈希槽的编号从备份数据中过滤出待迁移的数据。
在一些实施例中,该方法还包括:响应于确定出待迁移的数据同步失败,删除已经同步到目标分片中的数据,以及删除备份数据。
在一些实施例中,根据目标分片的信息变更分布式存储***的元信息,包括:对待变更的元信息进行校验;响应于校验失败,删除已经同步到目标分片中的数据,以及删除备份数据。
第二方面,本公开的实施例提供了一种用于分布式存储***的扩容装置,包括:获取单元,被配置成响应于接收到扩容请求,获取目标分片的信息,从至少一个原分片中获取全量数据作为备份数据;过滤单元,被配置成根据目标分片的信息从备份数据中过滤出待迁移的数据;同步单元,被配置成将待迁移的数据同步到目标分片中;更新单元,被配置成响应于确定出待迁移的数据同步成功,根据目标分片的信息变更分布式存储***的元信息。
在一些实施例中,该装置还包括删除单元,被配置成:从至少一个原分片中删除已经同步到目标分片中的待迁移的数据,以及删除备份数据。
在一些实施例中,该装置还包括通知单元,被配置成:通知分布式存储***中的代理服务器按照变更后的元信息进行数据路由。
在一些实施例中,过滤单元进一步被配置成:根据目标分片的信息和至少一个原分片的数量确定每个分片扩容后的哈希槽的数量;根据扩容后的哈希槽的数量确定至少一个原分片中待迁移的哈希槽;根据待迁移的哈希槽的编号从备份数据中过滤出待迁移的数据。
在一些实施例中,该装置还包括回滚单元,被配置成:响应于确定出待迁移的数据同步失败,删除已经同步到目标分片中的数据,以及删除备份数据。
在一些实施例中,更新单元进一步被配置成:对待变更的元信息进行校验;响应于校验失败,删除已经同步到目标分片中的数据,以及删除备份数据。
第三方面,本公开的实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一的方法。
第四方面,本公开的实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现如第一方面中任一的方法。
本公开的实施例提供的用于分布式存储***的扩容方法和装置,将数据迁移与哈希槽(hash slot)机制相结合的方式解决,首先将所有数据分配到预定数量(例如16384)的哈希槽中,数据迁移时,将源集群数据完全同步过来,之后基于新的目标分片的信息,确认哈希槽的分布,并进行数据的迁移,在迁移过程中,不需要阻塞服务,增量数据会同步到目标分片中,达到数据偏移量一致之后,通知proxy(代理服务器)变更拓扑结构(元信息),proxy会按照新拓扑完成流量的路由,最后,将迁移的涉及的哈希槽数据从源分片中删除。能有效的利用数据hash槽化优势,使数据可以进行更细粒度的扩容支持,提升了资源利用率,同时在扩容的过程中,不会对原有数据分片产生稳定性的问题。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:
图1是本公开的一个实施例可以应用于其中的示例性***架构图;
图2是根据本公开的用于分布式存储***的扩容方法的一个实施例的流程图;
图3是根据本公开的用于分布式存储***的扩容方法的一个应用场景的示意图;
图4是根据本公开的用于分布式存储***的扩容方法的又一个实施例的流程图;
图5是根据本公开的用于分布式存储***的扩容装置的一个实施例的结构示意图;
图6是适于用来实现本公开的实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
图1示出了可以应用本公开的用于分布式存储***的扩容方法或用于分布式存储***的扩容装置的实施例的示例性***架构100。
如图1所示,***架构100可以包括代理服务器101,元数据服务器102,分片103、104、105,扩容服务器106。网络用以在代理服务器101、元数据服务器102、分片103、104、105和扩容服务器之间提供通信链路的介质。网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
代理服务器101通过网络与元数据服务器102交互,以接收或发送消息等。代理服务器101用于按照元数据服务器上存储的元信息,即网络拓扑结构完成数据的路由。
元数据服务器102存储了分布式存储***的元信息。
分片103、104、105为分布式存储***的存储集群。其中分片103、104为原有的存储集群,分片105为新增的存储集群。在redis数据库中,数据会被分配在16384个slot(哈希槽)中。在分布式存储***中,每个分片中分配的哈希槽的数量可以是相等的以保障负载均衡。
迁移服务器106可以是提供各种服务的服务器,例如将分片1和分片2上的数据迁移到新增的分片3上的后台服务器。后台服务器可以对接收到的扩容请求等数据进行分析等处理,并将处理结果(例如迁移后的网络拓扑结构)反馈给元数据服务器。
需要说明的是,代理服务器、元数据服务器、迁移服务器可以是硬件,也可以是软件。当代理服务器、元数据服务器、迁移服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当代理服务器、元数据服务器、迁移服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本公开的实施例所提供的用于分布式存储***的扩容方法一般由扩容服务器106执行,相应地,用于分布式存储***的扩容装置一般设置于扩容服务器106中。
应该理解,图1中的代理服务器、元数据服务器、分片、扩容服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的代理服务器、元数据服务器、分片、扩容服务器。
继续参考图2,示出了根据本公开的用于分布式存储***的扩容方法的一个实施例的流程200。该用于分布式存储***的扩容方法,包括以下步骤:
步骤201,响应于接收到扩容请求,获取目标分片的信息,从至少一个原分片中获取全量数据作为备份数据。
在本实施例中,用于分布式存储***的扩容方法的执行主体(例如图1所示的扩容服务器)可以通过有线连接方式或者无线连接方式接收扩容请求,该扩容请求中可直接包括目标分片的信息。执行主体还可从元数据服务器获取目标分片的信息。目标分片是待迁移的集群。目标分片的信息可包括集群的数量,地址,资源等信息。原分片是扩容前的集群。接收到扩容请求后,从至少一个原分片中获取全量数据作为备份数据。即,原分片中的数据保留不变,在扩容服务器备份原分片中的数据。
步骤202,根据目标分片的信息从备份数据中过滤出待迁移的数据。
在本实施例中,目标分片的信息可包括新增的分片的数量,可通过计算确定待迁移的哈希槽的数量,然后随机选取待迁移的哈希槽的编号。目标分片的信息也可包括待迁移的哈希槽的编号。通过哈希槽的编号从备份数据中过滤出待迁移的数据。可选地,也可根据目标分片的资源确定其能承载的数据量,按比例与其它分片分担流量。因此可为不同分片分配不同数量的哈希槽。例如,如果新增分片的处理能力为原有分片的2倍,则新增分片分配的哈希槽的数量可以是原分片的2倍。
在本实施例的一些可选的实现方式中,根据目标分片的信息从备份数据中过滤出待迁移的数据,包括:根据目标分片的信息和至少一个原分片的数量确定每个分片扩容后的哈希槽的数量;根据扩容后的哈希槽的数量确定至少一个原分片中待迁移的哈希槽;根据待迁移的哈希槽的编号从备份数据中过滤出待迁移的数据。对于未明确指示待迁移的哈希槽的情况,为了实现负载均衡,需要原分片和新分片平分哈希槽,即确认哈希槽的分布。例如,原有16384个slot,假设原有3个分片,每个分片的slot数为5461,新增分片3个分片,重新进行数据的负载均衡,分别生成三个迁移任务,每个分片的slot变成了2730,则原分片中多余的2731个分片需要进行迁移。如图1所示,有两个原分片,分片1处理slot1-slot3的数据,分片2处理slot4-slot6的数据。可在分片1和分片2中分别任选一个slot进行迁移,例如slot3和slot6。然后将扩容服务器中key(键)映射到slot3和slot6的数据过滤出来。
步骤203,将待迁移的数据同步到目标分片中。
在本实施例中,将步骤202过滤出来的待迁移的数据同步到目标分片中。原分片的增量数据会同步到目标分片中。此时不需要阻塞原分片上的服务。
步骤204,响应于确定出待迁移的数据同步成功,根据目标分片的信息变更分布式存储***的元信息。
在本实施例中,当原分片中的数据偏移量和目标分片中的数据偏移量一致或差距小于预定值时,认为同步成功。可根据目标分片的信息变更分布式存储***的元信息。元信息用于指示分布式存储***的拓扑结构。元信息由元数据服务器维护,可通知元数据服务器变更元信息。然后由元数据服务器通知代理服务器变更路由信息。扩容后,代理服务器将启用目标分片和原分片共同处理数据。
可选地,在扩容成功后,从至少一个原分片中删除已经同步到目标分片中的待迁移的数据,以及删除扩容服务器中的备份数据。
继续参见图3,图3是根据本实施例的用于分布式存储***的扩容方法的应用场景的一个示意图。在图3的应用场景中,用户向扩容服务器发起扩容请求。扩容服务器从元数据服务器获取目标分片(分片3)的信息。扩容服务器从原分片(原分片包括分片1和分片2,其中,分片1负责处理slot1-slot3对应的数据,分片2负责处理slot4-slot6对应的数据。)中获取全量数据(slot1-slot6的数据)作为备份数据。扩容服务器确定出扩容后每个分片负责处理2个哈希槽的数据,因此需要从备份数据中过滤出分片1中任一slot(例如slot3)的数据作为待迁移的数据,从备份数据中过滤出分片2中任一slot(例如slot6)的数据作为待迁移的数据。将待迁移的数据(slot3的数据和slot6的数据)发送到目标分片中。如果目标分片中的数据和原分片中的数据同步,则删除原分片中slot3的数据和slot6的数据。扩容服务器向元数据服务器发起变更请求,通知元数据服务器更新元信息。代理服务器可从元数据服务器获取最新的元信息进行数据路由。
本公开的上述实施例提供的方法通过缓存原分片的全量数据,然后将增量数据同步到新分片中,同步过程中无需阻塞原分片的数据处理,提高扩容过程的效率和稳定性,同时保障了资源利用率。
进一步参考图4,其示出了用于分布式存储***的扩容方法的又一个实施例的流程400。该用于分布式存储***的扩容方法的流程400,包括以下步骤:
步骤401,响应于接收到扩容请求,获取目标分片的信息,从至少一个原分片中获取全量数据作为备份数据。
步骤401与步骤201基本相同,因此不再赘述。
步骤402,若获取全量数据成功,根据目标分片的信息从备份数据中过滤出待迁移的数据。
步骤402与步骤202基本相同,因此不再赘述。
步骤403,将待迁移的数据同步到目标分片中。
步骤403与步骤203基本相同,因此不再赘述。
步骤404,响应于确定出待迁移的数据同步成功,根据目标分片的信息变更分布式存储***的元信息。
步骤404与步骤204基本相同,因此不再赘述。
步骤405,若获取全量数据失败,或同步失败,向元数据服务器报告失败。
在本实施例中,可向元数据服务器报告失败的原因。再由元数据服务器重新发起扩容请求。元数据服务器可根据失败原因修改目标分片的信息,再向扩容服务器发起扩容请求,重新执行扩容过程。
步骤406,若向元数据服务器报告变更后的元信息成功,则从至少一个原分片中删除已经同步到目标分片中的待迁移的数据,以及删除备份数据。
在本实施例中,收到元数据服务器的变更确认消息时,才真正完成扩容。扩容成功后需要将扩容服务器缓存的备份数据删除。并且将原分片中已经迁移到目标分片中的哈希槽的数据删除。
步骤407,若向元数据服务器报告变更后的元信息失败且失败原因为超时,则标记未使用的哈希槽,删除已经同步到目标分片中的数据,以及删除备份数据。
在本实施例中,如果是因为超时导致失败,则进行回滚。恢复到扩容前的状态,因此需要删除已经缓存到扩容服务器中的数据,并删除已经同步到目标分片中的数据。
步骤408,若向元数据服务器报告变更后的元信息失败且失败不是因为超时,则写入日志,删除已经同步到目标分片中的数据,以及删除备份数据。
在本实施例中,如果不是因为超时导致失败,则将失败原因写入日志并进行回滚。恢复到扩容前的状态,因此需要删除已经缓存到扩容服务器中的数据,并删除已经同步到目标分片中的数据。
扩容服务器通知元数据服务器进行元信息变更,元数据服务器接收到通知后的操作如下:
步骤4081,接收扩容服务器的迁移状态信息。
在本实施例中,迁移状态信息可包括原分片的信息和目标分片的信息,还可包括数据同步的进度信息,迁移任务标识等。扩容服务器接收到扩容请求后,向元数据服务器请求目标分片的信息。元数据服务器不仅返回目标分片的信息,还指定了迁移任务的标识。例如,目标分片1的迁移过程由任务1执行。目标分片2的迁移过程由任务2执行。
步骤4082,检查迁移状态信息的参数。
在本实施例中,如果检查出元数据服务器分配的任务标识与接收到的迁移状态信息中的任务标识不符,则输出错误提示信息,认为扩容失败,要进行数据回滚,恢复到扩容前的状态,因此需要删除已经缓存到扩容服务器中的数据,并删除已经同步到目标分片中的数据。
步骤4083,如果参数检查通过,则修改元信息,通知代理服务器元信息进行变更。
在本实施例中,元信息可包括哈希槽所在的分片的位置、编号等信息。元数据服务器修改了元信息后,通知集群中的代理服务器,获取最新的元信息即拓扑,新的流量将按新拓扑进行路由。
从图4中可以看出,与图2对应的实施例相比,本实施例中的用于分布式存储***的扩容方法的流程400体现了对扩容过程进行验证的步骤,使得迁移过程中如果发生异常,迁移中断,但是不会影响原有集群的拓扑及流量。
进一步参考图5,作为对上述各图所示方法的实现,本公开提供了一种用于分布式存储***的扩容装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的用于分布式存储***的扩容装置500包括:获取单元501、过滤单元502、同步单元503、更新单元504。其中获取单元501,被配置成响应于接收到扩容请求,获取目标分片的信息,以及从至少一个原分片中获取全量数据作为备份数据。过滤单元502,被配置成根据目标分片的信息从备份数据中过滤出待迁移的数据。同步单元503,被配置成将待迁移的数据同步到目标分片中。更新单元504,被配置成响应于确定出待迁移的数据同步成功,根据目标分片的信息变更分布式存储***的元信息。
在本实施例中,用于分布式存储***的扩容装置500的获取单元501、过滤单元502、同步单元503、更新单元504的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203、步骤204。
在本实施例的一些可选的实现方式中,装置500还包括删除单元(未示出),被配置成:从至少一个原分片中删除已经同步到目标分片中的待迁移的数据,以及删除备份数据。
在本实施例的一些可选的实现方式中,装置500还包括通知单元(未示出),被配置成:通知分布式存储***中的代理服务器按照变更后的元信息进行数据路由。
在本实施例的一些可选的实现方式中,过滤单元502进一步被配置成:根据目标分片的信息和至少一个原分片的数量确定每个分片扩容后的哈希槽的数量;根据扩容后的哈希槽的数量确定至少一个原分片中待迁移的哈希槽;根据待迁移的哈希槽的编号从备份数据中过滤出待迁移的数据。
在本实施例的一些可选的实现方式中,装置500还包括回滚单元(未示出),被配置成:响应于确定出待迁移的数据同步失败,删除已经同步到目标分片中的数据,以及删除备份数据。
在本实施例的一些可选的实现方式中,更新单元504进一步被配置成:对待变更的元信息进行校验;响应于校验失败,删除已经同步到目标分片中的数据,以及删除备份数据。
下面参考图6,其示出了适于用来实现本公开的实施例的电子设备(如图1所示的扩容服务器)的计算机***600的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图6所示,计算机***600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有***600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本公开的方法中限定的上述功能。需要说明的是,本公开所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、过滤单元、同步单元和更新单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“响应于接收到扩容请求,获取目标分片的信息,以及从至少一个原分片中获取全量数据作为备份数据的单元”。
作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:响应于接收到扩容请求,获取目标分片的信息,从至少一个原分片中获取全量数据作为备份数据;根据目标分片的信息从备份数据中过滤出待迁移的数据;将待迁移的数据同步到目标分片中;响应于确定出待迁移的数据同步成功,根据目标分片的信息变更分布式存储***的元信息。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种用于分布式存储***的扩容方法,包括:
响应于接收到扩容请求,获取目标分片的信息,以及从至少一个原分片中获取全量数据作为备份数据,其中,目标分片的信息包括待迁移的哈希槽的编号、资源;
根据所述目标分片的信息从所述备份数据中过滤出待迁移的数据;
将所述待迁移的数据同步到所述目标分片中;
响应于确定出所述待迁移的数据同步成功,根据所述目标分片的信息变更所述分布式存储***的元信息;
若获取全量数据失败,或同步失败,向元数据服务器报告失败的原因,元数据服务器根据失败的原因修改目标分片的信息,再向扩容服务器发起扩容请求,重新执行扩容过程;
若向元数据服务器报告变更后的元信息失败且失败原因为超时,则标记未使用的哈希槽,删除已经同步到目标分片中的数据,以及删除备份数据;
若向元数据服务器报告变更后的元信息失败且失败不是因为超时,则写入日志,删除已经同步到目标分片中的数据,以及删除备份数据;
元数据服务器接收扩容服务器的迁移状态信息,如果检查出元数据服务器分配的任务标识与接收到的迁移状态信息中的任务标识不符,则输出错误提示信息,删除已经缓存到扩容服务器中的数据,并删除已经同步到目标分片中的数据,如果参数检查通过,则修改元信息,通知代理服务器元信息进行变更;
所述根据所述目标分片的信息从所述备份数据中过滤出待迁移的数据,包括:
通过哈希槽的编号从备份数据中过滤出待迁移的数据;或者
根据目标分片的资源确定其能承载的数据量,按比例与其它分片分担流量,从而为不同分片分配不同数量的哈希槽;
所述根据所述目标分片的信息变更所述分布式存储***的元信息,包括:
对待变更的元信息进行校验;
响应于校验失败,删除已经同步到目标分片中的数据,以及删除所述备份数据。
2.根据权利要求1所述的方法,所述方法还包括:
从所述至少一个原分片中删除已经同步到目标分片中的待迁移的数据,以及删除所述备份数据。
3.根据权利要求1所述的方法,所述方法还包括:
通知所述分布式存储***中的代理服务器按照变更后的元信息进行数据路由。
4.根据权利要求1所述的方法,所述根据所述目标分片的信息从所述备份数据中过滤出待迁移的数据,包括:
根据所述目标分片的信息和所述至少一个原分片的数量确定每个分片扩容后的哈希槽的数量;
根据所述扩容后的哈希槽的数量确定所述至少一个原分片中待迁移的哈希槽;
根据所述待迁移的哈希槽的编号从所述备份数据中过滤出待迁移的数据。
5.根据权利要求1-4之一所述的方法,所述方法还包括:
响应于确定出所述待迁移的数据同步失败,删除已经同步到目标分片中的数据,以及删除所述备份数据。
6.一种用于分布式存储***的扩容装置,包括:
获取单元,被配置成响应于接收到扩容请求,获取目标分片的信息,以及从至少一个原分片中获取全量数据作为备份数据,其中,目标分片的信息包括待迁移的哈希槽的编号、资源;
过滤单元,被配置成根据所述目标分片的信息从所述备份数据中过滤出待迁移的数据;
同步单元,被配置成将所述待迁移的数据同步到所述目标分片中,若获取全量数据失败,或同步失败,向元数据服务器报告失败的原因,元数据服务器根据失败的原因修改目标分片的信息,再向扩容服务器发起扩容请求,重新执行扩容过程;
更新单元,被配置成响应于确定出所述待迁移的数据同步成功,根据所述目标分片的信息变更所述分布式存储***的元信息;若向元数据服务器报告变更后的元信息失败且失败原因为超时,则标记未使用的哈希槽,删除已经同步到目标分片中的数据,以及删除备份数据;若向元数据服务器报告变更后的元信息失败且失败不是因为超时,则写入日志,删除已经同步到目标分片中的数据,以及删除备份数据;元数据服务器接收扩容服务器的迁移状态信息,如果检查出元数据服务器分配的任务标识与接收到的迁移状态信息中的任务标识不符,则输出错误提示信息,删除已经缓存到扩容服务器中的数据,并删除已经同步到目标分片中的数据,如果参数检查通过,则修改元信息,通知代理服务器元信息进行变更;过滤单元进一步被配置成:通过哈希槽的编号从备份数据中过滤出待迁移的数据;或者
根据目标分片的资源确定其能承载的数据量,按比例与其它分片分担流量,从而为不同分片分配不同数量的哈希槽;
所述更新单元进一步被配置成:
对待变更的元信息进行校验;
响应于校验失败,删除已经同步到目标分片中的数据,以及删除所述备份数据。
7.根据权利要求6所述的装置,所述装置还包括删除单元,被配置成:
从所述至少一个原分片中删除已经同步到目标分片中的待迁移的数据,以及删除所述备份数据。
8.根据权利要求6所述的装置,所述装置还包括通知单元,被配置成:
通知所述分布式存储***中的代理服务器按照变更后的元信息进行数据路由。
9.根据权利要求6所述的装置,所述过滤单元进一步被配置成:
根据所述目标分片的信息和所述至少一个原分片的数量确定每个分片扩容后的哈希槽的数量;
根据所述扩容后的哈希槽的数量确定所述至少一个原分片中待迁移的哈希槽;
根据所述待迁移的哈希槽的编号从所述备份数据中过滤出待迁移的数据。
10.根据权利要求6-9之一所述的装置,所述装置还包括回滚单元,被配置成:
响应于确定出所述待迁移的数据同步失败,删除已经同步到目标分片中的数据,以及删除所述备份数据。
11.一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811597461.6A CN109683826B (zh) | 2018-12-26 | 2018-12-26 | 用于分布式存储***的扩容方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811597461.6A CN109683826B (zh) | 2018-12-26 | 2018-12-26 | 用于分布式存储***的扩容方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109683826A CN109683826A (zh) | 2019-04-26 |
CN109683826B true CN109683826B (zh) | 2023-08-29 |
Family
ID=66189471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811597461.6A Active CN109683826B (zh) | 2018-12-26 | 2018-12-26 | 用于分布式存储***的扩容方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109683826B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110333824B (zh) * | 2019-06-05 | 2022-10-25 | 腾讯科技(深圳)有限公司 | 一种存储***的扩容方法和装置 |
CN110674108A (zh) * | 2019-08-30 | 2020-01-10 | 中国人民财产保险股份有限公司 | 数据处理方法及装置 |
CN112860654B (zh) * | 2019-11-27 | 2024-01-30 | 中国电信股份有限公司 | 数据分片处理方法、装置以及存储介质 |
CN111680799B (zh) * | 2020-04-08 | 2024-02-20 | 北京字节跳动网络技术有限公司 | 用于处理模型参数的方法和装置 |
WO2021207923A1 (zh) * | 2020-04-14 | 2021-10-21 | 深圳市欢太科技有限公司 | 集群扩容方法、装置、存储介质及电子设备 |
CN111708763B (zh) * | 2020-06-18 | 2023-12-01 | 北京金山云网络技术有限公司 | 分片集群的数据迁移方法、装置和分片集群*** |
CN112083884A (zh) * | 2020-09-08 | 2020-12-15 | 久盈世纪(北京)科技有限公司 | 基于堡垒机的磁盘预警方法与设备 |
CN112083885B (zh) * | 2020-09-08 | 2021-10-15 | 北京嘀嘀无限科技发展有限公司 | 一种数据迁移方法、装置、电子设备及存储介质 |
CN112541039B (zh) * | 2020-12-07 | 2022-06-17 | 武汉联影医疗科技有限公司 | 数据库处理方法、装置、计算机设备和存储介质 |
CN112882658B (zh) * | 2021-02-10 | 2023-04-21 | 深圳市云网万店科技有限公司 | 数据缓存的扩容方法、装置、计算机设备和存储介质 |
CN112698926B (zh) * | 2021-03-25 | 2021-07-02 | 成都新希望金融信息有限公司 | 数据处理方法、装置、设备、存储介质及*** |
CN113507390A (zh) * | 2021-07-08 | 2021-10-15 | 中国工商银行股份有限公司 | 分布式***集群在线分片扩容方法及装置 |
CN113515502B (zh) * | 2021-07-14 | 2023-11-21 | 重庆度小满优扬科技有限公司 | 数据迁移方法、装置、设备以及存储介质 |
CN114500576A (zh) * | 2021-12-27 | 2022-05-13 | 天翼云科技有限公司 | 分布式缓存扩缩容方法、***、装置及存储介质 |
CN117667944B (zh) * | 2023-12-12 | 2024-06-18 | 支付宝(杭州)信息技术有限公司 | 用于分布式图数据库的副本扩容方法、装置及*** |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881311A (en) * | 1996-06-05 | 1999-03-09 | Fastor Technologies, Inc. | Data storage subsystem with block based data management |
WO2009136533A1 (ja) * | 2008-05-08 | 2009-11-12 | 日本電気株式会社 | 分散データ格納システムの応答調停システム、分散データ格納システムの応答調停方法 |
CN101630282A (zh) * | 2009-07-29 | 2010-01-20 | 国网电力科学研究院 | 一种基于Erasure编码和副本技术的数据备份方法 |
WO2014180207A1 (zh) * | 2013-11-04 | 2014-11-13 | 中兴通讯股份有限公司 | 元数据服务器的迁移处理方法及装置 |
CN104615657A (zh) * | 2014-12-31 | 2015-05-13 | 天津南大通用数据技术股份有限公司 | 一种节点支持多数据分片的分布式集群的扩容和缩容方法 |
CN105516367A (zh) * | 2016-02-02 | 2016-04-20 | 北京百度网讯科技有限公司 | 分布式数据存储***、方法和装置 |
CN106777225A (zh) * | 2016-12-26 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种数据的迁移方法和*** |
CN106843755A (zh) * | 2017-01-04 | 2017-06-13 | 北京百度网讯科技有限公司 | 用于服务器集群的数据均衡方法与装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881333B (zh) * | 2014-02-27 | 2018-03-20 | 国际商业机器公司 | 一种存储***及其使用的方法 |
CN106953893A (zh) * | 2017-02-15 | 2017-07-14 | 北京百度网讯科技有限公司 | 云存储***间的数据迁移 |
-
2018
- 2018-12-26 CN CN201811597461.6A patent/CN109683826B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881311A (en) * | 1996-06-05 | 1999-03-09 | Fastor Technologies, Inc. | Data storage subsystem with block based data management |
WO2009136533A1 (ja) * | 2008-05-08 | 2009-11-12 | 日本電気株式会社 | 分散データ格納システムの応答調停システム、分散データ格納システムの応答調停方法 |
CN101630282A (zh) * | 2009-07-29 | 2010-01-20 | 国网电力科学研究院 | 一种基于Erasure编码和副本技术的数据备份方法 |
WO2014180207A1 (zh) * | 2013-11-04 | 2014-11-13 | 中兴通讯股份有限公司 | 元数据服务器的迁移处理方法及装置 |
CN104615657A (zh) * | 2014-12-31 | 2015-05-13 | 天津南大通用数据技术股份有限公司 | 一种节点支持多数据分片的分布式集群的扩容和缩容方法 |
CN105516367A (zh) * | 2016-02-02 | 2016-04-20 | 北京百度网讯科技有限公司 | 分布式数据存储***、方法和装置 |
CN106777225A (zh) * | 2016-12-26 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种数据的迁移方法和*** |
CN106843755A (zh) * | 2017-01-04 | 2017-06-13 | 北京百度网讯科技有限公司 | 用于服务器集群的数据均衡方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109683826A (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109683826B (zh) | 用于分布式存储***的扩容方法和装置 | |
CN109120678B (zh) | 用于分布式存储***的服务托管的方法和装置 | |
US11360867B1 (en) | Re-aligning data replication configuration of primary and secondary data serving entities of a cross-site storage solution after a failover event | |
CN109491776B (zh) | 任务编排方法和*** | |
US11481139B1 (en) | Methods and systems to interface between a multi-site distributed storage system and an external mediator to efficiently process events related to continuity | |
US11061605B1 (en) | Dynamically performing managed file transfer based on policies | |
CN109492013B (zh) | 应用于数据库集群的数据处理方法、装置和*** | |
US10445186B1 (en) | Associating a guest application within a virtual machine to create dependencies in backup/restore policy | |
WO2019001017A1 (zh) | 集群间数据迁移方法、***、服务器及计算机存储介质 | |
CN108616574B (zh) | 管理数据的存储方法、设备及存储介质 | |
US10949401B2 (en) | Data replication in site recovery environment | |
CN106878363B (zh) | 一种信息处理方法、装置及*** | |
CN111049928B (zh) | 数据同步方法、***、电子设备及计算机可读存储介质 | |
CN109144785B (zh) | 用于备份数据的方法和装置 | |
CN109561151B (zh) | 数据存储方法、装置、服务器和存储介质 | |
CN108023939B (zh) | 分布式***中锁服务器故障的处理方法及其*** | |
CN106452836B (zh) | 主节点设置方法及装置 | |
CN105744001B (zh) | 分布式缓存***扩容方法、数据访问方法及装置和*** | |
WO2021120968A1 (zh) | 一种服务器扩容方法及扩容*** | |
CN112698926B (zh) | 数据处理方法、装置、设备、存储介质及*** | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN112579550B (zh) | 一种分布式文件***的元数据信息同步方法及*** | |
CN112035062B (zh) | 云计算的本地存储的迁移方法、计算机设备及存储介质 | |
CN111459913B (zh) | 分布式数据库的容量扩展方法、装置及电子设备 | |
CN109992447B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |