首页> 中国专利> 一种分布式环境下的实时数据同步方法

一种分布式环境下的实时数据同步方法

摘要

本发明公开了一种分布式环境下的实时数据同步方法,该方法首先建立分中心实时数据中心和总中心实时数据中心,采集数据实时交换进入数据中心,按配置存入数据中心的融合库、落选库;然后同步总中心和分中心的数据,在同步过程中,分中心负责发起同步操作及维护历次同步操作间的增量一致性,总中心负责响应分中心发起的同步及按照配置完成同步过程;应用本发明的方法,可有效解决分布环境下各部门实时数据不一致导致的冲突及业务无法运作等问题,同时该方法可以提高数据同步的准确性及效率。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-29

    授权

    授权

  • 2017-02-08

    著录事项变更 IPC(主分类):H04L29/08 变更前: 变更后: 申请日:20131112

    著录事项变更

  • 2014-06-25

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20131112

    实质审查的生效

  • 2014-05-28

    公开

    公开

说明书

技术领域

本发明涉及数据同步技术领域,尤其涉及一种分布式环境下的实时数据同步方法。 

背景技术

对于目前现存的数据采集系统,数据到数据库中的过程存在许多问题,比如在水文领域,通过遥测站采集的数据,数据质量、数据稳定性及安全性都比较低,尤其是在政府部门应用的采集系统,与工业采集有一定的区别,政府部门和各地市级部门需要大量的数据共享和交换,而且各部门都有各自的采集系统,对于相同的采样点的采集,存在各部门数据不一致的情况,原因主要为:省中心和地市级中心遥测站采集的数据不一样;省中心和地市级中心各自对采集数据的修改操作,导致数据不一样。针对以上两种常见情况,我们需要分布式环境下的实时数据同步方法解决由于数据不一致导致的冲突。 

发明内容

本发明的目的在于针对目前实时数据同步及时性及数据一致性较差等缺陷,提供一种分布式环境下的实时数据同步方法,以提高数据同步的准确性及效率。 

本发明是通过以下技术方案实现的:一种分布式环境下的实时数据同步方法,该方法包括如下步骤: 

(1)建立分中心实时数据中心;

(2)建立总中心实时数据中心;

(3)同步总中心和分中心的数据。

所述步骤1和步骤2通过以下子步骤来实现: 

(1.1)采集终端自动采集的数据进入到自动库中,对自动库进行编号,对自动库设定优先级。

(1.2)人工录入的数据进入到人工库中。 

(1.3)采集数据进入融合库和落选库,该步骤具体为: 

(1.3.1)过滤,对本次采集得到的数据进行过滤。一次采集的数据中经常会出现“同一条”数据,所述“同一条”数据指的是数据的主键相等,即产生数据的站点和产生数据的时间都相同的数据;对“同一条”数据,如果两条数据完全相同,则弃掉后来的那条,如果前一条数据某字段为空,而另一条数据恰好该字段有值,则将此值补入到前一条数据。如果前一条数据和后一条数据某个字段值不同,产生冲突,则按照事先设定的设备优先级选取优先级高的值。将这些操作做好日志,保留过滤后的数据到下一步。

(1.3.2)质量判定,对过滤后的数据进行质量判定,将错误数据和可疑数据存入落选库,只保留好数据到融合库。预先对数据的各个实时数据设置错误域和可疑域。一旦数据的某个属性落入错误域和可疑域,则将此数据打上错误或者可疑标记,做好日志,并将此数据存入落选库。 

(1.3.3)去重,对质量判定后的好数据进行去重。对所有过滤后的数据,去检查融合库中是否有“相同”数据。如果有,则按照过滤的方式,将两条“相同”数据合并,并做好日志。 

(1.3.4)修改错误/可疑数据。对落选库中的数据,管理人员进行核对审查,将无用数据删除,对有用数据则经过人工修改后再合并入融合库中,做好日志。 

(1.4)将融合库中的数据按需进行数据同步。融合库中数据的数据格式如下: 

字段1字段2字段3字段4…n(自动/人工)库编号是否被人工编辑(总/分)中心编号具体数据

字段1是采集源数据库的编号,字段2标识是否被人工编辑过,被人工编辑过的数据优先级最高,字段3是总中心和分中心的编号,防止数据重复同步,字段4…n为具体数据。

