集群切换方法与设备与流程

文档序号:12752933阅读:480来源:国知局
集群切换方法与设备与流程

本申请涉及计算机领域,尤其涉及一种集群切换方法与设备。



背景技术:

在云存储系统中,数据存储于单个集群,为了提高数据存储的安全性、提供集群级别的容灾方案,或者实现集群间的数据迁移,往往需要将数据备份到其他的集群,该过程称为集群间数据同步。当需要将用户读写访问的集群从主集群变更成从集群时,该变更过程称为切换主集群。如何保证集群间数据同步的一致性、以及保证集群切换时对用户无影响是集群间同步和切换的关键技术方案。

目前的同步技术方案一般分为集群间的异步的同步方案和同步的同步方案,分别结合不同的切换方案:

1.异步的同步方案中,使用异步模块将数据从主集群拷贝到从集群,可以保证数据一致性,但是具有一定的延时性,当需要切换对外服务的主集群时,会出现主集群上的部分数据还未同步到从集群上的情况,导致切换后,在这部分数据同步结束前,该部分数据对用户不可见,出现数据短暂丢失的情况,并且在该部分数据同步期间,用户对该部分数据的覆盖写会导致数据一致性问题,因此当需要切换之前,会停止主集群数据的写入,当主集群的数据完全同步到从集群之后,进行切换,再开放用户的写权限,从而不会影响用户访问,并且能解决数据一致性问题,但是由于延时性,切换前禁止用户写入会影响用户使用。

2.同步的同步方案中,在用户写入数据时,数据分别写入主集群和从集群,集群切换简单,当主集群和从集群同时成功时返回用户成功,但会降低用户的访问成功率,提高了用户访问延时,并且难以解决主从集群间有一份数据写失败时的数据一致性问题,对于已经存在于主集群中的数据无法实现 拷贝。



技术实现要素:

本申请的一个目的是提供一种集群切换方法与设备,能够解决集群间数据间迁移或备份时,影响用户使用,切换集群间数据不能够保证一致的问题。

根据本申请的一个方面,提供了一种集群切换方法,该方法包括:

在旧的主集群向新的主集群切换开始后,将旧的主集群上待同步的剩余原始数据同步到新的主集群上,其中,将新的主集群上所述剩余原始数据的优先级设置为低级;

在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求,其中,将写操作请求对应的新数据的优先级设置为高级,并只允许在新的主集群上优先级为高级的数据的版本覆盖优先级为低级或高级的同一数据的另一版本;

在将旧的主集群上待同步的剩余原始数据同步到新的主集群结束后,在新的主集群上响应写操作请求。

进一步的,上述方法中,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,还包括:

在旧的和新的主集群上响应的读操作请求;

在将旧的主集群上待同步的剩余原始数据同步到新的主集群结束后,还包括:

在新的主集群上响应读操作请求。

进一步的,上述方法中,所述写操作请求包括对数据的新增、改写和删除操作请求。

进一步的,上述方法中,当所述写操作请求为对数据的新增或改写时,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求的同时,还包括:

将所述新增或改写操作请求写入消息队列;

从所述消息队列中读取新增或改写操作请求,将读取到的新增或改写操作请求所对应的新的主集群上的新增或改写数据同步到旧的主集群上后,删除消息队列中所述读取到的写操作请求。

进一步的,上述方法中,读取到的新增或改写操作请求所对应的新的主集群上的新增或改写数据同步到旧的主集群上后,删除消息队列中所述读取到的写操作请求,包括:

判断新的主集群上是否存在读取到的新增或改写操作请求所对应的新增或改写数据,

若存在,将该新增或改写数据同步到旧的主集群上,删除消息队列中所述读取到的新增或改写操作请求;

若不存在,删除消息队列中所述读取到的新增或改写操作请求。

进一步的,上述方法中,当所述写操作请求为对数据的删除操作请求时,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求的同时,还包括:

将所述删除操作请求写入消息队列;

从消息队列中读取删除操作请求,根据读取到删除操作请求使所述旧的和新的主集群上的对应数据保持一致后,删除消息队列中所述读取到的删除操作请求。

进一步的,上述方法中,根据读取到删除操作请求使所述旧的和新的主集群上的对应数据保持一致后,删除消息队列中所述读取到的删除操作请求,包括:

若读取到删除操作请求所对应的删除数据在旧的和新的主集群上都不存在,则删除消息队列中所述读取到的删除操作请求;

