CN111880956B - 一种数据同步方法和装置 - Google Patents
一种数据同步方法和装置 Download PDFInfo
- Publication number
- CN111880956B CN111880956B CN202010725821.7A CN202010725821A CN111880956B CN 111880956 B CN111880956 B CN 111880956B CN 202010725821 A CN202010725821 A CN 202010725821A CN 111880956 B CN111880956 B CN 111880956B
- Authority
- CN
- China
- Prior art keywords
- cluster
- target field
- content
- main cluster
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 230000004048 modification Effects 0.000 claims abstract description 47
- 238000012986 modification Methods 0.000 claims abstract description 47
- 230000006399 behavior Effects 0.000 claims description 28
- 230000008569 process Effects 0.000 claims description 28
- 238000004364 calculation method Methods 0.000 claims description 25
- 230000001360 synchronised effect Effects 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 6
- 230000009471 action Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005111 flow chemistry technique Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- 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/1448—Management of the data involved in backup or backup restore
-
- 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
- G06F11/1464—Management of the backup or restore process for networked environments
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本公开提供了一种数据同步方法和装置,通过在修改前后对比主集群的内容版本号避免并发操作可能造成的修改冲突,通过每次修改后将主集群的数据状态覆盖写入到各个备份集群来保证各个集群的高可用性,即使主集群可能因某次业务行为的数据写入失败,数据回滚等原因与备份集群数据不同,当下次主集群数据修改后也能再次通过覆盖同步的方式将各个备份集群的数据进行修正,本公开方案可以在避免并发冲突的同时,保证缓存系统的高可用性。
Description
技术领域
本公开涉计算机技术领域,尤其涉及一种数据同步方法和装置。
背景技术
在使用缓存系统存储业务数据时,当发生业务行为后,需要从缓存系统中获取对应的数据,将数据修改后,再写回原存储位置。
在高并发场景下,同一时间可能会存在多个业务行为修改同一数据的情况,此时可能出现并发冲突。举例说明,同一时间发生两次业务行为,业务行为A消费2元,业务行为B消费3元,两次业务行为同时从缓存系统中获取到当前余额为10元,业务行为A在10元的基础上,计算新的余额应为8元,并首先将余额8元写入原位置,业务行为B在10元的基础上,计算新的余额应为7元,后将余额7元写入原位置,此时缓存系统中存储的余额为7元,但实际上余额应为5元。即并发冲突会导致数据错误。
目前来说,缺少一种高并发场景下的应用方案,可以在避免并发冲突的同时,保证缓存系统的高可用性。
发明内容
针对上述技术问题,本公开实施例提供一种数据同步方法,技术方案如下:
根据本公开实施例的第一方面,提供一种数据同步方法,应用于由主集群与至少一个备份集群组成的缓存系统,包括:
接收对指定数据的修改请求后,依据所述修改请求确定待修改的目标字段,从主集群获取所述目标字段的当前内容;
在所述目标字段的当前内容的基础上,依据所述修改请求计算出所述目标字段的最新内容;
若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群;
依据所述主集群的目标字段的最新内容,更新备份集群的字段内容为主集群的字段内容,以使所述缓存系统中各个集群的当前数据保持同步。
可选的,所述若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群,包括:
确定预先获取的所述目标字段的第一版本号,所述第一版本号的获取时机为:从主集群获取目标字段时;
计算出所述目标字段的最新内容后,从主集群获取所述目标字段的第二版本号;
若所述目标字段的第一最新版本号与第二版本号相同,则确定所述目标字段的版本号未发生变化,将所述目标字段的最新内容写入所述主集群,并更新所述目标字段的版本号。
可选的,所述方法还包括:
若所述主集群中的目标字段的内容在计算过程中发生变化,判定所述目标字段的内容在计算过程中被其他修改请求所修改,则终止本次流程,不再将所述目标字段的最新内容写入所述主集群。
可选的,所述终止本次流程后,还包括:
从所述主集群重新获取目标字段的当前内容,并重新执行所述数据同步方法。
可选的,所述方法还包括:
若主集群未发生故障,从主集群进行数据读写;
若主集群发生故障,则进行集群切换,将其中一个备份集群设定为新主集群,从所述新主集群进行数据读写。
可选的,所述方法还包括:
当原主集群的故障修复后,将所述原主集群作为所述新主集群的备份集群。
根据本公开实施例的第二方面,提供一种数据同步装置,应用于由主集群与至少一个备份集群组成的缓存系统,包括:
内容获取模块,被配置为接收对指定数据的修改请求后,依据所述修改请求确定待修改的目标字段,从主集群获取所述目标字段的当前内容;
内容计算模块,被配置为在所述目标字段的当前内容的基础上,依据所述修改请求计算出所述目标字段的最新内容;
内容写入模块,被配置为若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群;
内容同步模块,被配置为依据所述主集群的目标字段的最新内容,更新备份集群的字段内容为主集群的字段内容,以使所述缓存系统中各个集群的当前数据保持同步。
可选的,所述内容写入模块,被配置为:
确定预先获取的所述目标字段的第一版本号,所述第一版本号的获取时机为:从主集群获取目标字段时;
计算出所述目标字段的最新内容后,从主集群获取所述目标字段的第二版本号;
若所述目标字段的第一最新版本号与第二版本号相同,则确定所述目标字段的版本号未发生变化,将所述目标字段的最新内容写入所述主集群,并更新所述目标字段的版本号。
可选的,所述装置还包括:
冲突判定模块,被配置为若所述主集群中的目标字段的内容在计算过程中发生变化,判定所述目标字段的内容在计算过程中被其他修改请求所修改,则终止本次流程,不再将所述目标字段的最新内容写入所述主集群。
可选的,所述冲突判定模块,还包括:
重启子模块,被配置为从所述主集群重新获取目标字段的当前内容,并重新执行所述数据同步方法。
可选的,所述装置还包括集群切换模块,被配置为:
若主集群未发生故障,当从主集群进行数据读写;
若主集群发生故障,则进行集群切换,将其中一个备份集群设定为新主集群,当发生业务行为时,均从所述新主集群进行数据读写。
可选的,述集群切换模块,还包括:
当原主集群的故障修复后,将所述原主集群作为所述新主集群的备份集群。
根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面所述的方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面所述的方法。
本公开实施例提供了一种数据同步方法、装置、电子设备及存储介质。通过在修改前后对比主集群的内容版本号避免并发操作可能造成的修改冲突,通过每次修改后将主集群的数据状态覆盖写入到各个备份集群来保证各个集群的高可用性,即使主集群可能因某次业务行为的数据写入失败,数据回滚等原因与备份集群数据不同,当下次主集群数据修改后也能再次通过覆盖同步的方式将各个备份集群的数据进行修正,本公开方案可以在避免并发冲突的同时,保证缓存系统的高可用性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开实施例。
此外,本公开实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本公开一示例性实施例示出的数据同步方法一种流程图;
图2是本公开一示例性实施例示出的缓存系统的一种示意图;
图3是本公开一示例性实施例示出的数据同步方法另一种流程图;
图4是本公开一示例性实施例示出的数据同步方法另一种流程图;
图5是本公开一示例性实施例示出的数据同步装置的一种示意图;
图6是本公开一示例性实施例示出的数据同步装置的另一种示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本公开提供了一种数据同步方法,以及应用所述数据同步方法的数据同步设备,首先对该数据同步方法进行整体说明。参见图1,应用于由主集群与至少一个备份集群组成的缓存系统,包括以下步骤S101~步骤S103:
在步骤S101中,接收对指定数据的修改请求后,依据所述修改请求确定待修改的目标字段,从主集群获取所述目标字段的当前内容;
在本公开一实施例中,字段-内容可以以关键字-值,即key-value的形式存储。即,字段即为数据库中存储的关键字key,内容即关键字对应的数据value。
在大部分应用场景中,缓存与数据库相配合,在数据库上层设置一层缓存,并且预先将常用数据放入缓存,应用服务器需要使用数据时,会优先从缓存中读取数据,从而提高数据读取的效率,同时避免应用服务器与底层的数据库直接交互,降低底层数据库的读写负担,在这种场景下,缓存仅作为一个中间层,实际数据仍需存储于底层数据库。
但在某些特定的应用场景中,如直播应用场景中,服务器的每秒查询率(QPS,Queries-per-second)非常高(每秒查询率是对一个特定的服务器在规定时间内所处理流量多少的衡量标准),而数据库的实际交互效率是远低于缓存,尤其是高速缓存的。若使用数据库来处理这些流量,为了保证流量处理及时,需要非常大量的数据服务器,这样的硬件需求在实际应用中难以满足。
本公开一实施例中,为了解决这个问题,在这些特定的应用场景中,可以不使用数据库作为数据的底层载体,而是直接将数据全部存储在缓存系统中,由缓存系统承担数据存储和流程处理的任务。由于缓存系统中的数据并不稳定,可能在缓存服务器故障后发生数据丢失,本实施例对这样的缓存系统实施多活方案,参见图2,即该缓存系统是由主集群与至少一个备份集群组成的系统,并使不同缓存集群之间的数据同步,以随机互相接管对方承担的任务。具体而言,可以通过单机房部署多个集群,部署多个机房的形式来部署该缓存系统。
在本步骤中,当发生业务行为时,客户端在缓存系统可能会执行读取(get)操作或写入(set)操作,以缓存系统为Memcached为例,简述该读写操作或写入操作的执行过程。
get过程:
1、通过命令get(‘key’)获取所需字段;
2、接着使用该key通过逻辑算法获取该key在缓存系统中的存储节点;
3、根据节点连接相应的Memcached缓存服务器,并发送get命令,以获取到该key对应的值。
set过程:
1、使用key通过逻辑算法得出这个key需要的存储节点;
2、根据节点位置连接相应的Memcached缓存服务器,并发送set命令t(‘key’,’value’),以将该key对应的value写入该节点位置。
在使用缓存系统存储业务数据时,当发生业务行为后,需要从缓存系统中获取对应的数据,将数据修改后,再写回原存储位置。如上文所述,本实施例的缓存系统应用于QPS极高的场景下,可以知道,该场景下的常见情况包括:在相近时间处理多个并发请求,即出现高并发场景。
在高并发场景下,同一时间可能会存在多个业务行为修改同一数据的情况,此时可能出现并发冲突。举例说明,同一时间发生两次业务行为,业务行为A消费2元,业务行为B消费3元,两次业务行为同时从缓存系统中获取到当前余额为10元,业务行为A在10元的基础上,计算新的余额应为8元,并首先将余额8元写入原位置,业务行为B在10元的基础上,计算新的余额应为7元,后将余额7元写入原位置,此时缓存系统中存储的余额为7元,但实际上余额应为5元。即并发冲突会导致数据错误。
在本公开一实施例中,为了解决并发冲突会导致数据错误,根据所述业务行为计算所述待修改字段的最新内容,在将最新内容写入主集群之前,为了避免并发冲突,需确定所述待修改字段的版本号是否在修改期间发生变化。
在本公开一实施例中,执行步骤S101时,可以采用但不限于以下方式:
(1-1)从主集群读取待修改字段的当前内容,同时从主集群获取所述待修改字段的当前版本号;
(1-2)依据本次业务行为对所述待修改字段的当前内容进行修改,获得待修改字段的最新内容,并重新从主集群获取所述待修改字段的最新版本号;
(1-3)若所述待修改字段的最新版本号与当前版本号相同,则确定所述待修改字段的版本号在修改期间未发生变化。
上述(1-1)至(1-3)的具体实现过程,可详见图3所示实施例。
在步骤S102中,在所述目标字段的当前内容的基础上,依据所述修改请求计算出所述目标字段的最新内容;
在步骤S103中,若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群;
在一实施例中,缓存系统中的数据是以键值(key,value)形式存在,即字段-字段的内容。为了避免并发冲突,为每个字段设定一个版本号,以及一种版本号更新规则。当任一字段的内容被重新写入后,同时依据该更新规则更新该字段的版本号。如此可通过版本号判断任一字段对应的内容是否已经被修改。具体的判断方式在下一实施例详述。
在本步骤中,在版本号未发生变化的情况下,将所述待修改字段的最新内容写入所述主集群,并相应对所述待修改字段的版本号进行更新。此时若存在并发业务行为,需要针对同一字段的内容进行修改,则该并发业务行为在检测到更新后的版本号后不会再写入该业务待写入的数据。
在步骤S104中,依据所述主集群的目标字段的最新内容,更新备份集群的字段内容为主集群的字段内容,以使所述缓存系统中各个集群的当前数据保持同步。
在使用缓存系统存储业务数据时,当发生业务行为后,需要从缓存系统中获取对应的数据,将数据修改后,再写回原存储位置。
在本公开一实施例中,该缓存系统可以为Memcached系统,上述避免冲突的方法可为Memcached系统中支持使用的CAS(Check-And-Set或Compare-And-Swap)命令,CAS即执行用于"对比并更新"的操作的命令。但CAS方式的数据对比,以及写入失败后的数据回滚流程都较为复杂耗时,通常只应用于单个集群,而单个集群出现故障后会导致业务停滞。
具体而言,业务A从缓存系统中获取内容,并基于修改请求对内容进行修改,在将修改后的最新内容写回缓存系统。在此期间,该内容存在被业务B同时同时操作的可能性,若业务B先将修改后的内容写回缓存系统,则业务A再次写回时会发生冲突。客户端执行的业务所需修改的字段(key)对应的内容(value)只有在未被其他客户端业务并发修改的情况下,才能够将该内容写入。以Memcached系统举例,检查是通过cas_token参数进行的,这个参数即上文提到的版本号,是Memcach指定给已经存在的元素的一个唯一的64位内容。
在本实施例中,针对同一个字段,通过CAS方式处理主集群中的数据,通过将主集群内待修改字段的最新内容覆盖写入各个备份集群的方式处理备份集群的数据。
这其中存在的差别在于:CAS方式需要针对一次业务行为确定待修改字段,修改前后需要检测该字段的版本号,若修改出现问题可能需要数据回滚,这期间消耗的计算资源较多,本实施例中,在发生业务行为后,只对主集群中的数据实施CAS操作。对主集群使用CAS方式可以避免高并发场景下可能产生的数据冲突,使主集群中的数据具有强一致性。
而覆盖写入的时间则是发生在主集群中的关键字的数值写入成功后,直接使用该数值替换掉备份集群中相同关键字的数值,相当于将备份集群中的数据强制刷新,即使主集群可能因某次业务行为的数据写入失败,数据回滚等原因与备份集群数据不同,当下次主集群数据修改后也能再次通过覆盖同步的方式将各个备份集群的数据进行修正,本公开方案可以在避免并发冲突的同时,保证缓存系统的高可用性。覆盖写入几乎不需要消耗计算资源。对备份集群使用覆盖写入方法可以保证各个集群的数据同步,使缓存系统保持高可用性。
图3是根据一示例性实施例示出的另一种数据同步方法的流程图,该数据同步方法可以用于能够执行数据同步的平台上,并建立在图1所示方法的基础上,如图3所示,可以包括以下步骤S301-S303:
在步骤S301中,确定预先获取的所述目标字段的第一版本号,所述第一版本号的获取时机为:从主集群获取目标字段时;
缓存系统中的数据是以键内容(key,value)形式存在,即字段-字段的内容。为了避免并发冲突,为每个字段设定一个版本号,以及一种版本号更新规则。当任一字段的内容被重新写入后,同时依据该更新规则更新该字段的版本号。如此可通过版本号判断任一字段对应的数内容是否已经被修改。
在步骤S302中,计算出所述目标字段的最新内容后,从主集群获取所述目标字段的第二版本号;
在步骤S303中,若所述目标字段的第一最新版本号与第二版本号相同,则确定所述目标字段的版本号未发生变化,将所述目标字段的最新内容写入所述主集群,并更新所述目标字段的版本号。
在版本号未发生变化的情况下,将该待修改字段的最新内容写入所述主集群,并相应对该待修改字段的版本号进行更新
在本公开一实施例中,若所述主集群中的目标字段的内容在计算过程中发生变化,判定所述目标字段的内容在计算过程中被其他修改请求所修改,则终止本次流程,不再将所述目标字段的最新内容写入所述主集群。
举例说明:同一时间发生两次业务行为,业务行为A消费2元,业务行为B消费3元,两次业务行为同时从缓存系统中获取到当前余额为10元,并同时获取到当前余额字段的版本号为001,业务行为A在10元的基础上,计算新的余额应为8元,准备写入前再获取一次当前余额字段的版本号,仍为001,则首先将余额8元写入原位置,并将版本号更新为002;业务行为B在10元的基础上,计算新的余额应为7元,准备写入前再获取一次当前余额字段的版本号,此时为002,而002与001不同,则业务行为B本次不会再写入余额7元。该方案可避免并发冲突会导致的数据错误。
进一步地,取消本次内容写入后,可重新从所述主集群获取待修改字段的当前内容,并重新执行如上一实施例所述的数据同步方法。该重新获取到的待修改字段的当前内容应为最新内容。
下面结合图4,对一种更为具体的数据同步方法的实现方式进行说明,包括步骤S401-步骤S407,各个步骤的具体执行方式如下:
在步骤S401中,发生业务行为;
在步骤S402中,从主集群获取所述业务行为对应的待修改关键字,同时从主集群获取所述待修改关键字的当前版本号;
在步骤S403中,计算所述待修改关键字的最新值,并重新从主集群获取所述待修改关键字的最新版本号;
在步骤S404中,判断所述待修改关键字的最新版本号与当前版本号是否相同?若最新版本号与当前版本号相同,则执行步骤S405,若最新版本号与当前版本号不同,则执行步骤S407。
本实施例中,缓存系统中的数据是以键值(key,value)形式存在,即关键字-关键字的值。为了避免并发冲突,为每个关键字设定一个版本号,以及一种版本号更新规则。当任一关键字的值被重新写入后,同时依据该更新规则更新该关键字的版本号。如此可通过版本号判断任一关键字对应的数值是否已经被修改。
举例说明:关键字的当前值为本次业务行为前,缓存系统中该关键字的存储值,关键字的最新值为本次业务行为后,需要在缓存系统写入的该关键字的存储值。如,本次业务行为消费3元,接收到业务相关信息后,在服务器的缓存系统中查找到对应的余额关键字,并尝试更新该余额关键字的值,其中,消费行为前该余额关键字的当前值为10元,消费行为后,根据所消费的3元,再结合当前值10元,计算得到余额关键字的最新值10-3=7元。
该尝试更新余额关键字的值的过程包括:获取余额关键字的当前值的时间点为T1,将要写入关键字的最新值的时间点为T2,在时间点T1检测一次关键字的版本号,在时间点T2再检测一次关键字的版本号,如果版本号没有变化,则可知在“获取”到“写入”这一段时间中没有被并发业务行为干扰。
在步骤S405中,将所述待修改关键字的最新值写入所述主集群,并相应对所述待修改关键字的版本号进行更新;
在步骤S406中,依据所述主集群的待修改关键字的最新值,更新备份集群的对应值,以使所述缓存系统中各个集群的当前数据保持同步;
具体而言,每次将关键字的最新值写入缓存系统后,均需要将该关键字的最新值直接覆盖写入到各个备份集群,可以理解,只有主集群和各个备份集群的数据完全同步,才能保证不同集群之间的业务可以随时互相接管,进而保证整个缓存系统的高可用性。
在步骤S407中,判定所述待修改关键字的值已被其他并发业务行为所修改,取消本次数值写入,并重新执行步骤S402。
在本实施例中,由于各个集群的数据是随时同步的,若其中一个集群失效,该集群承载的任务可传递给其他集群,并可即时由其他集群接管并处理原集群处理的流量。有效防止单点失效,保持缓存系统的高可用性。
可以看出,本公开提供了一种数据同步方法。通过在修改前后对比主集群的数内容版本号避免并发操作可能造成的修改冲突,通过每次修改后将主集群的数据状态覆盖写入到各个备份集群来保证各个集群的高可用性,即使主集群可能因某次业务行为的数据写入失败,数据回滚等原因与备份集群数据不同,当下次主集群数据修改后也能再次通过覆盖同步的方式将各个备份集群的数据进行修正,本公开方案可以在避免并发冲突的同时,保证缓存系统的高可用性。
相应于上述方法实施例,本公开实施例还提供一种数据同步装置,应用于由主集群与至少一个备份集群组成的缓存系统,参见图5所示,所述装置可以包括:
内容获取模块510,被配置为接收对指定数据的修改请求后,依据所述修改请求确定待修改的目标字段,从主集群获取所述目标字段的当前内容;
内容计算模块520,被配置为在所述目标字段的当前内容的基础上,依据所述修改请求计算出所述目标字段的最新内容;
内容写入模块530,被配置为若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群;
内容同步模块540,被配置为依据所述主集群的目标字段的最新内容,更新备份集群的字段内容为主集群的字段内容,以使所述缓存系统中各个集群的当前数据保持同步。
可选的,所述内容写入模块,被配置为:
确定预先获取的所述目标字段的第一版本号,所述第一版本号的获取时机为:从主集群获取目标字段时;
计算出所述目标字段的最新内容后,从主集群获取所述目标字段的第二版本号;
若所述目标字段的第一最新版本号与第二版本号相同,则确定所述目标字段的版本号未发生变化,将所述目标字段的最新内容写入所述主集群,并更新所述目标字段的版本号。
可选的,所述装置还包括:
冲突判定模块,被配置为若所述主集群中的目标字段的内容在计算过程中发生变化,判定所述目标字段的内容在计算过程中被其他修改请求所修改,则终止本次流程,不再将所述目标字段的最新内容写入所述主集群。
可选的,所述冲突判定模块,还包括:
重启子模块,被配置为从所述主集群重新获取目标字段的当前内容,并重新执行所述数据同步方法。
可选的,所述装置还包括集群切换模块,被配置为:
若主集群未发生故障,当从主集群进行数据读写;
若主集群发生故障,则进行集群切换,将其中一个备份集群设定为新主集群,当发生业务行为时,均从所述新主集群进行数据读写。
可选的,所述集群切换模块,还包括:
当原主集群的故障修复后,将所述原主集群作为所述新主集群的备份集群。
本公开实施例还提供一种电子设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述数据同步方法,所述方法应用于由主集群与至少一个备份集群组成的缓存系统,包括:
接收对指定数据的修改请求后,依据所述修改请求确定待修改的目标字段,从主集群获取所述目标字段的当前内容;
在所述目标字段的当前内容的基础上,依据所述修改请求计算出所述目标字段的最新内容;
若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群;
依据所述主集群的目标字段的最新内容,更新备份集群的字段内容为主集群的字段内容,以使所述缓存系统中各个集群的当前数据保持同步。
图6示出了根据本公开的一示例性实施例的基于主设备侧电子设备的示意结构图。请参考图6,在硬件层面,该电子设备包括处理器602、内部总线604、网络接口606、内存604以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。处理器602从非易失性存储器610中读取对应的计算机程序到内存602中然后运行,在逻辑层面上形成执行数据同步方法的装置。当然,除了软件实现方式之外,本公开并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的数据同步方法,所述方法应用于由主集群与至少一个备份集群组成的缓存系统,包括:
接收对指定数据的修改请求后,依据所述修改请求确定待修改的目标字段,从主集群获取所述目标字段的当前内容;
在所述目标字段的当前内容的基础上,依据所述修改请求计算出所述目标字段的最新内容;
若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群;
依据所述主集群的目标字段的最新内容,更新备份集群的字段内容为主集群的字段内容,以使所述缓存系统中各个集群的当前数据保持同步。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁存储设备存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
以上所述仅是本公开实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本公开实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本公开实施例的保护范围。
Claims (14)
1.一种数据同步方法,应用于由主集群与至少一个备份集群组成的缓存系统,其特征在于,包括:
接收对指定数据的修改请求后,依据所述修改请求确定待修改的目标字段,从主集群获取所述目标字段的当前内容;
在所述目标字段的当前内容的基础上,依据所述修改请求计算出所述目标字段的最新内容;
若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群;
依据所述主集群的目标字段的最新内容,更新备份集群的字段内容为主集群的字段内容,以使所述缓存系统中各个集群的当前数据保持同步。
2.如权利要求1所述的方法,其特征在于,所述若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群,包括:
确定预先获取的所述目标字段的第一版本号,所述第一版本号的获取时机为:从主集群获取目标字段时;
计算出所述目标字段的最新内容后,从主集群获取所述目标字段的第二版本号;
若所述目标字段的第一最新版本号与第二版本号相同,则确定所述目标字段的版本号未发生变化,将所述目标字段的最新内容写入所述主集群,并更新所述目标字段的版本号。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述主集群中的目标字段的内容在计算过程中发生变化,判定所述目标字段的内容在计算过程中被其他修改请求所修改,则终止本次流程,不再将所述目标字段的最新内容写入所述主集群。
4.如权利要求3所述的方法,其特征在于,所述终止本次流程后,还包括:
从所述主集群重新获取目标字段的当前内容,并重新执行所述数据同步方法。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
若主集群未发生故障,从主集群进行数据读写;
若主集群发生故障,则进行集群切换,将其中一个备份集群设定为新主集群,从所述新主集群进行数据读写。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
当原主集群的故障修复后,将所述原主集群作为所述新主集群的备份集群。
7.一种数据同步装置,应用于由主集群与至少一个备份集群组成的缓存系统,其特征在于,包括:
内容获取模块,被配置为接收对指定数据的修改请求后,依据所述修改请求确定待修改的目标字段,从主集群获取所述目标字段的当前内容;
内容计算模块,被配置为在所述目标字段的当前内容的基础上,依据所述修改请求计算出所述目标字段的最新内容;
内容写入模块,被配置为若所述主集群中的目标字段的内容在计算过程中未发生变化,则将所述目标字段的最新内容写入所述主集群;
内容同步模块,被配置为依据所述主集群的目标字段的最新内容,更新备份集群的字段内容为主集群的字段内容,以使所述缓存系统中各个集群的当前数据保持同步。
8.如权利要求7所述的装置,其特征在于,所述内容写入模块,被配置为:
确定预先获取的所述目标字段的第一版本号,所述第一版本号的获取时机为:从主集群获取目标字段时;
计算出所述目标字段的最新内容后,从主集群获取所述目标字段的第二版本号;
若所述目标字段的第一最新版本号与第二版本号相同,则确定所述目标字段的版本号未发生变化,将所述目标字段的最新内容写入所述主集群,并更新所述目标字段的版本号。
9.如权利要求7所述的装置,其特征在于,所述装置还包括:
冲突判定模块,被配置为若所述主集群中的目标字段的内容在计算过程中发生变化,判定所述目标字段的内容在计算过程中被其他修改请求所修改,则终止本次流程,不再将所述目标字段的最新内容写入所述主集群。
10.如权利要求9所述的装置,其特征在于,所述冲突判定模块,还包括:
重启子模块,被配置为从所述主集群重新获取目标字段的当前内容,并重新执行所述数据同步方法。
11.如权利要求7所述的装置,其特征在于,所述装置还包括集群切换模块,被配置为:
若主集群未发生故障,当从主集群进行数据读写;
若主集群发生故障,则进行集群切换,将其中一个备份集群设定为新主集群,当发生业务行为时,均从所述新主集群进行数据读写。
12.如权利要求11所述的装置,其特征在于,所述集群切换模块,还包括:
当原主集群的故障修复后,将所述原主集群作为所述新主集群的备份集群。
13.一种电子设备,其特征在于,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的方法。
14.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010725821.7A CN111880956B (zh) | 2020-07-24 | 2020-07-24 | 一种数据同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010725821.7A CN111880956B (zh) | 2020-07-24 | 2020-07-24 | 一种数据同步方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111880956A CN111880956A (zh) | 2020-11-03 |
CN111880956B true CN111880956B (zh) | 2023-12-05 |
Family
ID=73201972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010725821.7A Active CN111880956B (zh) | 2020-07-24 | 2020-07-24 | 一种数据同步方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880956B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114531394B (zh) * | 2020-11-20 | 2023-11-17 | 华为技术有限公司 | 一种数据同步方法及装置 |
CN112506700B (zh) * | 2020-11-30 | 2024-05-14 | 北京达佳互联信息技术有限公司 | 冲突处理方法、装置、电子设备及存储介质 |
CN112631839B (zh) * | 2020-12-31 | 2024-08-06 | 中国农业银行股份有限公司 | 一种实现数据备份的方法、装置及设备 |
CN113094441A (zh) * | 2021-04-29 | 2021-07-09 | 支付宝(杭州)信息技术有限公司 | 数据同步方法以及装置 |
CN115017223B (zh) * | 2022-08-04 | 2022-10-25 | 成都运荔枝科技有限公司 | 一种支持大数据量导入导出的系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793482A (zh) * | 2014-01-16 | 2014-05-14 | 北京恒华伟业科技股份有限公司 | 一种数据同步方法和系统 |
CN104008100A (zh) * | 2013-02-21 | 2014-08-27 | 纽海信息技术(上海)有限公司 | 集群环境并发处理方法 |
CN104573064A (zh) * | 2015-01-23 | 2015-04-29 | 四川中科腾信科技有限公司 | 一种大数据环境下的数据处理方法 |
CN105389394A (zh) * | 2015-12-22 | 2016-03-09 | 北京奇虎科技有限公司 | 基于多个数据库集群的数据请求处理方法及装置 |
CN105574127A (zh) * | 2015-12-12 | 2016-05-11 | 天津南大通用数据技术股份有限公司 | 分布式数据库系统准实时的双活方法 |
CN109582658A (zh) * | 2018-12-03 | 2019-04-05 | 郑州云海信息技术有限公司 | 一种分布式文件系统实现数据一致性的方法及装置 |
CN109684406A (zh) * | 2018-11-13 | 2019-04-26 | 北京达佳互联信息技术有限公司 | 跨机房的redis集群备份数据的方法、装置、设备及存储介质 |
CN110647580A (zh) * | 2019-09-05 | 2020-01-03 | 南京邮电大学 | 分布式容器集群镜像管理主节点、从节点、系统及方法 |
CN110737670A (zh) * | 2019-10-21 | 2020-01-31 | 中国民航信息网络股份有限公司 | 一种集群数据一致性的保障方法、装置及系统 |
CN110769061A (zh) * | 2019-10-24 | 2020-02-07 | 华为技术有限公司 | 一种数据同步的方法及设备 |
-
2020
- 2020-07-24 CN CN202010725821.7A patent/CN111880956B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104008100A (zh) * | 2013-02-21 | 2014-08-27 | 纽海信息技术(上海)有限公司 | 集群环境并发处理方法 |
CN103793482A (zh) * | 2014-01-16 | 2014-05-14 | 北京恒华伟业科技股份有限公司 | 一种数据同步方法和系统 |
CN104573064A (zh) * | 2015-01-23 | 2015-04-29 | 四川中科腾信科技有限公司 | 一种大数据环境下的数据处理方法 |
CN105574127A (zh) * | 2015-12-12 | 2016-05-11 | 天津南大通用数据技术股份有限公司 | 分布式数据库系统准实时的双活方法 |
CN105389394A (zh) * | 2015-12-22 | 2016-03-09 | 北京奇虎科技有限公司 | 基于多个数据库集群的数据请求处理方法及装置 |
CN109684406A (zh) * | 2018-11-13 | 2019-04-26 | 北京达佳互联信息技术有限公司 | 跨机房的redis集群备份数据的方法、装置、设备及存储介质 |
CN109582658A (zh) * | 2018-12-03 | 2019-04-05 | 郑州云海信息技术有限公司 | 一种分布式文件系统实现数据一致性的方法及装置 |
CN110647580A (zh) * | 2019-09-05 | 2020-01-03 | 南京邮电大学 | 分布式容器集群镜像管理主节点、从节点、系统及方法 |
CN110737670A (zh) * | 2019-10-21 | 2020-01-31 | 中国民航信息网络股份有限公司 | 一种集群数据一致性的保障方法、装置及系统 |
CN110769061A (zh) * | 2019-10-24 | 2020-02-07 | 华为技术有限公司 | 一种数据同步的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111880956A (zh) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111880956B (zh) | 一种数据同步方法和装置 | |
CN108234641B (zh) | 基于分布式一致性协议实现的数据读写方法及装置 | |
US10540119B2 (en) | Distributed shared log storage system having an adapter for heterogenous big data workloads | |
CN110046029A (zh) | 应用于集群内多级缓存的数据处理方法和装置 | |
US20100169289A1 (en) | Two Phase Commit With Grid Elements | |
CN106357703B (zh) | 集群切换方法与设备 | |
CN111797172A (zh) | 数据迁移方法、装置、设备、分布式系统及存储介质 | |
JP2019204527A (ja) | 記憶機器のデータ位置の処理方法及び処理装置、コンピュータ機器並びにコンピュータ読み取り可能な記憶媒体 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
CN110019083A (zh) | 分布式文件系统的存储方法、装置、电子设备及存储介质 | |
CN115686932A (zh) | 备份集文件恢复方法、装置和计算机设备 | |
CN113704026B (zh) | 一种分布式金融内存数据库安全同步方法、装置、介质 | |
CN109189480B (zh) | 文件系统启动方法及装置 | |
CN112363762B (zh) | 一种融合命令处理方法、系统、设备以及介质 | |
CN107451070A (zh) | 一种数据的处理方法和服务器 | |
CN111488247B (zh) | 一种管控节点多次容错的高可用方法及设备 | |
CN117435569A (zh) | 缓存系统动态扩容方法、装置、设备、介质和程序产品 | |
CN115955488B (zh) | 基于副本冗余的分布式存储副本跨机房放置方法与装置 | |
CN114172917B (zh) | 一种分布式缓存系统及其部署的方法 | |
CN111176886A (zh) | 一种数据库模式的切换方法、装置及电子设备 | |
CN112988708A (zh) | 版本更新方法及装置、计算机可读存储介质、处理器 | |
CN112817717A (zh) | 一种定时任务的调度方法及装置 | |
CN114328711A (zh) | 数据处理的方法、装置、计算机设备和存储介质 | |
CN113590273A (zh) | 事务处理方法、系统、设备及存储介质 | |
US10445338B2 (en) | Method and system for replicating data in a cloud storage system |
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 |