所述步骤3中,在同步过程中,分中心负责发起同步操作及维护历次同步操作间的增量一致性。总中心负责响应分中心发起的同步及按照配置完成同步过程。 

配置的优先级如下: 

(a)人工修订数据优先级最高;

(b)人工库数据优先于自动库数据;

(d)新数据优先于旧数据;

(e)自动库优先级按预先编号设定的优先级。

分中心端的具体操作如下: 

(3.1.1)取得同步帧的操作时间戳范围:实时数据中心的每条实时数据,除了数据采集时间event_time外,还有一个操作时间戳op_time,记录最后一次对该数据进行插入或者修正的时间。

(a)上一个同步帧的结束时间记为本次同步帧的起始时间t0。 

(b)结束时间t1=min{t0 + max_dt, current_time - min_buffer_time}。 

其中,max_dt为同步帧的时间最大跨度;current_time为当前时间;min_buffer_time为总中心和分中心的时差。也就是说,一个同步帧的时间跨度最大为max_dt,并且只同步距当前时间超过min_buffer_time的数据。 

(c)根据步骤(a)和步骤(b)确定同步帧时间范围为[t0, t1); 

(3.1.2)取得需要和总中心端同步的数据:取得操作时间戳op_time在[t0,t1)间,数据来源来自本分中心的所有实时数据。

(3.1.3)压缩、打包、发送到总中心端。 

(3.1.4)接受、解压总中心端返回的结果,逐条检查实时数据,如果和分中心本地的数据不同,则插入或修正,插入或修正时,将来源标记为“总中心”,以免循环同步。 

(3.1.5)等待下一次触发同步。 

总中心端的具体操作如下: 

(3.2.1)监听分中心端发来的同步请求;

(3.2.2)解压分中心端发来的实时数据;

(3.2.3)从总中心本地实时数据中,提取和分中心实时数据的站点、数据时间一致的实时数据;

(3.2.4)过滤分中心发来的实时数据:

(a)如果和总中心数据一致,直接丢弃;

(b)如果总中心中没有相应数据,通过;

(c)如果是不一致数据,按配置丢弃、记为可疑数据、或者通过。记为可疑的数据,记入可疑数据表,等待人工校核处理。

(3.2.5)将通过的数据存入总中心,插入或修正,数据来源标记为对应的分中心。 

(3.2.6)按[t0,t1)查询需要同步到分中心的实时数据: 

(a)操作时间戳op_time在[t0,t1);

(b)站点需要与该分中心同步;

(c)数据来源不是该分中心;  

(3.2.7)按分中心发来的数据,删除重复数据;

(3.2.8)压缩、打包、发送到分中心端。 

本发明的有益效果是:本发明一种分布式环境下的实时数据同步方法,在各中心建立融合库和落选库,通过分中心发起同步请求,总中心响应同步请求并按照配置同步实时数据,可有效解决分布环境下各部门实时数据不一致导致的冲突及业务无法运作等问题,同时该方法可以提高数据同步的准确性及效率。 

  

附图说明

图1是本发明分布式环境下的实时数据同步方法的系统框图; 

图2为实时数据中心的建立过程图; 

图3是本发明分布式环境下的实时数据同步过程的流程图。 

具体实施方式

如图1-3所示,本发明提供了一种分布式环境下的实时数据同步方法,该方法包括如下步骤: 

步骤1:建立分中心实时数据中心。

该同步方法中,包含若干分中心实时数据中心(简称分中心)和一个总中心实时数据中心(简称总中心)。进入分中心进行同步的数据包括来自自动库和人工库的数据,自动库为遥测站等自动采集的数据,至少为1个;人工库为人工录入的数据。分中心包括融合库和落选库。 

该步骤包括以下子步骤: 

1.1采集终端自动采集的数据进入到自动库中,对自动库进行编号(I1,I2…In),对自动库设定优先级。例如,可以设置为主库,备库两个自动库,主库的优先级大于备库。

1.2人工录入的数据进入到人工库中。 

1.3 采集数据进入分中心的融合库和落选库,该步骤通过以下子步骤来实现: 

1.3.1 过滤,对本次采集得到的数据进行过滤。一次采集的数据中经常会出现“同一条”数据(这里的“同一条”指的是数据的主键相等,即产生数据的站点和产生数据的时间都相同的数据,产生“同一条”数据的原因是存在多个设备采集同一站点的数据)。对“同一条”数据,如果两条数据完全相同,则弃掉后来的那条,如果前一条数据某字段为空,而另一条数据恰好该字段有值,则将此值补入到前一条数据。如果前一条数据和后一条数据某个字段值不同,产生冲突,则按照事先设定的设备优先级选取优先级高的值。将这些操作做好日志,保留过滤后的数据到下一步。