若读取到删除操作请求所对应的删除数据在新的主集群上不存在,而在旧的主集群上存在,则删除旧的主集群上对应的删除数据后,删除消息队列 中所述读取到的删除操作请求;

若读取到删除操作请求所对应的删除数据在旧的主集群上不存在,而在新的主集群上存在,则将新的主集群上对应的删除数据同步到旧的主集群上后,删除消息队列中所述读取到的删除操作请求;

若读取到删除操作请求所对应的删除数据在旧的和新的主集群上都存在,则删除消息队列中所述读取到的删除操作请求。

进一步的,上述方法中,将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在旧的和新的主集群上响应的读操作请求,包括:

判断是否从旧的和新的主集群上读取到所述读操作请求所对应的数据,

若在旧的或新的主集群读取到对应的数据,则返回该数据;

若在旧的和新的主集群都读取到对应的数据,则返回新的主集群上读取到的对应的数据。

根据本申请的另一面还提供一种集群切换设备,其中,该设备包括:

同步装置,用于在旧的主集群向新的主集群切换开始后,将旧的主集群上待同步的剩余原始数据同步到新的主集群上,其中,将新的主集群上所述剩余原始数据的优先级设置为低级;

同步期间写响应装置,用于在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求,其中,将写操作请求对应的新数据的优先级设置为高级,并只允许在新的主集群上优先级为高级的数据的版本覆盖优先级为低级或高级的同一数据的另一版本;

同步结束写响应装置,用于在将旧的主集群上待同步的剩余原始数据同步到新的主集群结束后,在新的主集群上响应写操作请求。

进一步的,上述设备中,所述设备还包括同步期间读响应装置,用于在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在旧的和新的主集群上响应的读操作请求;

所述设备还包括同步结束读响应装置,用于在将旧的主集群上待同步 的剩余原始数据同步到新的主集群结束后,在新的主集群上响应读操作请求。

进一步的,上述设备中,所述写操作请求包括对数据的新增、改写和删除操作请求。

进一步的,上述设备中,所述设备还包括新增或改写请求消息队列装置,用于当所述写操作请求为对数据的新增或改写时,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求的同时,将所述新增或改写操作请求写入消息队列,从所述消息队列中读取新增或改写操作请求,将读取到的新增或改写操作请求所对应的新的主集群上的新增或改写数据同步到旧的主集群上后,删除消息队列中所述读取到的写操作请求。

进一步的,上述设备中,所述新增或改写请求消息队列装置,用于判断新的主集群上是否存在读取到的新增或改写操作请求所对应的新增或改写数据,若存在,将该新增或改写数据同步到旧的主集群上,删除消息队列中所述读取到的新增或改写操作请求;若不存在,删除消息队列中所述读取到的新增或改写操作请求。

进一步的,上述设备中,所述设备还包括删除请求消息队列装置,用于当所述写操作请求为对数据的删除操作请求时,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求的同时,将所述删除操作请求写入消息队列,从消息队列中读取删除操作请求,根据读取到删除操作请求使所述旧的和新的主集群上的对应数据保持一致后,删除消息队列中所述读取到的删除操作请求。

进一步的,上述设备中,所述删除请求消息队列装置,用于若读取到删除操作请求所对应的删除数据在旧的和新的主集群上都不存在,则删除消息队列中所述读取到的删除操作请求;若读取到删除操作请求所对应的删除数据在新的主集群上不存在,而在旧的主集群上存在,则删除旧的主集群上 对应的删除数据后,删除消息队列中所述读取到的删除操作请求;若读取到删除操作请求所对应的删除数据在旧的主集群上不存在,而在新的主集群上存在,则将新的主集群上对应的删除数据同步到旧的主集群上后,删除消息队列中所述读取到的删除操作请求;若读取到删除操作请求所对应的删除数据在旧的和新的主集群上都存在,则删除消息队列中所述读取到的删除操作请求。

进一步的,上述设备中,所述同步期间读响应装置,用于判断是否从旧的和新的主集群上读取到所述读操作请求所对应的数据,若在旧的或新的主集群读取到对应的数据,则返回该数据;若在旧的和新的主集群都读取到对应的数据,则返回新的主集群上读取到的对应的数据。

