CN117880302A - 一种不同对象存储集群之间同步元数据的方法和系统 - Google Patents
一种不同对象存储集群之间同步元数据的方法和系统 Download PDFInfo
- Publication number
- CN117880302A CN117880302A CN202311712678.8A CN202311712678A CN117880302A CN 117880302 A CN117880302 A CN 117880302A CN 202311712678 A CN202311712678 A CN 202311712678A CN 117880302 A CN117880302 A CN 117880302A
- Authority
- CN
- China
- Prior art keywords
- metadata
- event
- task
- cluster
- event notification
- 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 82
- 230000008569 process Effects 0.000 claims abstract description 50
- 238000013508 migration Methods 0.000 claims description 43
- 230000005012 migration Effects 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 15
- 238000012986 modification Methods 0.000 claims description 13
- 230000004048 modification Effects 0.000 claims description 13
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 230000001360 synchronised effect Effects 0.000 claims description 10
- 230000007246 mechanism Effects 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 4
- 239000012634 fragment Substances 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000007726 management method Methods 0.000 description 23
- 230000007704 transition Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000002071 nanotube Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种不同对象存储集群之间同步元数据的方法和系统,其涉及新兴信息技术技术领域,旨在解决元数据同步是一个需要时间的过程,在该过程中,源端集群中的对象还在不断地进行增删,对象的元数据也还在不断变化,如何将这些变化实时进行同步是一个着重需要解决的问题,其技术方案要点是一种不同对象存储集群之间同步元数据的方法和系统,包括主系统,所述主系统包括任务管理模块、全量元数据迁移模块和事件通知同步模块;不同对象存储集群之间同步元数据的方法如下:(1)创建并监听事件通知;(2)进行全量元数据同步;(3)消费事件通知;(4)根据事件通知同步元数据变化。达到了元数据同步无误差的效果。
Description
技术领域
本发明涉及新兴信息技术技术领域,尤其是涉及一种不同对象存储集群之间同步元数据的方法和系统。
背景技术
分布式对象存储应用非常广泛,具有数据实时存取的优势,但是分布式存储面临一个问题,就是一些比较老旧的存储资源集群可能已经使用时间较长,整体容量已经较满,并且因为硬件、环境等原因无法进行物理上的容量扩展,或者进行物理扩展的成本较高;
这时候可以使用纳管的方式将其纳入另外一个本地或者异地的其他新集群进行管理,将流量切换到新集群,新写入的数据可以直接写到新集群,从而使源端存储集群的使用率不再继续上升,读取数据时新集群可以根据特定管理机制依据对象元数据中的存储位置等信息定位数据,判断去老集群还是去新集群获取该数据。
上述中的现有技术方案存在以下缺陷:但是这种方式有一个前提条件,那就是新集群必须拥有存在老集群中所有对象的元数据,元数据是对象存储中描述一个对象属性的信息记录,记录了对象的大小,修改时间,存储位置等重要信息,只有拥有了对象的元数据才能对对象进行管理,元数据同步是一个需要时间的过程,在该过程中,源端集群中的对象还在不断地进行增删,对象的元数据也还在不断变化,如何将这些变化实时进行同步是一个着重需要解决的问题。
发明内容
本发明的目的是提供一种自动化地将源端存储集群的元数据全量同步到目的端存储集群的不同对象存储集群之间同步元数据的方法和系统。
为实现上述目的,本发明提供了如下技术方案:
一种不同对象存储集群之间同步元数据的方法和系统,包括主系统,所述主系统包括任务管理模块、全量元数据迁移模块和事件通知同步模块;
不同对象存储集群之间同步元数据的方法如下:
S1:先打通两地存储集群之间部分主机的网络,互相开放白名单,确保源端集群与目的端集群能互通;
S2:下发元数据迁移任务,单个任务以桶为单位,任务管理模块首先会根据特定的协议发送请求给源端集群上部署的事件通知模块,事件通知模块收到请求后开启指定桶的事件通知,事件通知开启后,针对该桶中对象进行的所有操作都会以事件的形式写入消息队列,任务管理模块收到开启成功的返回信息后,将其反馈给事件通知同步模块,事件通知同步模块便开始持续监听对应桶的消息队列,但是此时暂时不从消息队列中读取事件进行处理,任何没有开启元数据同步任务或者开启任务后进行了停止操作的桶都会被标记为Absence状态,表明该桶的元数据同步任务没有开启;
S3:成功连接并开始监听事件通知后,任务管理模块通知全量元数据迁移模块开始对桶进行全量对象元数据获取操作,首先通过全量list操作获取当前桶中所有对象的对象名,之后根据拿到的对象名通过特定接口获取该对象的全部元数据,将其批量写入目的端集群,整个全量迁移过程中桶被标记为Migrate状态;
S4:全量对象元数据迁移过程结束之后,对应桶的状态由Migrate转变为Sync,事件通知同步模块开始消费并处理积压在消息队列中的该桶的事件通知,事件内容包括了事件的类型、发生时间、相关对象名的详细信息,根据事件的类型,处理相应对象的元数据,并更新到目的端集群;
S5:等待事件通知同步模块不断消费消息队列中桶的事件通知,直到消费到的事件的时间与当前时间差距小于一定的阈值,则认为事件的消费追赶上了事件的产生,桶将进入Balance状态,该状态下仍然会继续消费消息队列中的事件,此时事件的产生和消费进入了一种动态平衡状态;
S6:桶进入Balance状态后,除了持续地进行元数据同步之外,还会去矫正在之前过程中迁移出现问题的对象的元数据;
S7:当待迁移的所有桶的事件的产生与消费进入一种动态平衡之后,将源端集群的流量切到目的端集群,之后再等待较短的时间等元数据同步模块完全消费完消息队列中积压的事件通知之后,便可以终止整个元数据同步流程。
进一步地,所述任务管理模块负责元数据同步任务的管理和下发,任务以桶为单位,并对元数据迁移过程中产生的各种信息进行记录。
进一步地,所述全量元数据迁移模块负责从源端存储集群指定的桶中获取当前所有对象的完整元数据,并且将其同步到目的端集群。
进一步地,所述事件通知同步模块负责消费并处理以迁移任务开启为起始时间点对应桶产生的事件通知,将迁移过程中对源端桶内对象进行操作而导致的元数据变化情况同步到目的端集群。
进一步地,所述S3中监听事件类型分为两类,且两类监听事件类型分别为创建类型和删除类型。
进一步地,所述创建类型包括对象的普通上传和分片上传,这类事件主要是PUT和POST操作产生的,获取到该类事件后,事件通知同步模块首先会查询目的端集群中该对象的相关元数据,如果查询不到或者查询到的元数据中显示的修改时间早于该事件的时间,那么事件通知同步模块会根据事件中的对象名去调用特定接口获取该对象的全部元数据,并写入目的端集群,此时如果目的端集群已经存在该对象的元数据,那么则更新覆盖。
进一步地,所述删除类型主要是各类删除请求产生的,获取到该类事件后,事件通知同步模块首先会查询目的端集群中该对象的相关元数据。
进一步地,所述删除类型除非出现对象元数据已经存在目的端集群中并且元数据显示最后修改时间晚于该事件的时间,否则同步模块会将目的端集群中对应对象的元数据删除。
进一步地,所述S1-S7过程中如果同步进程出现了问题,那么任务会进入错误状态,此时桶被标记为Error状态,此时任务管理模块会定时自动执行恢复操作去重新去从断点重试该任务,直到重试成功,此时任务会重新回到出错之前的状态。
进一步地,所述S1-S7过程中通过状态转移机制,模块做到错误的自动处理与重试,且在整个流程中随时进行停止操作中断整个任务,进入Absence状态,并且清除掉已经同步过去的元数据,在任务已经进入到Sync状态后随时进行暂停操作使同步任务进入Paused状态,并且随时进行恢复操作,从之前读取到的消息队列中的位置继续消费事件通知,任务进入Balance状态后,执行完成操作结束同步任务。
综上所述,本发明的有益技术效果为:
1、本发明引入事件通知,不仅能够将元数据全量同步到目的端,还能利用消息队列中的事件通知实现对元数据的动态同步,将迁移时间内源端元数据的变化体现到目的端;
2、本发明引入自动矫正机制,能够自动矫正同步过程中出错的元数据,无需额外的人为矫正,做到元数据同步无误差;
3、本发明使用状态转移机制,整个任务进行过程中每个状态都对应特定的操作,环环相扣,做到元数据同步过程的高度自动化,并且能随时控制,提供灵活可靠的同步任务控制体系。
附图说明
图1为本发明元数据同步系统示意图;
图2为本发明事件通知处理流程示意图;
图3为本发明不同存储集群元数据同步整体流程示意图;
图4为本发明任务状态转移示意图。
具体实施方式
以下结合附图对本发明方法作进一步详细说明。
实施例一
参照图1,一种不同对象存储集群之间同步元数据的方法和系统,包括主系统,所述主系统包括任务管理模块、全量元数据迁移模块和事件通知同步模块;
任务管理模块负责元数据同步任务的管理和下发,任务以桶为单位,并对元数据迁移过程中产生的各种信息进行记录;
全量元数据迁移模块负责从源端存储集群指定的桶中获取当前所有对象的完整元数据,并且将其同步到目的端集群;
事件通知同步模块负责消费并处理以迁移任务开启为起始时间点对应桶产生的事件通知,将迁移过程中对源端桶内对象进行操作而导致的元数据变化情况同步到目的端集群;
不同对象存储集群之间同步元数据的方法如下:
(1)创建并监听事件通知;(2)进行全量元数据同步;(3)消费事件通知;(4)根据事件通知同步元数据变化;
S1:先打通两地存储集群之间部分主机的网络,互相开放白名单,确保源端集群与目的端集群能互通;
S2:下发元数据迁移任务,单个任务以桶为单位,任务管理模块首先会根据特定的协议发送请求给源端集群上部署的事件通知模块,事件通知模块收到请求后开启指定桶的事件通知,事件通知开启后,针对该桶中对象进行的所有操作都会以事件的形式写入消息队列,任务管理模块收到开启成功的返回信息后,将其反馈给事件通知同步模块,事件通知同步模块便开始持续监听对应桶的消息队列,但是此时暂时不从消息队列中读取事件进行处理,任何没有开启元数据同步任务或者开启任务后进行了停止操作的桶都会被标记为Absence状态,表明该桶的元数据同步任务没有开启;
S3:成功连接并开始监听事件通知后,任务管理模块通知全量元数据迁移模块开始对桶进行全量对象元数据获取操作,首先通过全量list操作获取当前桶中所有对象的对象名,之后根据拿到的对象名通过特定接口获取该对象的全部元数据,将其批量写入目的端集群,整个全量迁移过程中桶被标记为Migrate状态;
参照图2,监听事件类型分为两类,且两类监听事件类型分别为创建类型和删除类型;
创建类型包括对象的普通上传和分片上传,这类事件主要是PUT和POST操作产生的,获取到该类事件后,事件通知同步模块首先会查询目的端集群中该对象的相关元数据,如果查询不到或者查询到的元数据中显示的修改时间早于该事件的时间,那么事件通知同步模块会根据事件中的对象名去调用特定接口获取该对象的全部元数据,并写入目的端集群,此时如果目的端集群已经存在该对象的元数据,那么则更新覆盖;
删除类型主要是各类删除请求产生的,获取到该类事件后,事件通知同步模块首先会查询目的端集群中该对象的相关元数据,删除类型除非出现对象元数据已经存在目的端集群中并且元数据显示最后修改时间晚于该事件的时间,否则同步模块会将目的端集群中对应对象的元数据删除;
S4:全量对象元数据迁移过程结束之后,对应桶的状态由Migrate转变为Sync,事件通知同步模块开始消费并处理积压在消息队列中的该桶的事件通知,事件内容包括了事件的类型、发生时间、相关对象名的详细信息,根据事件的类型,处理相应对象的元数据,并更新到目的端集群;
S5:等待事件通知同步模块不断消费消息队列中桶的事件通知,直到消费到的事件的时间与当前时间差距小于一定的阈值,则认为事件的消费追赶上了事件的产生,桶将进入Balance状态,该状态下仍然会继续消费消息队列中的事件,此时事件的产生和消费进入了一种动态平衡状态;
S6:桶进入Balance状态后,除了持续地进行元数据同步之外,还会去矫正在之前过程中迁移出现问题的对象的元数据;
参照图3,S7:当待迁移的所有桶的事件的产生与消费进入一种动态平衡之后,将源端集群的流量切到目的端集群,之后再等待较短的时间等元数据同步模块完全消费完消息队列中积压的事件通知之后,便可以终止整个元数据同步流程,;
参照图4,过程中如果同步进程出现了问题,那么任务会进入错误状态,此时桶被标记为Error状态,此时任务管理模块会定时自动执行恢复操作去重新去从断点重试该任务,直到重试成功,此时任务会重新回到出错之前的状态,过程中通过状态转移机制,模块做到错误的自动处理与重试,且在整个流程中随时进行停止操作中断整个任务,进入Absence状态,并且清除掉已经同步过去的元数据,在任务已经进入到Sync状态后随时进行暂停操作使同步任务进入Paused状态,并且随时进行恢复操作,从之前读取到的消息队列中的位置继续消费事件通知,任务进入Balance状态后,执行完成操作结束同步任务。
实施例二
分布式对象存储应用非常广泛,具有数据实时存取的优势,但是分布式存储面临一个问题,就是一些比较老旧的存储资源集群可能已经使用时间较长,整体容量已经较满,并且因为硬件、环境等原因无法进行物理上的容量扩展,或者进行物理扩展的成本较高,这时候可以使用纳管的方式将其纳入另外一个本地或者异地的其他新集群进行管理,将流量切换到新集群,新写入的数据可以直接写到新集群,从而使源端存储集群的使用率不再继续上升,而读取数据时新集群可以根据特定管理机制依据对象元数据中的存储位置等信息定位数据,判断去老集群还是去新集群获取该数据,但是这种方式有一个前提条件,那就是新集群必须拥有存在老集群中所有对象的元数据,元数据是对象存储中描述一个对象属性的信息记录,记录了对象的大小,修改时间,存储位置等重要信息,只有拥有了对象的元数据才能对对象进行管理,因此不同对象存储集群之间的元数据同步是其中很关键的一步;
媒体存储对象存储数据资源池遍布各地,很多资源池都承载了大量的业务,有些存储集群建设时间较早,使用率较高,因为建设时间较早的部分集群的规划问题,如机房设计等问题,导致对象存储集群无法进行物理上的扩容或者物理扩容成本较高,而由于业务原因,集群仍然不断有数据写入,导致使用率一直处于较高的水平位置,增加了故障风险,一般来说存储集群必须有冗余空间来应对风险,因此对于这些使用率较高的集群,应该停止其数据的继续写入,但是又不能对其承接的业务产生影响,这种情形便可以使用本地或异地新集群纳管老集群的方式,这种方式便捷、成本低且管理方便,此时元数据迁移就成为了其中非常关键的一环,只有目的端新集群拥有源端老集群的所有对象元数据,才能做到对老集群的管理,因此拥有一套可靠的、易操作的元数据同步流程与系统对于整个过程来说至关重要;
元数据同步是一个需要时间的过程,在该过程中,源端集群中的对象还在不断地进行增删,对象的元数据也还在不断变化,如何将这些变化实时进行同步是一个着重需要解决的问题;
该系统主要包括三个部分:任务管理模块,全量元数据迁移模块,事件通知同步模块,如图1所示:
任务管理模块:负责元数据同步任务的管理和下发,任务以桶为单位,并对元数据迁移过程中产生的各种信息进行记录;
全量元数据迁移模块:负责从源端存储集群指定的桶中获取当前所有对象的完整元数据,并且将其同步到目的端集群;
事件通知同步模块:负责消费并处理以迁移任务开启为起始时间点对应桶产生的事件通知,将迁移过程中对源端桶内对象进行操作而导致的元数据变化情况同步到目的端集群;
本专利中实现不同对象存储集群之间元数据同步的具体细节步骤如下:
首先打通两地存储集群之间部分主机的网络,互相开放白名单,确保源端集群与目的端集群能互通;
下发元数据迁移任务,单个任务以桶为单位,任务管理模块首先会根据特定的协议发送请求给源端集群上部署的事件通知模块,事件通知模块收到请求后开启指定桶的事件通知,事件通知开启后,针对该桶中对象进行的所有操作都会以事件的形式写入消息队列,任务管理模块收到开启成功的返回信息后,将其反馈给事件通知同步模块,事件通知同步模块便开始持续监听对应桶的消息队列,但是此时暂时不从消息队列中读取事件进行处理,任何没有开启元数据同步任务或者开启任务后进行了停止(stop)操作的桶都会被标记为Absence状态,表明该桶的元数据同步任务没有开启;
成功连接并开始监听事件通知后,任务管理模块通知全量元数据迁移模块开始对桶进行全量对象元数据获取操作,首先通过全量list操作获取当前桶中所有对象的对象名,之后根据拿到的对象名通过特定接口获取该对象的全部元数据,将其批量写入目的端集群,整个全量迁移过程中桶被标记为Migrate状态;
全量对象元数据迁移过程结束之后,对应桶的状态由Migrate转变为Sync,事件通知同步模块开始消费并处理积压在消息队列中的该桶的事件通知,事件内容包括了事件的类型、发生时间、相关对象名等详细信息。根据事件的类型,处理相应对象的元数据,并更新到目的端集群。这个过程中监听的事件类型主要可以分为两类,如图2所示:
创建(CREATE)类型:包括对象的普通上传和分片上传等,这类事件主要是PUT和POST操作产生的,获取到该类事件后,事件通知同步模块首先会查询目的端集群中该对象的相关元数据,如果查询不到或者查询到的元数据中显示的修改时间早于该事件的时间,那么事件通知同步模块会根据事件中的对象名去调用特定接口获取该对象的全部元数据,并写入目的端集群。此时如果目的端集群已经存在该对象的元数据,那么则更新覆盖;
删除(REMOVE)类型:这部分事件主要是各类删除请求产生的,获取到该类事件后,事件通知同步模块首先会查询目的端集群中该对象的相关元数据,除非出现以下情况:对象元数据已经存在目的端集群中并且元数据显示最后修改时间晚于该事件的时间。否则同步模块会将目的端集群中对应对象的元数据删除;
等待事件通知同步模块不断消费消息队列中桶的事件通知,直到消费到的事件的时间与当前时间差距小于一定的阈值,则认为事件的消费追赶上了事件的产生,桶将进入Balance状态,该状态下仍然会继续消费消息队列中的事件,此时事件的产生和消费进入了一种动态平衡状态,可以理解为刚产生的事件立刻就被消费了;
桶进入Balance状态后,除了持续地进行元数据同步之外,还会去矫正在之前过程中迁移出现问题的对象的元数据,在一个桶进入Balance状态之前的所有过程中出现问题导致其元数据迁移失败的对象,任务管理模块都会进行记录,并写入一个专门的队列中,在Balance状态阶段,迁移模块会去从该队列中读取记录,并根据对象名去单独重新发送请求获取元数据,对其进行矫正,这部分数据也可以手动向模块发起请求去矫正;
当待迁移的所有桶的事件的产生与消费进入一种动态平衡之后,可以将源端集群的流量切到目的端集群,之后再等待较短的时间等元数据同步模块完全消费完消息队列中积压的事件通知之后,便可以终止整个元数据同步流程。这样就完成了目的端集群对源端集群的纳管的重要步骤,整体的元数据同步步骤如图3所示;
在整个过程中如果同步进程出现了问题(比如网络波动等),那么任务会进入错误状态,此时桶被标记为Error状态,此时任务管理模块会定时自动执行恢复(recover)操作去重新去从断点重试该任务,直到重试成功,此时任务会重新回到出错之前的状态,通过状态转移机制,模块可以做到错误的自动处理与重试,在整个流程中随时可以进行停止(stop)操作中断整个任务,进入Absence状态,并且清除掉已经同步过去的元数据,在任务已经进入到Sync状态后随时都可以进行暂停(pause)操作使同步任务进入Paused状态,并且随时可以进行恢复(recover)操作,从之前读取到的消息队列中的位置继续消费事件通知,任务进入Balance状态后,可以执行完成(complete)操作结束同步任务,整个过程中可能存在的状态转移如图4所示;
本专利提出了一种不同对象存储集群之间元数据同步的方法,以桶为级别进行同步管理,该方法能够自动化地将源端存储集群的元数据全量同步到目的端存储集群,并且能过够通过消息队列中的事件通知实时处理元数据的变化情况,做到元数据的零误差动态同步,本专利同时依据该同步方法构造了自动化的元数据同步系统。
重要的是,应注意,在多个不同示例性实施方案中示出的本申请的构造和布置仅是例示性的。尽管在此公开内容中仅详细描述了几个实施方案,但参阅此公开内容的人员应容易理解,在实质上不偏离该申请中所描述的主题的新颖教导和优点的前提下,许多改型是可能的(例如,各种元件的尺寸、尺度、结构、形状和比例、以及参数值(例如,温度、压力等)、安装布置、材料的使用、颜色、定向的变化等),例如,示出为整体成形的元件可以由多个部分或元件构成,元件的位置可被倒置或以其它方式改变,并且分立元件的性质或数目或位置可被更改或改变,因此,所有这样的改型旨在被包含在本发明的范围内,可以根据替代的实施方案改变或重新排序任何过程或方法步骤的次序或顺序,在权利要求中,任何“装置加功能”的条款都旨在覆盖在本文中所描述的执行所述功能的结构,且不仅是结构等同而且还是等同结构。在不背离本发明的范围的前提下,可以在示例性实施方案的设计、运行状况和布置中做出其他替换、改型、改变和省略。因此,本发明不限制于特定的实施方案,而是扩展至仍落在所附的权利要求书的范围内的多种改型。
此外,为了提供示例性实施方案的简练描述,可以不描述实际实施方案的所有特征(即,与当前考虑的执行本发明的最佳模式不相关的那些特征,或与实现本发明不相关的那些特征)。
应理解的是,在任何实际实施方式的开发过程中,如在任何工程或设计项目中,可做出大量的具体实施方式决定。这样的开发努力可能是复杂的且耗时的,但对于那些得益于此公开内容的普通技术人员来说,不需要过多实验,所述开发努力将是一个设计、制造和生产的常规工作
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种不同对象存储集群之间同步元数据的方法和系统,包括主系统,其特征在于:所述主系统包括任务管理模块、全量元数据迁移模块和事件通知同步模块;
不同对象存储集群之间同步元数据的方法如下:
S1:先打通两地存储集群之间部分主机的网络,互相开放白名单,确保源端集群与目的端集群能互通;
S2:下发元数据迁移任务,单个任务以桶为单位,任务管理模块首先会根据特定的协议发送请求给源端集群上部署的事件通知模块,事件通知模块收到请求后开启指定桶的事件通知,事件通知开启后,针对该桶中对象进行的所有操作都会以事件的形式写入消息队列,任务管理模块收到开启成功的返回信息后,将其反馈给事件通知同步模块,事件通知同步模块便开始持续监听对应桶的消息队列,但是此时暂时不从消息队列中读取事件进行处理,任何没有开启元数据同步任务或者开启任务后进行了停止操作的桶都会被标记为Absence状态,表明该桶的元数据同步任务没有开启;
S3:成功连接并开始监听事件通知后,任务管理模块通知全量元数据迁移模块开始对桶进行全量对象元数据获取操作,首先通过全量list操作获取当前桶中所有对象的对象名,之后根据拿到的对象名通过特定接口获取该对象的全部元数据,将其批量写入目的端集群,整个全量迁移过程中桶被标记为Migrate状态;
S4:全量对象元数据迁移过程结束之后,对应桶的状态由Migrate转变为Sync,事件通知同步模块开始消费并处理积压在消息队列中的该桶的事件通知,事件内容包括了事件的类型、发生时间、相关对象名的详细信息,根据事件的类型,处理相应对象的元数据,并更新到目的端集群;
S5:等待事件通知同步模块不断消费消息队列中桶的事件通知,直到消费到的事件的时间与当前时间差距小于一定的阈值,则认为事件的消费追赶上了事件的产生,桶将进入Balance状态,该状态下仍然会继续消费消息队列中的事件,此时事件的产生和消费进入了一种动态平衡状态;
S6:桶进入Balance状态后,除了持续地进行元数据同步之外,还会去矫正在之前过程中迁移出现问题的对象的元数据;
S7:当待迁移的所有桶的事件的产生与消费进入一种动态平衡之后,将源端集群的流量切到目的端集群,之后再等待较短的时间等元数据同步模块完全消费完消息队列中积压的事件通知之后,便可以终止整个元数据同步流程。
2.根据权利要求1所述的一种不同对象存储集群之间同步元数据的方法和系统,其特征在于:所述任务管理模块负责元数据同步任务的管理和下发,任务以桶为单位,并对元数据迁移过程中产生的各种信息进行记录。
3.根据权利要求2所述的一种不同对象存储集群之间同步元数据的方法和系统,其特征在于:所述全量元数据迁移模块负责从源端存储集群指定的桶中获取当前所有对象的完整元数据,并且将其同步到目的端集群。
4.根据权利要求3所述的一种不同对象存储集群之间同步元数据的方法和系统,其特征在于:所述事件通知同步模块负责消费并处理以迁移任务开启为起始时间点对应桶产生的事件通知,将迁移过程中对源端桶内对象进行操作而导致的元数据变化情况同步到目的端集群。
5.根据权利要求4所述的一种不同对象存储集群之间同步元数据的方法和系统,其特征在于:所述S3中监听事件类型分为两类,且两类监听事件类型分别为创建类型和删除类型。
6.根据权利要求5所述的一种不同对象存储集群之间同步元数据的方法和系统,其特征在于:所述创建类型包括对象的普通上传和分片上传,这类事件主要是PUT和POST操作产生的,获取到该类事件后,事件通知同步模块首先会查询目的端集群中该对象的相关元数据,如果查询不到或者查询到的元数据中显示的修改时间早于该事件的时间,那么事件通知同步模块会根据事件中的对象名去调用特定接口获取该对象的全部元数据,并写入目的端集群,此时如果目的端集群已经存在该对象的元数据,那么则更新覆盖。
7.根据权利要求6所述的一种不同对象存储集群之间同步元数据的方法和系统,其特征在于:所述删除类型主要是各类删除请求产生的,获取到该类事件后,事件通知同步模块首先会查询目的端集群中该对象的相关元数据。
8.根据权利要求7所述的一种不同对象存储集群之间同步元数据的方法和系统,其特征在于:所述删除类型除非出现对象元数据已经存在目的端集群中并且元数据显示最后修改时间晚于该事件的时间,否则同步模块会将目的端集群中对应对象的元数据删除。
9.根据权利要求8所述的一种不同对象存储集群之间同步元数据的方法和系统,其特征在于:所述S1-S7过程中如果同步进程出现了问题,那么任务会进入错误状态,此时桶被标记为Error状态,此时任务管理模块会定时自动执行恢复操作去重新去从断点重试该任务,直到重试成功,此时任务会重新回到出错之前的状态。
10.根据权利要求9所述的一种不同对象存储集群之间同步元数据的方法和系统,其特征在于:所述S1-S7过程中通过状态转移机制,模块做到错误的自动处理与重试,且在整个流程中随时进行停止操作中断整个任务,进入Absence状态,并且清除掉已经同步过去的元数据,在任务已经进入到Sync状态后随时进行暂停操作使同步任务进入Paused状态,并且随时进行恢复操作,从之前读取到的消息队列中的位置继续消费事件通知,任务进入Balance状态后,执行完成操作结束同步任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311712678.8A CN117880302A (zh) | 2023-12-13 | 2023-12-13 | 一种不同对象存储集群之间同步元数据的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311712678.8A CN117880302A (zh) | 2023-12-13 | 2023-12-13 | 一种不同对象存储集群之间同步元数据的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117880302A true CN117880302A (zh) | 2024-04-12 |
Family
ID=90595875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311712678.8A Pending CN117880302A (zh) | 2023-12-13 | 2023-12-13 | 一种不同对象存储集群之间同步元数据的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117880302A (zh) |
-
2023
- 2023-12-13 CN CN202311712678.8A patent/CN117880302A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8504523B2 (en) | Database management system | |
CN113396407A (zh) | 用于利用区块链技术扩充数据库应用的系统和方法 | |
US7739547B2 (en) | Failure recovery and error correction techniques for data loading in information warehouses | |
US9639588B2 (en) | Operation method and apparatus for data storage system | |
US7043504B1 (en) | System and method for parallel primary and secondary backup reading in recovery of multiple shared database data sets | |
US5799322A (en) | System and method for stopping updates at a specified timestamp in a remote duplicate database facility | |
US8589642B2 (en) | Computer system duplicating writes by synchronous remote copy with multiple host computers using heterogeneous operating systems | |
US9514208B2 (en) | Method and system of stateless data replication in a distributed database system | |
CN110990432B (zh) | 一种跨机房同步分布式缓存集群的装置和方法 | |
US20040107381A1 (en) | High performance transaction storage and retrieval system for commodity computing environments | |
CN111563102A (zh) | 缓存更新方法、服务器、系统及存储介质 | |
US20050004952A1 (en) | Transaction processing method, transaction control apparatus and program thereof | |
CN111506556A (zh) | 一种多源异构的结构化数据同步方法 | |
JP5331892B2 (ja) | ストレージシステム及びストレージシステムにおけるデータ複製方法 | |
CN113905054A (zh) | 基于RDMA的Kudu集群数据同步方法、装置、系统 | |
CN117880302A (zh) | 一种不同对象存储集群之间同步元数据的方法和系统 | |
JP2012022379A (ja) | 分散トランザクション処理システム、装置、方法およびプログラム | |
CN112799835A (zh) | 一种分布式数据库系统元数据的处理方法及系统 | |
JPH04299435A (ja) | データベース等価方式 | |
JP2865028B2 (ja) | 分散デュープレックス式障害対策装置 | |
JPH09114765A (ja) | 分散型データアクセスシステム | |
JPH10320256A (ja) | 分散データベースシステムのデータ更新制御方法および 装置 | |
CN116450718A (zh) | 基于双控设备的触发式管理系统 | |
CN115712683A (zh) | 数据库的同步方法、装置、计算机设备以及存储介质 | |
CN114385334A (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 |