1.3.2 质量判定,对过滤后的数据进行质量判定,将错误数据和可疑数据存入落选库,只保留好数据到融合库。预先对数据的各个实时数据设置错误域和可疑域。一旦数据的某个属性落入错误域和可疑域,则将此数据打上错误或者可疑标记,做好日志,并将此数据存入落选库。 

1.3.3 去重,对质量判定后的好数据进行去重。本次采集的数据可能会与以前采集的数据是“同一条”数据,需要对这些数据进行去重操作。对所有过滤后的数据,去检查融合库中是否有“相同”数据。如果有,则按照过滤的方式,将两条“相同”数据合并,并做好日志。 

1.3.4 修改错误/可疑数据。对落选库中的数据,管理人员进行核对审查,将无用数据删除,对有用数据则经过人工修改后再合并入融合库中,做好日志。 

1.4将融合库中的数据按需进行数据同步。融合库中数据的数据格式如下: 

字段1字段2字段3字段4…n(自动/人工)库编号是否被人工编辑(总/分)中心编号具体数据

字段1是采集源数据库的编号,字段2标识是否被人工编辑过,被人工编辑过的数据优先级最高,字段3是总中心和分中心的编号,防止数据重复同步,字段4…n为具体数据。

步骤2:建立总中心实时数据中心。 

该步骤同步骤1。 

步骤3:同步省中心和分中心的数据。 

同步过程中,分中心负责发起同步操作及维护历次同步操作间的增量一致性。总中心负责响应分中心发起的同步及按照配置完成同步过程。 

配置的优先级如下: 

a)人工修订数据优先级最高;

b)人工库数据优先于自动库数据;

d)新数据优先于旧数据;

e)自动库优先级按预先编号设定的优先级。

分中心端和总中心端的具体操作如下: 

3.1分中心端

3.1.1取得同步帧的操作时间戳范围。

实时数据中心的每条实时数据,除了数据采集时间event_time外,还有一个操作时间戳op_time,记录最后一次对该数据进行插入或者修正的时间。 

a) 上一个同步帧的结束时间记为本次同步帧的起始时间t0。 

b) 结束时间t1=min{t0 + max_dt, current_time - min_buffer_time}。 

 其中max_dt为同步帧的时间最大跨度;current_time为当前时间;min_buffer_time为总中心和分中心的时差。也就是说,一个同步帧的时间跨度最大为max_dt,并且只同步距当前时间超过min_buffer_time的数据。这样可以避免一次同步过多的数据,可以避免总中心、分中心时差,以及数据库事务时差造成的性能和质量问题。 

c) 根据步骤a)和步骤b)确定同步帧时间范围为[t0, t1); 

3.1.2取得需要和总中心端同步的数据。

取得操作时间戳op_time在[t0,t1)间,数据来源来自本分中心的所有实时数据。 

3.1.3压缩、打包、发送到总中心端。 

3.1.4接受、解压总中心端返回的结果,逐条检查实时数据,如果和分中心本地的数据不同,则插入或修正,插入或修正时,将来源标记为“总中心”,以免循环同步。 

3.1.5等待下一次触发同步。 

3.2总中心端 

3.2.1监听分中心端发来的同步请求;

3.2.2解压分中心端发来的实时数据;

3.2.3从总中心本地实时数据中,提取和分中心实时数据的站点、数据时间一致的实时数据;

3.2.4过滤分中心发来的实时数据:

a) 如果和总中心数据一致,直接丢弃;

b) 如果总中心中没有相应数据,通过;

c) 如果是不一致数据,按配置丢弃、记为可疑数据、或者通过。记为可疑的数据,记入可疑数据表,等待人工校核处理。

3.2.5将通过的数据存入总中心,插入或修正,数据来源标记为对应的分中心。 

3.2.6按[t0,t1)查询需要同步到分中心的实时数据: 

a)操作时间戳op_time在[t0,t1);

b) 站点需要与该分中心同步;

c) 数据来源不是该分中心;  

3.2.7按分中心发来的数据,删除重复数据;

3.2.8压缩、打包、发送到分中心端。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号