与现有技术相比,本申请通过在旧的主集群向新的主集群同步期间,在新的主集群上响应写操作请求,并将写操作请求对应的新数据的优先级设置为高级,其中,只允许在新的主集群上优先级为高级的数据的版本覆盖优先级为低级或高级的同一数据的另一版本,能够在不影响用户使用的情况下,切换对外服务的主集群,即在不需要禁止用户访问的情况下,在切换开始后至切换结束期间使用户能读写到全部数据,并且旧的和新的主集群上数据能够保证一致,实现集群间数据的无缝迁移或备份。

进一步的,本申请通过将所述新增或改写操作请求写入消息队列,从所述消息队列中读取新增或改写操作请求,将读取到的新增或改写操作请求所对应的新的主集群B上的新增或改写数据同步到旧的主集群A上后,删除消息队列中所述读取到的写操作请求,从而保证旧的和新的主集群上数据的一致性,始终保持两个集群上的数据同步,以满足当又有从新的主集群B切换回旧的主集群A的需求。

进一步的,本申请通过将所述删除操作请求写入消息队列,从消息队列中读取删除操作请求,根据读取到删除操作请求使所述旧的和新的主集群上的对应数据保持一致,删除消息队列中所述读取到的删除操作请求,从而保 证旧的和新的主集群上数据的一致性,始终保持两个集群上的数据同步,以满足当又有从新的主集群B切换回旧的主集群A的需求。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种集群切换方法的流程图;

图2示出根据本申请一个优选实施例的一种集群切换方法的流程图;

图3示出根据本申请另一个优选实施例的一种集群切换方法的流程图;

图4示出根据本申请又一个优选实施例的一种集群切换方法的流程图;

图5示出根据本申请再一个优选实施例的一种集群切换方法的流程图;

图6示出根据本申请又一个优选实施例的一种集群切换方法的流程图;

图7示出根据本申请另一个方面的一种集群切换设备的结构图;

图8示出根据本申请一个优选实施例的一种集群切换设备的结构图;

图9示出根据本申请另一个优选实施例的一种集群切换设备的结构图;

图10示出根据本申请又一个优选实施例的一种集群切换设备的结构图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本发明作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括 一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

如图1所示,本申请提供一种集群切换方法,包括:

步骤S1,在旧的主集群向新的主集群切换开始后,将旧的主集群上待同步的剩余原始数据同步到新的主集群上,其中,将新的主集群上从旧的主集群同步来的剩余原始数据的优先级设置为低级;具体的,旧的主集群A向新的主集群B同步的时间是在旧的主集群A向新的主集群B切换之前开始,旧的主集群A向新的主集群B同步完成时,旧的主集群A向新的主集群B切换也随之完成,这里旧的主集群A向新的主集群B是指将旧的主集群A上的原始数据备份到主集群B,以在旧的主集群A向新的主集群B切换完成后由新的主集群B对外向用户提供数据读写服务,另外,由于旧的主集群A向新的主集群B同步先于集群切换开始,新的主集群B上从旧的主集群A同步来的原始数据包括集群切换开始前,新的主集群B上从旧的主集群A同步来的原始数据,及集群切换开始后至集群切换结束,新的主集群B上从旧的主集群A同步来的剩余的原始数据,例如,旧的主集群A上原有5000条原始数据, 新的主集群B上从旧的主集群A同步来的原始数据包括集群切换开始前,新的主集群B上已经从旧的主集群A同步来的5000条原始数据中的2000条,那么新的主集群B上从旧的主集群A同步来的原始数据还要包括集群切换开始后至集群切换结束,新的主集群B上需要从旧的主集群A同步来的剩余的3000条原始数据,在此,无论是集群切换开始前,还是集群切换开始后至集群切换结束,新的主集群B上从旧的主集群A同步来的原始数据的优先级都设置为低级如0级,以与后续设置为高级的写操作请求对应的新数据如1级相区分;

