CN101561795B - 一种分布式系统中的数据同步方法及装置 - Google Patents
一种分布式系统中的数据同步方法及装置 Download PDFInfo
- Publication number
- CN101561795B CN101561795B CN200910107399.2A CN200910107399A CN101561795B CN 101561795 B CN101561795 B CN 101561795B CN 200910107399 A CN200910107399 A CN 200910107399A CN 101561795 B CN101561795 B CN 101561795B
- Authority
- CN
- China
- Prior art keywords
- data
- cpu
- check code
- data group
- synchronization
- 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
Landscapes
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种分布式系统中的数据同步方法及装置,所述方法包括以下处理步骤:(1)源CPU和目的CPU采用相同的逻辑分组对本地数据进行分组,并以同一ID标识同一数据组;(2)目的CPU对本地数据组计算校验码,将数据组ID及其对应的校验码发送给源CPU;(3)源CPU根据目的CPU发送来的数据组ID,获取本地的相同数据组ID对应的校验码,并与目的CPU发送来的该数据组ID的校验码进行比较,如果不同,向目的CPU同步该数据组。所述装置包括设置在源CPU上的第一分组模块和第一同步模块,以及设置在目的CPU上的第二分组模块和第二同步模块。本发明有效地提高了分布式系统中数据同步的性能和可靠性。
Description
技术领域
本发明涉及计算机网络通讯领域,尤其涉及一种分布式系统中的数据同步方法及装置。
背景技术
分布式系统中,多个CPU协同进行工作,但是每个CPU都只能访问自己的内存空间,物理空间上并不存在全局意义上的数据供不同的CPU共享,如果各个CPU的数据不一致,将直接导致任务结果不可预期,因此可靠而快速的数据同步机制是分布式系统中的各个CPU协同工作的首要条件。
在目前的数据同步机制中,因为同步等待方式的开销较大,效率较低,一般都采用发送异步消息的方式进行数据同步,绝大多数系统采用的是如下两种异步消息数据同步:
1.定时全局同步:定时由源CPU向目的CPU发送异步消息,将所有数据全部重新同步一次,不管目前的数据是否已经处于同步了,可以避免因为异步消息丢失造成的数据不同步问题。
2.即时数据同步:源CPU数据发生了变化,需要进行同步,主动向目的CPU发送异步消息,异步消息只发送修改的数据,数据同步的延时极短并且开销也比较小。
然而,以上两种方法各自存在无法避免的问题:
定时全局同步虽然可靠性高,但是系统开销非常大,对CPU的处理能力和CPU间的带宽都提出了较高的要求,并且由于系统资源耗费大,定时同步的时间间隔一般也设置得比较长,造成全局数据的同步时延也会同步增大。
即时数据同步的开销小、时延短,但是无法保证数据的完全同步,一旦系统比较繁忙,就有可能造成消息丢失,数据不同步,并且随着系统运行时间的推移,这种不同步的问题会越来越严重。
发明内容
本发明提供了一种分布式系统中数据同步的方法及装置,能够在保证数据同步的可靠性的同时,提高数据同步的效率。
为了解决上述技术问题,本发明采用了如下技术方案:
一种分布式系统中的数据同步方法,包含以下处理步骤:
(1)源CPU和目的CPU采用相同的逻辑分组对本地数据进行分组,并以同一ID标识同一数据组;
(2)目的CPU对本地数据组计算校验码,将数据组ID及其对应的校验码发送给源CPU;
(3)源CPU根据目的CPU发送来的数据组ID,获取本地的相同数据组ID对应的校验码,并与目的CPU发送来的该数据组ID的校验码进行比较,如果不同,向目的CPU同步该组数据。
在上述数据同步方法的一种实施例中,还包括处理以下处理步骤:源CPU集中计算本地数据组的校验码。
在上述数据同步方法的一种实施例中,源CPU在系统空闲期对本地数据组校验码进行集中计算。
在上述数据同步方法的一种实施例中,源CPU如果在本地数据组校验码的集中计算期间收到目的CPU发送来的数据组ID及其对应的校验码,则优先查找或计算目的CPU发送来的数据组ID的本地校验码。
在上述数据同步方法的一种实施例中,所述数据组ID唯一确定一种校验码算法。
在上述数据同步方法的一种实施例中,采用查找预置的对应关系表的方式确定数据组ID对应的校验码算法。
在上述数据同步方法的一种实施例中,一个数据被分组在至少一个同步组中。
在上述数据同步方法的一种实施例中,所述逻辑分组基于模块和校验码算法两者中至少一种进行划分。
在上述数据同步方法的一种实施例中,目的CPU定时遍历本地数据组ID并计算各个数据组对应的校验码。
本发明还公开了一种分布式系统中的数据同步装置,包括设置在源CPU上的第一分组模块和第一同步模块,以及设置在目的CPU上的第二分组模块和第二同步模块,其中:
第一分组模块和第二分组模块,采用相同的逻辑分组对本地数据进行分组,并以同一ID标识同一数据组;
第二同步模块,对本地数据组计算校验码,将数据组ID及其对应的校验码发送给源CPU;
第一同步模块,根据目的CPU发送来的数据组ID,获取本地的相同数据组ID对应的校验码,并与目的CPU发送来的该数据组ID的校验码进行比较,如果不同,向目的CPU同步该数据组。
与现有技术相比,本发明的有益效果在于:
本发明首先在同步前对源CPU和目的CPU采用相同的逻辑分组进行数据分组,并对相同的数据组采用同一ID进行标识。而后在同步时,由目的CPU主动上报需要同步的数据组ID及其对应的校验码,源CPU查找本地相同的数据组ID并进行校验码的比对,根据比对结果决定是否进行数据同步。如此,一方面,通过校验码比对而进行数据同步,使得数据同步的可靠性得到保证;另一方面,由于目的CPU上报的仅是数据组ID及其对应的校验码,而源CPU只对校验码不匹配的数据组进行同步,不仅提高了数据同步的效率,同时减少了CPU资源和带宽的浪费。此外,目的CPU的主动上报也将减少源CPU和目的CPU之间的通讯次数,从而进一步减少CPU资源和带宽的浪费。
附图说明
图1示例性的描述了本发明的数据同步流程;
图2示例性的描述了本发明的数据组的逻辑分组及数据组ID和校验算法的对应关系。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细说明:
如图1所示,图中示例性的描述了本发明的数据同步流程,在本文中,将一个分布式系统中进行数据同步的两个CPU区分为源CPU和目的CPU,图1仅示出了一个源CPU和一个目的CPU,可以理解,数据同步同样可以在一个源CPU和多个目的CPU之间进行,源CPU和目的CPU的数量对本发明的数据同步方法并无限制。
在本发明的一个实施例中,数据同步按如下处理步骤进行:
1、源CPU和目的CPU采用相同的逻辑分组对本地数据进行分组,并以同一ID标识同一数据组;
2、目的CPU对本地数据组计算校验码,将同步组ID及其对应的校验码发送给源CPU;
3、源CPU根据目的CPU发送来的同步组ID,获取本地的相同同步组ID对应的校验码,并与目的CPU发送来的该同步组ID的校验码进行比较,如果不同,向目的CPU同步该组数据。
在上述步骤1中,数据同步前,首先进行数据的逻辑分组,数据分组分别在源CPU和目的CPU进行,将源CPU上的数据称为源CPU的本地数据,相应的,目的CPU上的数据称为目的CPU的本地数据。为保证之后的数据同步的正确性,源CPU和目的CPU应当采用相同的逻辑分组对本地数据进行分组,并对同样的数据组用同样的ID进行标识,即数据组ID是一个全局标识,适用于整个分布式系统中,一个数据组ID,在分布式系统中的各个CPU标识的都是同样的数据组。
如图2所示,在逻辑分组时,一个数据可以分组在一个数据组中,也可以分组在多个数据组中。
如图2所示,数据组ID唯一的确定一种校验码算法,校验码算法可以是系统默认的,也可以是自定义的,例如可以是校验和、MD5、奇偶校验等算法。数据组ID与校验码算法的对应关系根据预置的对应关系表获取。
在图2的示例中,一个数据被分组在多个数据组中,由于不同数据组分别计算各自的校验码,从而可以提高校验码计算的可靠性;特别的,不同的数据组可以采用不同的校验算法,使得同一个数据可以参与到多种校验算法中,这样可以降低不同的数据组却得到相同校验码的几率,降低系统误判的几率,而校验码计算的可靠性的提高,将相应提高数据同步的可靠性。
逻辑分组基于模块和校验码算法两者中至少一种进行划分。按模块划分是指将一个模块的数据作为一个逻辑分组,有多少个模块就划分为多少组,每组使用一个校验算法,分配一个ID。按照校验算法划分是指同一个模块数据使用不同的校验算法分组到不同的逻辑分组中,分配不同的ID。在实际应用中,为了简单和提高性能,可以选择只基于模块进行分组,使用默认校验算法;为了提高可靠性,可以选择基于模块和基于校验算法来进行分组,这样可以对同一个数据进行多次和多种方式的校验计算,减少重码率导致的同步误判。
如图1所示,目的CPU采用定时方式进行校验码计算及发送处理,定时方式将周期上报,由源CPU判断是否需要进行同步,从而保证数据的可靠性。定时的校验码计算及发送处理包括:
1)目的CPU启动数据同步定时器。
2)数据同步定时器超时后,目的CPU开始遍历本地的所有数据组,对每个数据组按照指定的校验码算法计算校验码。
3)目的CPU将数据组ID及其对应的校验码封装成异步消息发送到源CPU。
在源CPU,获取到目的CPU发送来的数据组ID及其对应的校验码后,需要进行校验码比对处理。源CPU首先根据目的CPU发送来的数据组ID,查找这些数据组ID的本地校验码,即源CPU上相同的数据组ID对应的校验码,而后源CPU进行各个数据组的本地校验码与目的CPU发送来的校验码之间的比对。如果校验码相同,说明源CPU与目的CPU数据已经一致,不需要做同步操作;如果校验码不同,说明源CPU与目的CPU数据不一致,源CPU向目的CPU同步该校验码对应的数据组。
源CPU的本地校验码,可以在某一时期集中计算,例如可以选在系统空闲期间计算,这将提高校验码计算的效率,同时,也将提高系统效率。并且,源CPU的本地校验码的集中计算不限于在同步前,也可以在同步中根据CPU发送来的数据组ID进行计算,源CPU如果在本地校验码的集中计算期间收到目的CPU发送来的数据组ID及其对应的校验码,则优先查找或计算目的CPU发送来的数据组ID对应的本地校验码。
本发明示例的一种分布式系统中的数据同步装置,包括设置在源CPU上的第一分组模块和第一同步模块,以及设置在目的CPU上的第二分组模块和第二同步模块,其中:第一分组模块和第二分组模块,采用相同的逻辑分组对本地数据进行分组,并以同一ID标识同一数据组;第二同步模块,对本地数据组计算校验码,将数据组ID及其对应的校验码发送给源CPU;第一同步模块,根据目的CPU发送来的数据组ID,获取本地的相同数据组ID对应的校验码,并与目的CPU发送来的该数据组ID的校验码进行比较,如果不同,向目的CPU同步该组数据。该数据同步装置的工作方式类似于前述的数据同步方法,不再赘述。
本发明的数据同步方法及装置,针对分布式系统的多个CPU之间的数据同步,采用了先进行数据的逻辑分组并以全局的数据组ID标识;在同步中,目的CPU仅发送数据组的ID及对应的校验码,源CPU进行校验码比对,并根据校验码比对结果进行数据同步操作,因而克服了现有技术中的两种同步方法各自的缺陷,而将这两种同步方法各自的优点融合,既可保证数据同步的可靠性,又可提高数据同步的效率。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,但这只是为便于理解而举的实例,不应认为本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,可以做出各种可能的等同改变或替换,这些改变或替换都应属于本发明的保护范围。
Claims (10)
1.一种分布式系统中的数据同步方法,其特征在于,包含以下处理步骤:
(1)源CPU和目的CPU采用相同的逻辑分组对本地数据进行分组,每个本地数据被分配到一个或多个分组中;并用同一ID将源CPU和目的CPU中具有相同的本地数据,且采用相同的校验码算法的分组进行标识;
(2)目的CPU对本地数据组计算校验码,并主动将数据组ID及其对应的校验码发送给源CPU;
(3)源CPU根据目的CPU发送来的数据组ID,获取本地的相同数据组ID对应的校验码,并与目的CPU发送来的该数据组ID的校验码进行比较,如果不同,向目的CPU同步该组数据。
2.如权利要求1所述的数据同步方法,其特征在于,还包括处理步骤:源CPU集中计算本地数据组的校验码。
3.如权利要求2所述的数据同步方法,其特征在于,源CPU在系统空闲期对本地数据组校验码进行集中计算。
4.如权利要求1至3任一所述的数据同步方法,其特征在于,源CPU如果在本地数据组校验码的集中计算期间收到目的CPU发送来的数据组ID及其对应的校验码,则优先查找或计算目的CPU发送来的数据组ID的本地校验码。
5.如权利要求1所述的数据同步方法,其特征在于,所述数据组ID唯一确定一种校验码算法。
6.如权利要求5所述的数据同步方法,其特征在于,采用查找预置的对应关系表的方式确定数据组ID对应的校验码算法。
7.如权利要求1所述的数据同步方法,其特征在于,一个数据被分组在至少一个数据组中。
8.如权利要求7所述的数据同步方法,其特征在于,所述逻辑分组基于模块和校验码算法两者中至少一种进行划分。
9.如权利要求1所述的数据同步方法,其特征在于,目的CPU定时遍历本地数据组ID并计算各个数据组对应的校验码。
10.一种分布式系统中的数据同步装置,其特征在于,包括设置在源CPU上的第一分组模块和第一同步模块,以及设置在目的CPU上的第二分组模块和第二同步模块,其中:
第一分组模块和第二分组模块,采用相同的逻辑分组对本地数据进行分组,每个本地数据被分配到一个或多个分组中;并用同一ID将具有相同的本地数据,且采用相同的校验码算法的分组进行标识;
第二同步模块,对本地数据组计算校验码,并主动将数据组ID及其对应的校验码发送给源CPU;
第一同步模块,根据目的CPU发送来的数据组ID,获取本地的相同数据组ID对应的校验码,并与目的CPU发送来的该数据组ID的校验码进行比较,如果不同,向目的CPU同步该组数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910107399.2A CN101561795B (zh) | 2009-05-20 | 2009-05-20 | 一种分布式系统中的数据同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910107399.2A CN101561795B (zh) | 2009-05-20 | 2009-05-20 | 一种分布式系统中的数据同步方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101561795A CN101561795A (zh) | 2009-10-21 |
CN101561795B true CN101561795B (zh) | 2014-09-10 |
Family
ID=41220603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910107399.2A Active CN101561795B (zh) | 2009-05-20 | 2009-05-20 | 一种分布式系统中的数据同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101561795B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186614B (zh) * | 2011-12-30 | 2016-04-13 | 鼎捷软件股份有限公司 | 电子数据同步方法及电子数据同步处理系统 |
CN102685877B (zh) * | 2012-05-16 | 2015-08-19 | 北京星网锐捷网络技术有限公司 | 用户数据同步方法、无线控制器及网管设备 |
CN109240975A (zh) * | 2017-07-10 | 2019-01-18 | 比亚迪股份有限公司 | 二取二系统同步方法及装置 |
CN108196975B (zh) * | 2017-11-21 | 2021-09-17 | 深信服科技股份有限公司 | 基于多校验和的数据验证方法、装置及存储介质 |
CN110958171A (zh) * | 2019-11-29 | 2020-04-03 | 盛科网络(苏州)有限公司 | 基于主备设备的数据同步方法及系统 |
CN114567485A (zh) * | 2022-03-01 | 2022-05-31 | 北京全路通信信号研究设计院集团有限公司 | 一种数据处理方法、装置、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1816039A (zh) * | 2005-02-01 | 2006-08-09 | 华为技术有限公司 | 进行数据一致性校验及同步的方法和分布式系统 |
CN101207515A (zh) * | 2007-12-12 | 2008-06-25 | 中兴通讯股份有限公司 | 一种多机共享内存的处理方法、实现方法和同步方法 |
-
2009
- 2009-05-20 CN CN200910107399.2A patent/CN101561795B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1816039A (zh) * | 2005-02-01 | 2006-08-09 | 华为技术有限公司 | 进行数据一致性校验及同步的方法和分布式系统 |
CN101207515A (zh) * | 2007-12-12 | 2008-06-25 | 中兴通讯股份有限公司 | 一种多机共享内存的处理方法、实现方法和同步方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101561795A (zh) | 2009-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101561795B (zh) | 一种分布式系统中的数据同步方法及装置 | |
CN105450489B (zh) | 输出优先实现最短报文的HEBus高效现场总线系统及通信方法 | |
CN107276711B (zh) | EtherCAT主站装置 | |
CN102045347B (zh) | 协议识别方法和装置 | |
CN102833119B (zh) | 双网冗余机制下实时数据接收同步处理的方法 | |
CN109670954B (zh) | 基于区块链的交易处理方法 | |
CN108259227A (zh) | 一种双机热备联锁系统的数据同步方法 | |
CN112099614B (zh) | 一种基于协同近似计算的众核系统能耗与性能优化方法 | |
CN107678923A (zh) | 一种分布式文件系统消息处理的优化方法 | |
CN104184687A (zh) | 一种通信基带处理的流程控制方法和硬件加速器电路 | |
CN105119949B (zh) | 基于多级切片差异分布统计的数据同步方法及系统 | |
CN101051886A (zh) | 一种短程无线通信网络的网络时钟同步方法 | |
CN105912280A (zh) | 能够进行数据分类的存储终端 | |
CN105338107A (zh) | 一种据点运营同步管理系统及方法 | |
CN103248547A (zh) | Modbus RTU从站快速捕获数据的方法及从站 | |
CN105354110A (zh) | 云服务器数据备份方法及装置 | |
CN111988345B (zh) | 一种信息同步的方法及设备 | |
CN106302621B (zh) | 一种消息通知方法和设备 | |
CN102546734B (zh) | 数据信息处理系统及方法 | |
CN105007286A (zh) | 解码方法和装置及云存储方法和系统 | |
CN113965466B (zh) | 一种自适应网络带宽的数据传输系统 | |
CN103117883A (zh) | 一种分组设备运行状态同步方法 | |
CN101009703B (zh) | 一种验证数据同步的方法及系统 | |
CN102075315B (zh) | 一种转发板间的数据同步方法及装置 | |
CN101795208A (zh) | 一种机架图显示信息同步的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200729 Address after: 210012 Nanjing, Yuhuatai District, South Street, Bauhinia Road, No. 68 Patentee after: Nanjing Zhongxing Software Co.,Ltd. Address before: 518057 Zhongxing building, science and technology south road, Nanshan District Science Park, Guangdong, Shenzhen Patentee before: ZTE Corp. |
|
TR01 | Transfer of patent right |