CN110209526B - 一种存储层同步系统、及存储介质 - Google Patents
一种存储层同步系统、及存储介质 Download PDFInfo
- Publication number
- CN110209526B CN110209526B CN201810924990.6A CN201810924990A CN110209526B CN 110209526 B CN110209526 B CN 110209526B CN 201810924990 A CN201810924990 A CN 201810924990A CN 110209526 B CN110209526 B CN 110209526B
- Authority
- CN
- China
- Prior art keywords
- storage layer
- data
- repair
- message
- server
- 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
Images
Classifications
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种存储层同步系统、及存储介质。其中,存储层同步系统中的存储层包括互为异地的主存储层和从存储层,所述系统包括:存储层接口,消息中间件和搬迁服务器;所述存储层接口,用于在接收到数据更新方发送的更新消息后,分别向主存储层和消息中间件发送所述更新消息,所述更新消息包含更新数据的信息;所述消息中间件,用于在接收到所述更新消息后,分别向所述主存储层和所述搬迁服务器发送所述更新消息;所述搬迁服务器,用于读取所述主存储层执行所述更新消息得到的更新后数据;向从存储层发送写请求以及所述更新后数据;所述写请求用于请求从存储层将所述更新后数据存入所述从存储层。可以降低系统维护难度。
Description
技术领域
本发明实施例涉及存储技术领域,特别涉及一种存储层同步系统、及存储介质。
背景技术
数据备份是容灾切换的基础,数据备份是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从主存储层复制到其它的存储层,使主存储层和备存储层数据保持一致的过程。该其他存储层相对于主存储层而言称为从存储层或备存储层。
数据备份领域的异地也称为异地备份是指主存储层和从存储层位于不同的地理位置。通常来说不同地理位置会跨城市。
数据备份的方式较多,例如:冷备份和热备份,其中冷备份通常需要停机备份,恢复时间较长;热备份则是实时备份,通常支持热切换和恢复。数据同步是数据备份中数据保持一致所涉及的具体方案。
在目前的容灾系统中,数据同步与容灾切换之间各自具有强耦合性,因此需要分别独立开发,导致重复开发多,维护难度大。
发明内容
本发明实施了提供了一种存储层同步系统、及存储介质。用于减少重复开发,降低维护难度。
本发明实施例提供了一种存储层同步系统,所述存储层包括互为异地的主存储层和从存储层,其特征在于,包括:
存储层接口,消息中间件和搬迁服务器;
所述存储层接口,用于在接收到数据更新方发送的更新消息后,分别向主存储层和消息中间件发送所述更新消息,所述更新消息包含更新数据的信息;
所述消息中间件,用于在接收到所述更新消息后,分别向所述主存储层和所述搬迁服务器发送所述更新消息;
所述搬迁服务器,用于读取所述主存储层执行所述更新消息得到的更新后数据;向从存储层发送写请求以及所述更新后数据;所述写请求用于请求从存储层将所述更新后数据存入所述从存储层。
在一个可能的实现方式中,所述系统还包括:修复控制系统;
所述存储层接口,还用于获取所述主存储层收到所述更新消息后的操作结果信息,将所述操作结果发送给所述修复控制系统;
所述搬迁服务器,还用于获取所述从存储层存入所述更新后数据的同步结果信息,将所述同步结果信息发送给所述修复控制系统;
所述修复控制系统,用于获取所述同步结果信息与所述操作结果信息的差集,在所述差集不为空的情况下确定同步错误。
在一个可能的实现方式中,所述存储层接口,用于获取所述主存储层收到所述更新消息后的操作成功或失败的生产者流水表,将所述生产者流水表发送给所述修复控制系统;
所述搬迁服务器,用于获取所述从存储层存入所述更新后数据成功或失败的消费者流水表,将所述消费者流水表发送给所述修复控制系统;
所述修复控制系统,用于获取所述生产者流水表与所述消费者流水表的差集,在所述差集不为空的情况下确定同步错误。
在一个可能的实现方式中,所述系统还包括:修复服务器;
所述修复控制系统,还用于将所述差集发送给所述修复服务器;
所述修复服务器,用于接收所述修复控制系统发送的所述差集,若所述差集表示所述从存储层失败且所述主存储层成功,则所述更新后数据;向从存储层发送修复写请求以及所述更新后数据;所述修复写请求用于请求从存储层将所述更新后数据存入所述从存储层。
在一个可能的实现方式中,所述更新消息包括:数据对象以及操作类型。
在一个可能的实现方式中,所述消息中间件为分布式的消息中间件。
在一个可能的实现方式中,所述存储层接口,还用于接收数据访问方发送的读请求;若确定所述主存储层处于正常状态或者探测期,则向所述主存储层发送所述读请求;所述探测期为探测所述主存储层是否故障的时间段;若确定所述主存储层故障,则向所述从存储层发送所述读请求。
在一个可能的实现方式中,所述存储层接口,还用于在探测期内对所述主存储层进行探测,在探测结果符合故障规则时确定所述主存储层故障。
在一个可能的实现方式中,所述存储层接口,用于统计在探测期内所述主存储层的延迟、连续错误数、最大错误率、恢复成功率中的一项或多项获得探测结果,在探测结果符合故障规则时确定所述主存储层故障。
本发明实施例还提供了一种存储介质,其特征在于,所述存储介质中存储有多条程序指令,所述程序指令适于由处理器加载并执行本发明实施例提供的所述系统中的存储层接口、消息中间件和搬迁服务器的功能,或者,存储层接口、消息中间件、搬迁服务器以及修复控制系统的功能,或者,存储层接口、消息中间件、搬迁服务器、修复控制系统以及修复服务器的功能。
本实施例中的数据更新消息被数据更新方发送给存储层接口,存储层接口将数据更新消息发往主存储层和消息中间件,搬迁服务器在接收到消息中间件转发的数据更新消息后更新从存储层所存储的数据,实现了主存储层和从存储层之间数据同步解耦,为数据同步开发的复用提供了便利,相应地可以降低系统维护难度。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1为本发明实施例存储层异地同步的系统结构示意图;
图2为本发明实施例存储层异地同步的系统结构示意图;
图3为本发明实施例异地容灾切换的应用场景示意图;
图4为本发明实施例方法流程示意图;
图5为本发明实施例方法流程示意图;
图6为本发明实施例存储层跨城同步的系统结构示意图;
图7为本发明实施例方法流程示意图;
图8为本发明实施例电子设备结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在容灾备份的技术领域,异地备份是对信息安全要求较高时所采用的备份方式,主设备和从设备“异地”,是指两者至少在物理上是相互独立的,如果异地备份系统对信息安全要求越高,则主设备和从设备之间在地理上距离应当越远,例如:目前对信息安全要求较高的场景下,异地备份要求跨城。因此,在后续实施例中涉及的主存储层和从存储层是“异地”的设备,两者之间在地理上的距离依存储系统对安全性的要求不同而不同,但他们至少应当是在物理上相互独立的设备。在本发明实施例中涉及的其他设备所称的地理上“本地”是相对于“异地”而言的;若“异地”指跨城相对而言“本地”则可以指同城,若“异地”指跨设备,那边“本地”则可以指同设备。
如图1所示,为本发明实施例所涉及的存储层异地同步的系统结构图,在图1中示意了数据中心、主存储层、搬迁服务器、以及从存储层;其中数据中心可以是提出数据更新需求的设备,主存储层与数据中心在地理上是本地设备,搬迁服务器通常可以为主存储层的本地设备;从存储层位于主存储层的异地。其中搬迁服务器用于将主存储层的数据同步到从存储层。在图1所示的系统中可以还包括切换控制的设备,切换控制也可以由数据中心自己实现;切换控制的功能是在主存储层故障的情况下,数据中心从访问主存储层切换到访问从存储层。
基于图1所示的系统架构,本发明实施例提供了一种存储层同步系统,上述存储层包括互为异地的主存储层和从存储层,如图2所示,可以一并参考图6,包括:
存储层接口,消息中间件和搬迁服务器;其中,图2中所示的数据中心作为数据更新方、主存储层以及从存储层可以使用目前通用的硬件设备,不作为本发明实施例的存储层同步系统的组成部分;
上述存储层接口,用于在接收到数据更新方发送的更新消息后,分别向主存储层和消息中间件发送上述更新消息,上述更新消息包含更新数据的信息;
上述消息中间件,用于在接收到上述更新消息后,分别向上述主存储层和上述搬迁服务器发送上述更新消息;
上述搬迁服务器,用于读取上述主存储层执行上述更新消息得到的更新后数据;向从存储层发送写请求以及上述更新后数据;上述写请求用于请求从存储层将上述更新后数据存入上述从存储层。
本实施例中的更新消息用于指定对某数据执行更新操作,因此该更新消息可以包含的信息具体如:被更新的数据对象的信息以及更新操作的操作类型;其中,被更新的数据对象的信息可以包括该被更新的数据对象的地址、键值等能够定位该被更新的数据对象的信息;更新操作的操作类型一般可以包括:修正、更改、删除等会导致数据对象发生变化的操作类型。
在本实施例中,消息中间件(middleware)可以通过(metamorphosis,MetaQ)在内的消息中间件实现。MetaQ是一个免费开源、高性能、高可用、可扩展的分布式消息中间件,思路起源于Kafka(一种分布式发布订阅消息系统),但并不是Kafka的一个复制(Copy)。MetaQ具有消息存储顺序写、吞吐量大和支持本地和XA(数据库与事务管理器的接口标准)事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景。
在本实施例中,数据更新方可以是图1或2中的数据中心。
本实施例中的该数据更新消息被数据更新方发送给存储层接口,存储层接口将数据更新消息发往主存储层和消息中间件,搬迁服务器在接收到消息中间件的数据更新消息后更新从存储层所存储的数据,实现了主存储层和从存储层之间数据同步解耦,为数据同步开发的复用提供了便利,相应地可以降低系统维护难度。
以上实施例中的搬迁服务器使用的是从主存储层读取更新后数据然后写入到从存储层的数据同步方式,本实施例还可以使用在从存储层执行与主存储层相同的更新数据的操作实现数据同步,具体如下:
上述搬迁服务器,具体向上述从存储层发送上述更新消息,使上述从存储层执行上述更新消息所指定的数据更新操作。
在本实施例中,更新消息中包含更新数据的信息,以更新数据的信息包含操作类型+操作对象为例;前一实施例是在主存储层对上述操作对象执行上述操作类型后(即:主存储层数据更新后),将更新后的数据迁移到从存储层,那么主存储层和从存储层的数据可以保持一致。本实施例则是对从存储层的上述操作对象执行上述操作类型;由于主存储层对相同的操作对象执行了相同的操作类型,那么主存储层和从存储层的数据也可以保持一致。其中,采用本实施例需要在初始状态下主存储层和从存储层数据具有一致性。
本实施例进一步还提供了数据修复所需依据的获得方案,上述系统还包括:
上述存储层接口,还用于获取上述主存储层收到上述更新消息后的操作结果信息,将上述操作结果发送给上述修复控制系统;
上述搬迁服务器,还用于获取上述从存储层存入上述更新后数据的同步结果信息,将上述同步结果信息发送给上述修复控制系统;
上述修复控制系统,用于获取上述同步结果信息与上述操作结果信息的差集,在上述差集不为空的情况下确定同步错误。
本实施例在增设存储层接口以及消息中间件的基础上还提供了修复控制系统,搬迁服务器和存储层接口都会将各自的同步结果和操作结果发送给修复控制系统,修复控制系统可以计算其中的差集;差集不为空的情况下,表示其中有某一方并没有正确更新数据,那么可以确定同步错误。
本实施例中的修复控制系统可以通过Storm实现,Storm是一个免费开源、分布式、高容错的实时分布式系统。
更具体地,上述存储层接口,用于获取上述主存储层收到上述更新消息后的操作成功或失败的生产者流水表,将上述生产者流水表发送给上述修复控制系统;
上述搬迁服务器,用于获取上述从存储层存入上述更新后数据成功或失败的消费者流水表,将上述消费者流水表发送给上述修复控制系统;
上述修复控制系统,用于获取上述生产者流水表与上述消费者流水表的差集,在上述差集不为空的情况下确定同步错误。
在本实施例中,上述同步结果信息与上述操作结果信息分别使用消费者流水表和生产者流水表来携带,在修复控制系统中可以方便快捷地计算两者的差集。该生产者流水表和消费者流水表可以包含的信息为:数据更新的对象+操作类型+成功/失败。
基于前文中修复控制系统本实施例提供了在数据同步过程中的数据修复方案,具体如下:上述系统还包括:修复服务器;
上述修复控制系统,还用于将上述差集发送给上述修复服务器;
上述修复服务器,用于接收上述修复控制系统发送的上述差集,若上述差集表示上述从存储层失败且上述主存储层成功,则读取上述更新后数据,向从存储层发送修复写请求以及上述更新后数据;上述修复写请求用于请求从存储层将上述更新后数据存入上述从存储层。
如果上述差集表示上述主存储层失败,上述修复服务器可以等待;此时,存储层接口会重复向主存储层发送上述更新消息;如果主存储层持续更新失败,那么主存储层可能已经发生故障,此时主存储层将无法正常使用。
作为一个优选的实现方式,上述消息中间件为分布式的消息中间件。采用分布式消息中间件可以进一步利用分布式计算的优势提高消息中间件的可靠性和包括数据处理能力在内的综合性能。
基于以上存储层同步系统,本发明实施例还提供了容灾切换的方案,包括:
上述存储层接口,还用于接收数据访问方发送的读请求;若确定上述主存储层处于正常状态或者探测期,则向上述主存储层发送上述读请求;上述探测期为探测上述主存储层是否故障的时间段;若确定上述主存储层故障,则向上述从存储层发送上述读请求。
在本实施例中,数据访问方可以是图1、2以及图6中的数据中心也可以是其他访问存储层的设备,本实施例对此不予限定。读请求可以携带的信息包括数据对象+操作类型;其中数据对象用于定位被读取的数据,操作类型为读操作。
由于本发明实施例所提供的存储层同步系统实现了数据同步解耦,为数据容灾切换的复用提供了便利,相应地可以降低系统维护难度。以上正常状态是指主存储层处于正常工作的状态,此时没有故障;以上探测期是指确定是不是发生了故障的阶段,因此该状态下主存储层可能已经发生了故障,也可能并未发生故障。
在以上实施例中,需要确定主存储层是否故障,本实施例还提供了探测方法:上述方法还包括:
在探测期内对上述主存储层进行探测,在探测结果符合故障规则时确定上述主存储层故障。
上述故障规则可以是任意的用于确定存储设备是否故障的规则,涉及的参数例如:延迟、连续错误数、最大错误率、恢复成功率等。延迟、连续错误数以及最大错误率越大可以认为故障可能性更大,恢复成功率越低可以认为故障可能性越大。具体如何使用这些参数在此不再赘述。
基于前面故障规则的举例,本发明实施例提供的探测方法如下:上述在探测期内对上述主存储层进行探测,在探测结果符合故障规则时确定上述主存储层故障包括:
统计在探测期内上述主存储层的延迟、连续错误数、最大错误率、恢复成功率中的一项或多项获得探测结果,在探测结果符合故障规则时确定上述主存储层故障;在探测周期结束或者确定上述主存储层故障则清除上述探测结果。
基于以上实施例所提供技术方案,本发明实施例还提供了进一步的应用场景举例。
如图3所示,为异地容灾切换的应用场景举例,如图4所示为基于图4所示应用场景的容灾切换流程。
该容灾切换主要内容包括:优先访问同城,同城故障则切换异地,同城恢复则切换回同城。该容灾切换流程包括:
401:获取存储层节点;
在本步骤由数据中心中的存储层应用程序编程接口(Application ProgrammingInterface,API)执行,具体可以获得位于深圳本地的存储层以及位于上海的异地存储层。其中深圳本地的存储层为主存储层,位于上海的异地存储层为从存储层。在本实施例中存储层接口通过存储层API实现,该存储层API可以是数据中心的一部分。
402:存储层API探测本地存储层以及异地存储层,确定同城存储成是否正常或者处于探测期,如果是,进入403,否则进入404;
在本步骤中,存储层API可以在周期内(如1分钟)统计延迟、连续错误数、最大错误率、恢复成功率等动态评估某存储层为粒度的服务质量,从而确定是否有执行容灾切换的必要性。
403:访问同城存储层;
404:确定异地存储层是否处于探测期并且没有探测次数了,如果是进入403,否则进入405;
以上处于探测期并且没有探测次数了,是不能确定异地存储层是正常的一种情况。在后续实施例中会对探测次数进行举例说明。
405:访问异地存储层。
以上402以及403中关于探测期执行探测的具体流程,如图5所示包括:
首先初始化,如下:更新存储层的键值(key-value,CKV)节点;确定出现超时/错误以及最大耗时;如果有探测次数,每访问一次探测次数减少一次;然后进入如下三个部分,分别为:501:更新CKV节点信息,502:故障探测周期;503:恢复探测周期;其中501是更新CKV节点信息的步骤,502是探测是否发生故障的周期;504是探测出现故障的存储层是否恢复正常的周期;在以下实施例中,探测的参数选取了访问次数、延迟、连续错误次数、最大错误率、恢复成功率中的部分参数执行统计。基于前文说明以上探测参数仅为举例,不应理解为可以用于确定是否故障的全部参数的穷举,因此以上举例不应理解为对本发明实施例的唯一性限定。
501:更新CKV节点信息:
5011:先进先出,计算最大样本个数的总耗时;
5012:统计总的访问次数;
5013:如超时,增加CKV错误次数;
如上一次已失败,则增加CKV连续错误次数;
否则设置上一次操作为失败,并设置连续周期内CKV连续错误次数为1;
在探测期间发生故障,将探测力度降低到最低;
5014:如非超时,设置连续成功数;
设置上一次成功标识;
设置周期内CKV连续错误次数为0;
5015:如CKV样本总耗时≥CKV读取超时时间*样本数,之前处于非故障,则设置为故障标识;并且把CKV故障及其探测窗口设置为1;更新CKV故障探测剩余值为:PCW(CKV故障及其探测(窗口值),(CKV修复探测指数:3))
502:故障探测周期:
5021:连续错误次数≥允许的最大连续错误次数,则设置为故障标识;
5022:错误率≥允许的最大错误率,则设置为故障标识;
5023:如果被设置为故障标识,则设置CKV样本点数组耗时为CKV读取超时时间;
CKV样本点总耗时为CKV读取超时时间*样本数;
并且把CKV故障及其探测窗口值设置为1;
CKV故障探测剩余值为:PCW((CKV故障机器探测窗口值:1),(CKV恢复探测指数:3))
5024:数据清零,重新开始下一周期检测;
设置周期内CKV错误次数为0;
设置周期内CKV成功次数为0;
设置周期内CKV连续错误次数为0;
5025:设置CKV检查最后时间点为当前时间;
503:恢复探测周期:
5031:检测CKV是否健康;统计CKV样本点数组耗时;
小于CKV读取超时时间的有多少个健康数;
健康数/样本数≥恢复周期,则认为健康,否则非健康;
5032:如果非健康Restore,并且上一次为成功标识,则CKV故障机器探测窗口值加1;
CKV故障他侧剩余值+=PCW(CKV故障机器探测窗口值,CKV恢复探测指数:3)
5033:如果非健康Restore,并且上一次为失败标识,给最少探测次数:把CKV故障机器探测窗口值设置为1;
CKV故障探测剩余值为:PCW((CKV故障机器探测窗口值:1),(CKV恢复探测指数:3))
5034:如已经恢复,设置CKV为非故障标识;
设置CKV故障机器探测窗口值为0;
设置CKV故障探测剩余值为0;
这是周期内CKV连接错误次数为0;
设置周期内CKV连续错误次数为0;
5035:设置CKV检查最后时间节点为当前时间。
基于前文说明,本发明实施例提供如图6所示的系统架构图;在图6所示系统架构图中,还示意了数据传递的内容。
如图6所示,存储层的跨城容灾写同步主要包含5个部分:数据中心以及数据中心的存储层应用程序编程接口(Application Programming Interface,API),MetaQ、实时搬迁服务、Storm(修复控制系统)、修复数据服务器。
核心流程包括:更新存储层数据的消息为:(key[键]+optype[操作类型])通过MetaQ实时旁路。实时搬迁服务从主存储层搬迁数据写到从存储层。通过storm对账生产者和消费者流水表计算差集及失败流水,进行修复。其中差异数据和失败数据使用修复数据功能,可以使用crontab函数实现周期性的读实现。
基于以上图6所示的系统,具体涉及写数据的流程,如图7所示,主要包括三个部分:
第一部分,数据更新:
1.1、数据中心通过存储层API在深圳本地的存储层执行更新存储数据;
1.2、存储层API向MetaQ发送更新消息,更新消息携带的是(key[键]+optype[操作类型]);
在本步骤中,(key[键]+optype[操作类型])与上一步骤中更新存储数据是对应的。
1.3、如果数据中心在深圳本地的存储层执行更新存储数据成功,则上报上述(key[键]+optype[操作类型])给Storm。
第二部分,数据同步:
2.1、MetaQ将消费消息发送给执行搬迁服务的服务器,在消费消息中携带上述(key[键]+optype[操作类型]);
2.2、执行搬迁服务器的服务器根据消费消息中的键值从主存储层读取数据,该主存储层就是位于深圳的数据中心本地的存储层;
2.3、将读取到的数据存入从存储层,该从存储层即位于上海的异地存储层。可以将执行结果发往Storm。
第三部分,数据修复:
3.1、修复数据的功能模块从Storm中读取差异及失败流水,从而确定要修复的内容;
3.2、根据差异及失败流水中包含的键值从主存储层读取数据;
3.3、将读取到的数据写入从存储层。
在以上流程中,MetaQ是一个分布式消息中间件,该消息中间件是较为典型的生产者/消费者模型,其核心作用是解耦,生产者和消费者彼此没有直接依赖,使生产者和消费者由同步关系转变成异步关系。其中,消息生产者是负责产生消息并发送消息到MetaQ,MetaQ可以采用pull模型,由消费者主动从MetaQ服务器拉取数据并解析成消息然后消费。在图6和7中消息生产者是数据中心,消费者是MetaQ;在以上实施例中,消息生产者生产的消息负责负载数据并在生产者、服务端和消费者之间传输。
在以上实施例中,数据同步过程主要是消费MetaQ里面的消息(key[键]+optype[操作类型]),然后根据optype[操作类型],如果是写操作,则从主存储层读key[键]对应的value[值],然后写入到从存储层;如果是删除操作,则根据key[键]直接删除从存储对应的value[值]。操作成功后,上报Storm(消费者流水表);操作失败后,上报Storm(失败流水表。
其中,数据中心的主要功能是通过存储层API进行读写存储层,以及旁路更新消息给MetaQ;另外在更新存储层成功后,上报Storm(生产者流水表);
Store任务的主要功能是计算差集,具体地:基于Store计算生产者流水表与消费者流水表的差集,得到差异流水表。
数据修复包括差异流水表/失败流水表的数据修复,具体地:执行数据修复的功能模块根据差异流水表、失败流水表,读出流水里面的key[键]+optype[操作类型,然后根据optype[操作类型],如果是写操作,则从主存储层读key[键]对应的value[值],然后写入到从存储层;如果是删除操作,则根据key[键]直接删除从存储对应的value[值]。如果数据修复执行失败则重试,直到成功为止。
存储层跨城容灾访问实现了自适应优先同城访问的故障容错,核心逻辑为:优先读同城存储层,同城存储层出故障后,切异地存储层访问;探测到同城存储层恢复后,切换回访问同城的存储层。具体流程见前文说明,在此不再赘述。
本发明实施例还提供了一种存储介质,其特征在于,上述存储介质中存储有多条程序指令,上述程序指令适于由处理器加载并执行本发明实施例提供的上述系统中的存储层接口、消息中间件和搬迁服务器的功能,或者,存储层接口、消息中间件、搬迁服务器以及修复控制系统的功能,或者,存储层接口、消息中间件、搬迁服务器、修复控制系统以及修复服务器的功能。
参见图8,图8是本申请另一实施例提供的一种电子设备的示意框图。如图所示的本实施例中的电子设备可以包括:一个或多个处理器801;一个或多个输入设备802,一个或多个输出设备803和存储器804。上述处理器801、输入设备802、输出设备803和存储器804通过总线805连接。存储器804用于存储计算机程序,该计算机程序包括程序指令,处理器801用于执行存储器804存储的程序指令。其中,处理器801被配置用于调用该程序指令执行本发明实施例提供的上述系统中的存储层接口、消息中间件和搬迁服务器的功能,或者,存储层接口、消息中间件、搬迁服务器以及修复控制系统的功能,或者,存储层接口、消息中间件、搬迁服务器、修复控制系统以及修复服务器的功能。
应当理解,在本申请实施例中,所称处理器801可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
输入设备802可以设备间的通信接口,通信接口可以是存储层API、无线通信接口或者有线通信接口。
该存储器804可以包括只读存储器和随机存取存储器,并向处理器801提供指令和数据。存储器804的一部分还可以包括非易失性随机存取存储器。例如,存储器804还可以存储设备类型的信息。
具体实现中,本申请实施例中所描述的处理器801、输入设备802、输出设备803可执行本申请实施例提供的存储层访问、信息以及消息的收发功能,在此不再赘述。
以上消息中间件、搬迁服务器、搬迁服务器、修复服务器以及修复控制系统,均可以是独立的硬件设备,也可以是由软件实现;在前述实施例中,已经就此进行了举例说明,本实施例对此不作赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的通信装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行上述计算机程序指令时,全部或部分地产生按照本发明实施例上述的流程或功能。上述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者通过上述计算机可读存储介质进行传输。上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriberline,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital versatiledisc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:只读存储器(read-only memory,ROM)或随机存储存储器(random access memory,RAM)、磁碟或者光盘等各种可存储程序代码的介质。
Claims (10)
1.一种存储层同步系统,所述存储层包括互为异地的主存储层和从存储层,其特征在于,包括:
存储层接口,消息中间件和搬迁服务器;
所述存储层接口,用于在接收到数据更新方发送的更新消息后,分别向主存储层和消息中间件发送所述更新消息,所述更新消息包含更新数据的信息;
所述消息中间件,用于在接收到所述更新消息后,分别向所述主存储层和所述搬迁服务器发送所述更新消息;
所述搬迁服务器,用于读取所述主存储层执行所述更新消息得到的更新后数据,向从存储层发送写请求以及所述更新后数据,所述写请求用于请求从存储层将所述更新后数据存入所述从存储层;或者,用于向所述从存储层发送所述更新消息,以使所述从存储层执行所述更新消息所指定的数据更新操作。
2.根据权利要求1所述系统,其特征在于,所述系统还包括:修复控制系统;
所述存储层接口,还用于获取所述主存储层收到所述更新消息后的操作结果信息,将所述操作结果信息发送给所述修复控制系统;
所述搬迁服务器,还用于获取所述从存储层存入所述更新后数据的同步结果信息,将所述同步结果信息发送给所述修复控制系统;
所述修复控制系统,用于获取所述同步结果信息与所述操作结果信息的差集,在所述差集不为空的情况下确定同步错误。
3.根据权利要求2所述系统,其特征在于,
所述存储层接口,用于获取所述主存储层收到所述更新消息后的操作成功或失败的生产者流水表,将所述生产者流水表发送给所述修复控制系统;
所述搬迁服务器,用于获取所述从存储层存入所述更新后数据成功或失败的消费者流水表,将所述消费者流水表发送给所述修复控制系统;
所述修复控制系统,用于获取所述生产者流水表与所述消费者流水表的差集,在所述差集不为空的情况下确定同步错误。
4.根据权利要求2或3所述系统,其特征在于,所述系统还包括:修复服务器;
所述修复控制系统,还用于将所述差集发送给所述修复服务器;
所述修复服务器,用于接收所述修复控制系统发送的所述差集,若所述差集表示所述从存储层失败且所述主存储层成功,则读取所述更新后数据,向从存储层发送修复写请求以及所述更新后数据;所述修复写请求用于请求从存储层将所述更新后数据存入所述从存储层。
5.根据权利要求1至3任意一项所述系统,其特征在于,所述更新消息包括:数据对象以及操作类型。
6.根据权利要求1至3任意一项所述系统,其特征在于,所述消息中间件为分布式的消息中间件。
7.根据权利要求1至3任意一项所述系统,其特征在于,
所述存储层接口,还用于接收数据访问方发送的读请求;若确定所述主存储层处于正常状态或者探测期,则向所述主存储层发送所述读请求;所述探测期为探测所述主存储层是否故障的时间段;若确定所述主存储层故障,则向所述从存储层发送所述读请求。
8.根据权利要求6所述系统,其特征在于,
所述存储层接口,还用于在探测期内对所述主存储层进行探测,在探测结果符合故障规则时确定所述主存储层故障。
9.根据权利要求7所述系统,其特征在于,
所述存储层接口,用于统计在探测期内所述主存储层的延迟、连续错误数、最大错误率、恢复成功率中的一项或多项获得探测结果,在探测结果符合故障规则时确定所述主存储层故障。
10.一种存储介质,其特征在于,所述存储介质中存储有多条程序指令,所述程序指令适于由处理器加载并执行如权利要求1至9任一项所述系统中的存储层接口、消息中间件和搬迁服务器的功能,或者,存储层接口、消息中间件、搬迁服务器以及修复控制系统的功能,或者,存储层接口、消息中间件、搬迁服务器、修复控制系统以及修复服务器的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810924990.6A CN110209526B (zh) | 2018-08-14 | 2018-08-14 | 一种存储层同步系统、及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810924990.6A CN110209526B (zh) | 2018-08-14 | 2018-08-14 | 一种存储层同步系统、及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209526A CN110209526A (zh) | 2019-09-06 |
CN110209526B true CN110209526B (zh) | 2023-06-06 |
Family
ID=67779991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810924990.6A Active CN110209526B (zh) | 2018-08-14 | 2018-08-14 | 一种存储层同步系统、及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209526B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597673B (zh) * | 2019-09-25 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 存储系统的容灾方法、装置、设备及计算机可读存储介质 |
CN111831481B (zh) * | 2020-07-10 | 2021-09-07 | 厦门靠谱云股份有限公司 | 一种基于c/s架构的数据库异地备份与恢复方法及系统 |
CN111813602A (zh) * | 2020-07-10 | 2020-10-23 | 厦门靠谱云股份有限公司 | 一种基于消息中间件的数据库异地备份与恢复方法及系统 |
CN112051968B (zh) * | 2020-08-07 | 2021-10-22 | 东北大学 | 基于Kafka的分布式数据流分级缓存自动迁移方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和系统 |
AU2015373914B2 (en) * | 2014-12-31 | 2017-09-07 | Servicenow, Inc. | Failure resistant distributed computing system |
CN107783975B (zh) * | 2016-08-24 | 2021-02-26 | 北京京东尚科信息技术有限公司 | 分布式数据库同步处理的方法和装置 |
CN108256002B (zh) * | 2017-12-31 | 2021-05-11 | Oppo广东移动通信有限公司 | 跨机房数据同步方法、装置、系统以及服务器 |
-
2018
- 2018-08-14 CN CN201810924990.6A patent/CN110209526B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110209526A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110209526B (zh) | 一种存储层同步系统、及存储介质 | |
US7725776B2 (en) | Method for displaying pair state of copy pairs | |
US6760824B2 (en) | Storage system making possible data synchronization confirmation at time of asynchronous remote copy | |
JP5060485B2 (ja) | 複製データの可用性及び最新性を検証するための方法及びシステム。 | |
US7996637B2 (en) | Storage system and remote copy recovery method | |
CN107015872A (zh) | 监控数据的处理方法及装置 | |
US20070276983A1 (en) | System method and circuit for differential mirroring of data | |
CN110071821A (zh) | 备用节点的指定 | |
CN107769943B (zh) | 一种主备集群切换的方法和设备 | |
JP2006048578A (ja) | 計算機システム、計算機及びそのプログラム。 | |
CN111049928B (zh) | 数据同步方法、系统、电子设备及计算机可读存储介质 | |
US7797571B2 (en) | System, method and circuit for mirroring data | |
US20110078396A1 (en) | Remote copy control method and system in storage cluster environment | |
CN112015591A (zh) | 一种日志管理方法、服务器和数据库系统 | |
US10169441B2 (en) | Synchronous data replication in a content management system | |
US20230004465A1 (en) | Distributed database system and data disaster backup drilling method | |
US11307944B2 (en) | Automated failover for asynchronous remote copy | |
WO2019109257A1 (zh) | 一种日志管理方法、服务器和数据库系统 | |
US20090164839A1 (en) | Storage control apparatus and storage control method | |
JP3447347B2 (ja) | 障害検出方法 | |
US9218313B2 (en) | Shared-bandwidth multiple target remote copy | |
CN112540873B (zh) | 容灾方法、装置、电子设备及容灾系统 | |
CN113535430A (zh) | 应用数据读写分离方法、装置、计算机设备和存储介质 | |
CN111752911A (zh) | 一种基于Flume的数据传输方法、系统、终端及存储介质 | |
JP2017111580A (ja) | 制御装置、管理装置、ストレージシステム、制御プログラム、管理プログラム、制御方法、および管理方法 |
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 |