步骤S2,在旧的主集群向新的主集群同步期间,在新的主集群上响应写操作请求,并将写操作请求对应的新数据的优先级设置为高级,其中,只允许在新的主集群上优先级为高级的数据的版本覆盖优先级为低级或高级的同一数据的另一版本;具体的,步骤S1和步骤S2是同时进行的,在集群切换开始后,新的主集群B上会存在两类数据,一类是新数据,另一类是从旧的主集群A同步来的原始数据,为了防止从旧的主集群A同步来的原始数据覆盖新数据,并保证新数据如1级数据能够覆盖从旧的主集群A同步来的原始数据(低级数据如0级数据)或者更新的新数据(同级数据如1级数据),这里设置只允许新的主集群B上优先级为高级的数据的版本覆盖优先级为低级或高级的同一数据的另一版本,例如,新的主集群B上有一从旧的主集群上同步来的原始数据a=100,随后用户发起一个写操作请求所对应的新数据为a=200,由于a=100的数据级别为低级如0级,而a=200的数据级别为高级如1级,则高级数据覆盖同一数据低级版本,新的主集群B上a数据的值对应更新为200,如果,接着又有用户发起一个更新的写操作请求所对应的新数据为a=300,则高级覆盖同一数据之前同级版本,新的主集群上a数据的值对应更新为300;又如,在新的主集群B上用户发起一个写操作请求所对应的新数据为a=200,随后,又有一从旧的主集群A上同步来的原始数据a=100,由于a=100的数据级别为低级如0级,而a=200的数据级别为高级如 1级,则低级不能覆盖同一数据高级版本,新的主集群上a数据的值对应仍为200;

步骤S4,在将旧的主集群上待同步的剩余原始数据同步到新的主集群结束后,在新的主集群上响应写操作请求。具体的,步骤S4是在步骤S1和步骤S2之后进行,在集群同步结束后,由于旧的主集群A的所有原始数据已经都同步到新的主集群B上,所以只要在新的主集群B上响应数据写操作请求即可,也不再需要区分新的主集群B上数据的优先级。本实施例能够在不影响用户使用的情况下,切换对外服务的主集群,即在不需要禁止用户访问的情况下,在切换开始后至切换结束期间使用户能读写到全部数据,并且旧的和新的主集群上数据能够保证一致,实现集群间数据的无缝迁移或备份。

如图2所示,本申请的集群切换方法一优选的实施例中,执行步骤S1的同时,还包括执行步骤S3,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在旧的和新的主集群上响应的读操作请求;

步骤S3之后,在执行步骤S4的同时,还包括执行步骤S5,在将旧的主集群上待同步的剩余原始数据同步到新的主集群结束后,在新的主集群上响应读操作请求。具体的,在集群同步结束前,需要在旧的和新的主集群上响应在旧的主集群A向新的主集群B同步期间的数据读操作请求,以避免集群同步结束前,在有些原始数据还没有同步到新的主集群的情况下,即使没有在新的主集群B上找到需要的原始数据,还可以在旧的主集群上找到需要的原始数据,所以这时需要同时在旧的和新的主集群上响应在旧的主集群A向新的主集群B同步期间的数据读操作请求;而在集群同步结束后,由于旧的主集群的所有原始数据已经都同步到新的主集群上,所以只要在新的主集群上响应数据读操作请求即可,都可以满足用户的数据需求。

本申请的集群切换方法一优选的实施例中,所述写操作请求包括对数据的新增、改写和删除操作请求。具体的,旧的主集群向新的主集群切换开 始后,用户的写操作请求在新的主集群上新增其没有的数据,或者对已有的数据版本的修改,或者对已有数据的删除,从而满足用户的各种写操作需求。本领域技术人员应能理解上述写操作请求的描述仅为举例,其他现有的或今后可能出现的写操作请求的描述如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

如图3所示,本申请的集群切换方法一优选的实施例中,当所述写操作请求为对数据的新增或改写时,执行步骤S2,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求的同时,还包括:

步骤S20,将所述新增或改写操作请求写入消息队列;

步骤S21,从所述消息队列中读取新增或改写操作请求,将读取到的新增或改写操作请求所对应的新的主集群B上的新增或改写数据同步到旧的主集群A上后,删除消息队列中所述读取到的写操作请求,在此,消息队列中的写操作请求用于标注新的主集群B上待同步到旧的主集群A上的新增或改写数据,在每完成将新的主集群B上的一个新增或改写数据同步到旧的主集群A上之后,则将对应的一个写操作请求删除,从而保证旧的和新的主集群上数据的一致性,始终保持两个集群上的数据同步,以满足当又有从新的主集群B切换回旧的主集群A的需求。本领域技术人员应能理解上述消息队列的描述仅为举例,其他现有的或今后可能出现的消息队列的描述如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

如图4所示,本申请的集群切换方法一优选的实施例中,步骤S21中的将读取到的新增或改写操作请求所对应的新的主集群上的新增或改写数据同步到旧的主集群上后,删除消息队列中所述读取到的写操作请求,包括:

步骤S211,判断新的主集群上是否存在读取到的新增或改写操作请求所对应的新增或改写数据,若存在,转到步骤S212,若不存在,转到步骤S213;

步骤S212,将该新增或改写数据同步到旧的主集群上,删除消息队列中 所述读取到的新增或改写操作请求;在此,如果一次数据同步失败,可以不停地重试,直到新的主集群的新增或改写数据被成功同步入旧的主集群A为止;

步骤S213,删除消息队列中所述读取到的新增或改写操作请求,在此,当新增或改写数据写入新的主集群B失败时,虽然消息队列里记录有对应的新增或改写操作请求,但此时不需要同步新的主集群B中没有的数据到旧的主集A,直接将消息队列中所述读取到的新增或改写操作请求删除即可,从而保证旧的和新的主集群上数据的一致性。本领域技术人员应能理解上述新的主集群上是否存在读取到的新增或改写操作请求的描述仅为举例,其他现有的或今后可能出现的新的主集群上是否存在读取到的新增或改写操作请求的描述如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

如图5所示,本申请的集群切换方法一优选的实施例中,当所述写操作请求为对数据的删除操作请求时,执行步骤S2,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求的同时,还包括:

步骤S30,将所述删除操作请求写入消息队列;

步骤S31,从消息队列中读取删除操作请求,根据读取到删除操作请求使所述旧的和新的主集群上的对应数据保持一致,删除消息队列中所述读取到的删除操作请求。在此,消息队列中的写操作请求用于标注新的主集群B上待与旧的主集群A上的对应数据保持一致的删除数据,在每完成将新的主集群B上的一个删除数据与旧的主集群A上数据一致之后,则将对应的一个写操作请求删除,从而保证旧的和新的主集群上数据的一致性,始终保持两个集群上的数据同步,以满足当又有从新的主集群B切换回旧的主集群A的需求。本领域技术人员应能理解上述消息队列的描述仅为举例,其他现有的或今后可能出现的消息队列的描述如可适用于本申请,也应包含在本申请保 护范围以内,并在此以引用方式包含于此。

本申请的集群切换方法一优选的实施例中,根据读取到删除操作请求使所述旧的和新的主集群上的对应数据保持一致后,删除消息队列中所述读取到的删除操作请求,包括:

若读取到删除操作请求所对应的删除数据在旧的和新的主集群上都不存在,则删除消息队列中所述读取到的删除操作请求;此时,所述旧的和新的主集群上的对应数据已经保持一致,直接删除消息队列中所述读取到的删除操作请求即可;

若读取到删除操作请求所对应的删除数据在新的主集群上不存在,而在旧的主集群上存在,则删除旧的主集群上对应的删除数据后,删除消息队列中所述读取到的删除操作请求;在此,由于新的主集群上的对应数据已经删除,则应对应将旧的主集群上对应的删除数据,然后删除消息队列中所述读取到的删除操作请求,从而使所述旧的和新的主集群上的对应数据保持一致;

若读取到删除操作请求所对应的删除数据在旧的主集群上不存在,而在新的主集群上存在,则将新的主集群上对应的删除数据同步到旧的主集群上后,删除消息队列中所述读取到的删除操作请求;在此,由于新的主集群B上应该删除的数据没有删除,为了使旧的主集群A与新的主集群B始终保持一致,可以将新的主集群B上该未删除的数据删除同步到旧的主集群A后,再删除消息队列中对应的删除操作请求;

若读取到删除操作请求所对应的删除数据在旧的和新的主集群上都存在,则删除消息队列中所述读取到的删除操作请求。在此,所述旧的和新的主集群上的对应数据已经保持一致,直接删除消息队列中所述读取到的删除操作请求即可。本领域技术人员应能理解上述所述旧的和新的主集群上的对应数据保持一致的描述仅为举例,其他现有的或今后可能出现的所述旧的和新的主集群上的对应数据保持一致的描述如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

如图6所示,本申请的集群切换方法一优选的实施例中,步骤S3,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在旧的和新的主集群上响应的读操作请求,包括:

步骤S41,判断是否从旧的和新的主集群上读取到所述读操作请求所对应的数据,

步骤S42,若在旧的或新的主集群读取到对应的数据,则返回该数据;在此,若从旧的或新的主集群中的其中一个主集群上读取到对应的数据,则直接向返回该读取到的数据即可,以满足用户的读取需求;

步骤S43,若在旧的和新的主集群都读取到对应的数据,则返回新的主集群上读取到的对应的数据。在此,若同时在旧的或新的主集群上都读取到对应的数据,由于新的主集群B上的数据要么是跟旧的主集群A上的数据版本一致,要么是比旧的主集群A上的数据版本更新的版本,即替换后的优先级更高的对应数据的更新版本,所以向用户返回新的主集群上读取到的对应的数据即可。另外,如果在旧的或新的主集群上都未读取到对应的数据,则可以向用户返回读取失败的信息。

如图7所示,根据本申请的另一面,还提供一种集群切换设备100,其中,该设备100包括:

同步装置1,用于在旧的主集群向新的主集群切换开始后,将旧的主集群上待同步的剩余原始数据同步到新的主集群上,其中,将新的主集群上所述剩余原始数据的优先级设置为低级;具体的,旧的主集群A向新的主集群B同步的时间是在旧的主集群A向新的主集群B切换之前开始,旧的主集群A向新的主集群B同步完成时,旧的主集群A向新的主集群B切换也随之完成,这里旧的主集群A向新的主集群B是指将旧的主集群A上的原始数据备份到主集群B,以在旧的主集群A向新的主集群B切换完成后由新的主集群B对外向用户提供数据读写服务,另外,由于旧的主集群A向新的主集群B同步先于集群切换开始,新的主集群B上从旧的主集群A同步来的原始数据包括 集群切换开始前,新的主集群B上从旧的主集群A同步来的原始数据,及集群切换开始后至集群切换结束,新的主集群B上从旧的主集群A同步来的剩余的原始数据,例如,旧的主集群A上原有5000条原始数据,新的主集群B上从旧的主集群A同步来的原始数据包括集群切换开始前,新的主集群B上已经从旧的主集群A同步来的5000条原始数据中的2000条,那么新的主集群B上从旧的主集群A同步来的原始数据还要包括集群切换开始后至集群切换结束,新的主集群B上需要从旧的主集群A同步来的剩余的3000条原始数据,在此,无论是集群切换开始前,还是集群切换开始后至集群切换结束,新的主集群B上从旧的主集群A同步来的原始数据的优先级都设置为低级如0级,以与后续设置为高级的写操作请求对应的新数据如1级相区分;

同步期间写响应装置2,用于在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求,其中,将写操作请求对应的新数据的优先级设置为高级,并只允许在新的主集群上优先级为高级的数据的版本覆盖优先级为低级或高级的同一数据的另一版本;具体的,同步装置1和同步期间写响应装置2是同时进行的,在集群切换开始后,新的主集群B上会存在两类数据,一类是新数据,另一类是从旧的主集群A同步来的原始数据,为了防止从旧的主集群A同步来的原始数据覆盖新数据,并保证新数据如1级数据能够覆盖从旧的主集群A同步来的原始数据(低级数据如0级数据)或者更新的新数据(同级数据如1级数据),这里设置只允许新的主集群B上优先级为高级的数据的版本覆盖优先级为低级或高级的同一数据的另一版本,例如,新的主集群B上有一从旧的主集群上同步来的原始数据a=100,随后用户发起一个写操作请求所对应的新数据为a=200,由于a=100的数据级别为低级如0级,而a=200的数据级别为高级如1级,则高级数据覆盖同一数据低级版本,新的主集群B上a数据的值对应更新为200,如果,接着又有用户发起一个更新的写操作请求所对应的新数据为a=300,则高级覆盖同一数据之前同级版本,新的主集群上a数据的值对应更新为 300;又如,在新的主集群B上用户发起一个写操作请求所对应的新数据为a=200,随后,又有一从旧的主集群A上同步来的原始数据a=100,由于a=100的数据级别为低级如0级,而a=200的数据级别为高级如1级,则低级不能覆盖同一数据高级版本,新的主集群上a数据的值对应仍为200;

同步结束写响应装置3,用于在将旧的主集群上待同步的剩余原始数据同步到新的主集群结束后,在新的主集群上响应写操作请求。具体的,同步结束写响应装置3是在同步装置1和同步期间写响应装置2执行之后进行,在集群同步结束后,由于旧的主集群A的所有原始数据已经都同步到新的主集群B上,所以只要在新的主集群B上响应数据写操作请求即可,也不再需要区分新的主集群B上数据的优先级。本实施例能够在不影响用户使用的情况下,切换对外服务的主集群,即在不需要禁止用户访问的情况下,在切换开始后至切换结束期间使用户能读写到全部数据,并且旧的和新的主集群上数据能够保证一致,实现集群间数据的无缝迁移或备份。

如图8所示,本申请的集群切换设备一优选的实施例中,所述设备100还包括同步期间读响应装置4,用于在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在旧的和新的主集群上响应的读操作请求;

所述设备100还包括同步结束读响应装置5,用于在将旧的主集群上待同步的剩余原始数据同步到新的主集群结束后,在新的主集群上响应读操作请求。具体的,在集群同步结束前,需要在旧的和新的主集群上响应在旧的主集群A向新的主集群B同步期间的数据读操作请求,以避免集群同步结束前,在有些原始数据还没有同步到新的主集群的情况下,即使没有在新的主集群B上找到需要的原始数据,还可以在旧的主集群上找到需要的原始数据,所以这时需要同时在旧的和新的主集群上响应在旧的主集群A向新的主集群B同步期间的数据读操作请求;而在集群同步结束后,由于旧的主集群的所有原始数据已经都同步到新的主集群上,所以只要在新的主集群上响应数据读操作请求即可,都可以满足用户的数据需求。

本申请的集群切换设备一优选的实施例中,所述写操作请求包括对数据的新增、改写和删除操作请求。具体的,旧的主集群向新的主集群切换开始后,用户的写操作请求在新的主集群上新增其没有的数据,或者对已有的数据版本的修改,或者对已有数据的删除,从而满足用户的各种写操作需求。本领域技术人员应能理解上述写操作请求的描述仅为举例,其他现有的或今后可能出现的写操作请求的描述如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

如图9所示,本申请的集群切换设备一优选的实施例中,所述设备100还包括新增或改写请求消息队列装置6,用于当所述写操作请求为对数据的新增或改写时,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求的同时,将所述新增或改写操作请求写入消息队列,从所述消息队列中读取新增或改写操作请求,将读取到的新增或改写操作请求所对应的新的主集群上的新增或改写数据同步到旧的主集群上后,删除消息队列中所述读取到的写操作请求。在此,消息队列中的写操作请求用于标注新的主集群B上待同步到旧的主集群A上的新增或改写数据,在每完成将新的主集群B上的一个新增或改写数据同步到旧的主集群A上之后,则将对应的一个写操作请求删除,从而保证旧的和新的主集群上数据的一致性,始终保持两个集群上的数据同步,以满足当又有从新的主集群B切换回旧的主集群A的需求。本领域技术人员应能理解上述消息队列的描述仅为举例,其他现有的或今后可能出现的消息队列的描述如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

本申请的集群切换设备一优选的实施例中,所述新增或改写请求消息队列装置6,用于判断新的主集群上是否存在读取到的新增或改写操作请求所对应的新增或改写数据,若存在,将该新增或改写数据同步到旧的主集群上,删除消息队列中所述读取到的新增或改写操作请求,在此,如果一次数据同步失败,可以不停地重试,直到新的主集群的新增或改写数据被成功同步入 旧的主集群A为止;若不存在,删除消息队列中所述读取到的新增或改写操作请求,在此,当新增或改写数据写入新的主集群B失败时,虽然消息队列里记录有对应的新增或改写操作请求,但此时不需要同步新的主集群B中没有的数据到旧的主集A,直接将消息队列中所述读取到的新增或改写操作请求删除即可,从而保证旧的和新的主集群上数据的一致性。本领域技术人员应能理解上述新的主集群上是否存在读取到的新增或改写操作请求的描述仅为举例,其他现有的或今后可能出现的新的主集群上是否存在读取到的新增或改写操作请求的描述如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

如图10所示,本申请的集群切换设备一优选的实施例中,所述设备100还包括删除请求消息队列装置7,用于当所述写操作请求为对数据的删除操作请求时,在将旧的主集群上待同步的剩余原始数据同步到新的主集群期间,在新的主集群上响应写操作请求的同时,将所述删除操作请求写入消息队列,从消息队列中读取删除操作请求,根据读取到删除操作请求使所述旧的和新的主集群上的对应数据保持一致后,删除消息队列中所述读取到的删除操作请求。在此,消息队列中的写操作请求用于标注新的主集群B上待与旧的主集群A上的对应数据保持一致的删除数据,在每完成将新的主集群B上的一个删除数据与旧的主集群A上数据一致之后,则将对应的一个写操作请求删除,从而保证旧的和新的主集群上数据的一致性,始终保持两个集群上的数据同步,以满足当又有从新的主集群B切换回旧的主集群A的需求。本领域技术人员应能理解上述消息队列的描述仅为举例,其他现有的或今后可能出现的消息队列的描述如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

本申请的集群切换设备一优选的实施例中,所述删除请求消息队列装置7,用于若读取到删除操作请求所对应的删除数据在旧的和新的主集群上都不存在,则删除消息队列中所述读取到的删除操作请求,此时,所述旧的和 新的主集群上的对应数据已经保持一致,直接删除消息队列中所述读取到的删除操作请求即可;若读取到删除操作请求所对应的删除数据在新的主集群上不存在,而在旧的主集群上存在,则删除旧的主集群上对应的删除数据后,删除消息队列中所述读取到的删除操作请求,在此,由于新的主集群上的对应数据已经删除,则应对应将旧的主集群上对应的删除数据,然后删除消息队列中所述读取到的删除操作请求,从而使所述旧的和新的主集群上的对应数据保持一致;若读取到删除操作请求所对应的删除数据在旧的主集群上不存在,而在新的主集群上存在,则将新的主集群上对应的删除数据同步到旧的主集群上后,删除消息队列中所述读取到的删除操作请求,在此,由于新的主集群B上应该删除的数据没有删除,为了使旧的主集群A与新的主集群B始终保持一致,可以将新的主集群B上该未删除的数据删除同步到旧的主集群A后,再删除消息队列中对应的删除操作请求;若读取到删除操作请求所对应的删除数据在旧的和新的主集群上都存在,则删除消息队列中所述读取到的删除操作请求,在此,所述旧的和新的主集群上的对应数据已经保持一致,直接删除消息队列中所述读取到的删除操作请求即可。本领域技术人员应能理解上述所述旧的和新的主集群上的对应数据保持一致的描述仅为举例,其他现有的或今后可能出现的所述旧的和新的主集群上的对应数据保持一致的描述如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

本申请的集群切换设备一优选的实施例中,所述同步期间读响应装置4,用于判断是否从旧的和新的主集群上读取到所述读操作请求所对应的数据,若在旧的或新的主集群读取到对应的数据,则返回该数据,在此,若从旧的或新的主集群中的其中一个主集群上读取到对应的数据,则直接向返回该读取到的数据即可,以满足用户的读取需求;若在旧的和新的主集群都读取到对应的数据,则返回新的主集群上读取到的对应的数据,在此,若同时在旧的或新的主集群上都读取到对应的数据,由于新的主集群B上的数据要么是 跟旧的主集群A上的数据版本一致,要么是比旧的主集群A上的数据版本更新的版本,即替换后的优先级更高的对应数据的更新版本,所以向用户返回新的主集群上读取到的对应的数据即可。

综上所述,本申请通过在旧的主集群向新的主集群同步期间,在新的主集群上响应写操作请求,并将写操作请求对应的新数据的优先级设置为高级,其中,只允许在新的主集群上优先级为高级的数据的版本覆盖优先级为低级或高级的同一数据的另一版本,能够在不影响用户使用的情况下,切换对外服务的主集群,即在不需要禁止用户访问的情况下,在切换开始后至切换结束期间使用户能读写到全部数据,并且旧的和新的主集群上数据能够保证一致,实现集群间数据的无缝迁移或备份。

进一步的,本申请通过将所述新增或改写操作请求写入消息队列,从所述消息队列中读取新增或改写操作请求,将读取到的新增或改写操作请求所对应的新的主集群B上的新增或改写数据同步到旧的主集群A上后,删除消息队列中所述读取到的写操作请求,从而保证旧的和新的主集群上数据的一致性,始终保持两个集群上的数据同步,以满足当又有从新的主集群B切换回旧的主集群A的需求。

进一步的,本申请通过将所述删除操作请求写入消息队列,从消息队列中读取删除操作请求,根据读取到删除操作请求使所述旧的和新的主集群上的对应数据保持一致,删除消息队列中所述读取到的删除操作请求,从而保证旧的和新的主集群上数据的一致性,始终保持两个集群上的数据同步,以满足当又有从新的主集群B切换回旧的主集群A的需求。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设 备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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