CN102088489A - 一种分布式数据同步系统及方法 - Google Patents
一种分布式数据同步系统及方法 Download PDFInfo
- Publication number
- CN102088489A CN102088489A CN2010106241183A CN201010624118A CN102088489A CN 102088489 A CN102088489 A CN 102088489A CN 2010106241183 A CN2010106241183 A CN 2010106241183A CN 201010624118 A CN201010624118 A CN 201010624118A CN 102088489 A CN102088489 A CN 102088489A
- Authority
- CN
- China
- Prior art keywords
- node
- module
- version number
- sequence
- decision
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种分布式数据同步系统及方法,包括通过网络连接的多个节点,其中每个节点均包括数据库、节点状态表以及数据同步模块,数据同步模块具体包括:节点上线初始化模块、节点状态维护模块、节点类型选择模块、同步请求生成模块、同步请求发送模块、串行化调度模块、决策调控模块、同步更新接收模块、同步更新重发模块、同步更新执行模块。本发明还提供了利用所述系统实现数据同步的方法。本发明提出的分布式数据同步系统及方法在无中心节点的网络环境中,可以实现实时、并发操作的分布式数据同步,保证在任意节点可以随时上线或下线的情况下,网络中每个节点数据库中的数据实时一致。
Description
技术领域
本发明涉及一种数据同步系统及方法,特别涉及一种分布式数据同步系统及方法,属于计算机技术领域。
背景技术
随着信息技术的进步和应用系统数据的急剧增加,数据库需要及时存储和访问数据。很多应用系统之间为了保证数据的一致,需要进行数据库数据的同步。
数据库同步问题,大型数据库厂商在其主流数据库产品提出了同构复制技术,并在此基础上提出了异构数据库复制技术。Oracle通过数据库转换器(Oracle Transparent Gateway)来实现异构数据库同步,它是一种对称复制。DB2使用CCD(Consistent Change Data)表来实现异构复制。SyBase利用LTM(Log Transfer Manager)来实现异构复制,SQL Server提出出版者/预订者技术。
目前,广泛应用于商业当中的数据库同步方案主要分为:分布式数据库采用的数据同步方法和同步中间件。一些独立软件开发商也开发出大量具有异构数据库同步功能的软件和产品,其中比较著名的有:PeerDirect的PDRE,提出了一种基于控制表变化法的同步方法。Syware的DataSync,采用影子表技术实现数据库同步。SynchroLogic的SyncKit,采用基于API方法实现数据库同步。
国内对于分布式异构数据库数据同步的研究,比较著名的系统有:中国人民大学的金仓数据库系统(KingBase)、东南大学的Galaxy系统、国防科技大学的TTR、中科院软件所对象技术中心承担的“石化应用软件示范工程”,它利用消息中间件ISMQ实现了实时数据库环境下的数据同步。
但是,目前国内外数据库同步的方案,主要针对的是存在中心节点的网络环境,由中心节点控制数据库同步。对于无中心节点的网络环境中,怎样保持网络中每个节点数据库中的数据实时一致,在国内外的研究中尚未见报道。无中心节点的网络环境,指网络中所有节点地位相同,每个节点可以随时上线或下线,每个节点可以随时发起数据同步请求。
发明内容
本发明的目的是针对现有技术的缺陷,设计一种针对无中心节点网络环境的分布式数据库同步系统和方法,实现实时、并发操作的分布式数据同步,保证网络中每个节点数据库中的数据实时一致。
本发明提供了一种分布式数据同步系统,包括通过网络连接的多个节点,其中每个节点均包括数据库、节点状态表以及数据同步模块,其中节点状态表包括网络中每个节点的IP地址、最高版本号和节点类型,最高版本号在节点第一次上线时设置为0,每执行一次对数据库的修改操作最高版本号加1,节点类型分为决策节点、备份节点和普通节点;网络中每个节点包括的数据库均拥有相同的数据库名、数据表名和数据表结构;数据同步模块具体包括:
节点上线初始化模块:负责在节点新上线时通过节点类型选择模块,确定新上线节点类型,然后向网络中其他节点发送上线消息,上线消息包括本节点的IP地址、最高版本号和节点类型;在节点状态表中增加本节点信息;
节点状态维护模块:负责接收网络中其它节点的上线消息,修改节点状态表,并每隔一定时间在网络中广播本节点的IP地址、最高版本号和节点类型;
节点类型选择模块:根据设置的节点类型选择策略确定本节点的节点类型;
同步请求生成模块:在本节点有数据同步请求时,生成数据同步操作序列;
同步请求发送模块:负责向网络中其他在线节点发送本节点的数据同步操作序列;
串行化调度模块:负责接收网络中所有节点的数据同步操作序列,并将这些操作序列串行化,形成串行化操作序列,序列中每个操作均对应一个版本号;
决策调控模块:如果是决策节点,则在有新上线节点且其最高版本号与决策节点不一致时,向该节点发送使其最高版本号与决策节点一致的串行化操作序列;在网络中有数据同步请求时,将决策节点最高版本号之后的串行化操作序列发送给网络中其他节点;
同步更新接收模块:接收从决策节点发送来的串行化操作序列;
同步更新重发模块:负责向决策节点发送重发串行化操作序列的请求,决策节点也使用该模块接收其他节点发送的重发串行化操作序列的请求;
同步更新执行模块:网络中的节点根据接收的决策节点发送来的串行化操 作序列执行本地数据库操作,并更新最高版本号以及本地的串行化操作序列。
本发明还提供了一种分布式数据同步方法,该方法使用上述分布式数据同步系统实现数据同步,包括有数据同步请求时的数据同步和节点新上线时的数据同步,其中有数据同步请求时的数据同步包括以下步骤:
步骤一、网络中有节点发起分布式数据同步请求,通过同步请求生成模块生成数据同步操作序列;
步骤二、所有发起数据同步请求的节点通过同步请求发送模块向网络中其他在线节点发送本节点的数据同步操作序列;
步骤三、网络中所有节点通过串行化调度模块接收网络中所有节点的数据同步操作序列,并将接收到的数据同步操作序列串行化,形成串行化操作序列;
步骤四、决策节点通过决策调控模块将串行化操作序列发送给网络中其他节点;
步骤五、网络中的在线节点通过同步更新接收模块接收从决策节点发送来的串行化操作序列;
步骤六、网络中的在线节点将接收到的串行化操作序列中的版本号与本地节点的最高版本号进行比较,如果串行化操作序列中的版本号是从本地节点的最高版本号+1开始,并且版本号连续,则说明接收到的串行化操作序列正确,转到步骤九;否则转到步骤七;
步骤七、在线节点通过同步更新重发模块向决策节点发送重发串行化操作序列的请求;
步骤八、决策节点收到重发串行化操作序列的请求后,重新向该请求重发的节点发送对应的串行化操作序列,转到步骤五;
步骤九、在线节点通过同步更新执行模块根据接收的决策节点发送来的串行化操作序列执行本地数据库操作,并更新最高版本号以及本地的串行化操作序列;
节点新上线时的数据同步包括以下步骤:
步骤一、节点新上线时,通过节点上线初始化模块确定新上线节点类型,向网络中其他节点发送上线消息,在节点状态表中增加本节点信息;
步骤二、新上线节点比较自身节点与决策节点的最高版本号信息,并进行判断,如果新上线节点最高版本号小于决策节点最高版本号,则转到步骤三, 否则转到步骤十;
步骤三、新上线节点通过同步更新重发模块请求决策节点发送新上线节点最高版本号之后的串行化操作序列;
步骤四、决策节点通过决策调控模块将版本号从新上线节点最高版本号+1开始到决策节点最高版本号的串行化操作序列发送给新上线节点;
步骤五、新上线节点通过同步更新接收模块接收从决策节点发送来的串行化操作序列;
步骤六、新上线节点将接收到的串行化操作序列中的版本号与本地节点和决策节点的最高版本号进行比较,如果串行化操作序列中的版本号是从本地节点的最高版本号+1开始,并且版本号连续,直到版本号为决策节点的最高版本号为止,则说明接收到的串行化操作序列正确,转到步骤九;否则转到步骤七;
步骤七、新上线节点通过同步更新重发模块向决策节点发送重发串行化操作序列的请求;
步骤八、决策节点收到重发串行化操作序列的请求后,重新向新上线节点发送对应的串行化操作序列,转到步骤五;
步骤九、新上线节点通过同步更新执行模块根据接收的决策节点发送来的串行化操作序列执行本地数据库操作,并更新最高版本号以及本地的串行化操作序列;
步骤十、新上线节点通过节点状态维护模块每隔一定时间在网络中广播本节点的IP地址、最高版本号和节点类型。
有益效果
本发明提出的分布式数据同步系统及方法在无中心节点的网络环境中,可以实现实时、并发操作的分布式数据同步,保证在任意节点可以随时上线或下线的情况下,网络中每个节点数据库中的数据实时一致。
附图说明
图1、本发明所述系统中每个节点的结构图;
图2、本发明所述方法的流程图。
图3、有节点上线或下线时的数据同步方法流程图。
具体实施方式
下面结合附图,具体说明本发明的优选实施方式。
本实施例是根据本发明实现的一种分布式数据同步系统,它包括通过网络连接的6个节点。图1为系统中每个节点的结构图。网络中6个节点的IP地址分别为192.168.1.11、192.168.1.12、192.168.1.13、192.168.1.14、192.168.1.15、192.168.1.16。每个节点本地使用的数据库为MySql数据库,每个节点的数据库名均为testdb,数据库表名称为course,course中字段名及字段类型如表1所示。每个节点的数据库的内容一致。
表1.course表中的字段名及字段类型
数据库表字段名 | 字段类型 |
c_id | int(3) |
cname | varchar(10) |
course表中的内容如表2所示。
表2.course表中内容
c_id | cname |
1 | Physics |
每个节点的数据同步模块具体包括:
节点上线初始化模块:负责在节点新上线时通过节点类型选择模块,确定新上线节点类型,然后向网络中其他节点发送上线消息,上线消息包括本节点的IP地址、最高版本号和节点类型;在节点状态表中增加本节点信息;
节点状态维护模块:负责接收网络中其它节点的上线消息,修改节点状态表,并每隔一定时间在网络中广播本节点的IP地址、最高版本号和节点类型;
节点类型选择模块:根据设置的节点类型选择策略确定本节点的节点类型;
同步请求生成模块:在本节点有数据同步请求时,生成数据同步操作序列;
同步请求发送模块:负责向网络中其他在线节点发送本节点的数据同步操作序列;
串行化调度模块:负责接收网络中所有节点的数据同步操作序列,并将这些操作序列串行化,形成串行化操作序列,序列中每个操作均对应一个版本号;
决策调控模块:如果是决策节点,则在有新上线节点且其最高版本号与决 策节点不一致时,向该节点发送使其最高版本号与决策节点一致的串行化操作序列;在网络中有数据同步请求时,将决策节点最高版本号之后的串行化操作序列发送给网络中其他节点;
同步更新接收模块:接收从决策节点发送来的串行化操作序列;
同步更新重发模块:负责向决策节点发送重发串行化操作序列的请求,决策节点也使用该模块接收其他节点发送的重发串行化操作序列的请求;
同步更新执行模块:网络中的节点根据接收的决策节点发送来的串行化操作序列执行本地数据库操作,并更新最高版本号以及本地的串行化操作序列。
日志处理模块:维护日志文件,日志文件记录运行过程中的数据执行消息和错误消息。
本实施方式中,每个节点还包括共享内存和共享内存管理模块。共享内存管理模块负责管理共享内存的读写;共享内存用于缓存本地节点的同步请求,存放数据同步操作序列以及串行化操作序列。
在本实施例中,进行数据同步前要对网络中新上线节点进行初始化。新上线节点通过上线初始化模块修改节点状态表,通过节点类型选择模块确定新上线节点类型。节点类型选择模块根据设置的节点类型选择策略确定本节点的节点类型,节点类型选择策略可以有很多种,例如根据节点上线顺序选择节点类型、根据节点在线时间选择节点类型、根据节点处理速度选择节点类型等。
本实施例中采用的节点类型选择策略如下:
当网络中有新上线节点时,新上线节点首先接收获得其他节点的状态信息,修改本地节点状态表。当节点状态表中没有发现决策节点时即表示只有自身节点在线,则将本节点定义为决策节点;当节点状态表中只存在决策节点时,则将本节点定义为备份节点;当节点状态表中已经存在决策节点和备份节点时,则将本节点定义为普通节点。
当网络中已有决策节点以及备份节点和其他普通节点的环境下:当决策节点下线,备份节点自动升级成决策节点,其他在线节点在本地节点状态表中删除已下线的决策节点信息,并广播当前本节点状态;当决策节点在线,备份节点下线时,选择IP地址中最大的节点作为新的备份节点,各在线节点在本地节点状态表中删除已下线的备份节点信息,并广播当前本节点状态;当决策节点和备份节点同时下线时,选择在线节点中IP地址最大的节点为当前的决策节点, 选择在线节点中IP地址次大的节点为备份节点,各在线节点在本地节点状态表中删除已下线的决策节点和备份节点信息,并广播当前本节点状态;当普通节点下线时,不发生决策节点、备份节点的变更,各在线节点在本地节点状态表中删除已下线普通节点的信息,并广播当前本节点状态。
节点类型包括3种:0表示普通节点;1表示备份节点;2表示决策节点。根据节点类型选择策略,节点状态表的内容,如表3所示。
表3.节点状态表
节点IP | 最高版本号 | 节点类型 |
192.168.1.11 | 103 | 2 |
192.168.1.12 | 103 | 0 |
192.168.1.13 | 103 | 0 |
192.168.1.14 | 103 | 0 |
192.168.1.15 | 103 | 0 |
192.168.1.16 | 103 | 1 |
最高版本号是指到当前时间为止,本地节点从决策节点接收到并执行的操作的最高版本号。
本实施例中,当网络中有节点发起数据同步请求时,执行以下步骤:
步骤一、IP为192.168.1.13的节点发起数据同步请求:
insert into course values(4,′Maths′);
insert into course values(2,′English′);
在同一时刻网络中IP为192.168.1.15的节点发起数据同步请求:
insert into course values(3,′Computer′)。
发起数据同步请求的节点通过同步请求生成模块生成数据同步操作序列。
IP为192.168.1.13的节点的数据同步操作序列,如表4所示。
表4.IP为192.168.1.13的节点的数据同步操作序列
本地序列号 | 操作请求时间 | Sql语句类型 | 操作内容 |
1 | 2010-12-4 15:40:32 | Insert | insert into course values(4,′Maths′) |
2 | 2010-12-4 15:40:33 | Insert | insert into course values(2,′English′) |
[0082] IP为192.168.1.15的数据同步操作序列,如表5所示。
表5.IP为192.168.1.15的数据同步操作序列
本地序列号 | 操作请求时间 | Sql语句类型 | 操作内容 |
1 | 2010-12-4 15:40:32 | Insert | insert into course values(3,′Computer′) |
步骤二、发起数据同步请求的IP为192.168.1.13的节点和IP为192.168.1.15的节点各自通过同步请求发送模块向网络中其他在线节点发送各自节点的数据同步操作序列。
步骤三、网络中所有在线节点通过串行化调度模块将接收到的所有发起数据同步请求节点的数据同步操作序列生成串行化操作序列。
数据同步请求发送到IP为192.168.1.11的决策节点后进行串行化得到串行化操作序列,如表6所示。
表6.串行化操作序列
版本号 | Sql语句类型 | 操作内容 | 发起者 | 执行状态 |
104 | Insert | insert into course values(4,′Maths′) | 192.168.1.13 | 0 |
105 | Insert | insert into course values(3,′Computer′) | 192.168.1.15 | 0 |
106 | Insert | insert into course values(2,′English′) | 192.168.1.13 | 0 |
其中,执行状态有2个取值:“0”表示这条操作还未执行,“1”表示这条操作已执行。
步骤四、IP为192.168.1.11的决策节点通过决策调控模块向网络中其他在线节点发送串行化操作序列。
步骤五、网络中的其他5个在线节点通过同步更新接收模块接收来自决策节点192.168.1.11发送的串行化操作序列。
步骤六、网络中各个在线节点将IP为192.168.1.11的决策节点发送来的串行化操作序列与本地的最高版本号比较。如果起始版本号正确且所有版本号连续,则表明接收到了正确的串行化操作序列,转到步骤九;否则转到步骤七。
步骤七、接收到错误信息的网络节点通过同步更新重发模块向IP为192.168.1.11的决策节点发送重发请求;
步骤八、IP为192.168.1.11的决策节点重新向该接收错误的节点发送串行化操作序列,转向步骤五。
步骤九、网络中的节点根据接收到的从IP为192.168.1.11的决策节点发 送来的串行化操作序列,顺序逐条插入数据。并更新最高版本号以及本地的串行化操作序列。
最后网络中各节点在各自的数据库testdb中course表的值信息相同,数据顺序也相同,如表7所示。
表7.course表的内容
c_id | cname |
1 | Physics |
4 | Maths |
3 | Computer |
2 | English |
此次IP为192.168.1.13的普通节点和IP为192.168.1.15的普通节点发起的同步更新操作请求处理结束。系统进入监听状态等待下一次的数据同步更新操作。
在数据同步请求伴随有节点上线或者下线时,本实施例的操作步骤为:
步骤一、IP为192.168.1.11的当前决策节点在网络环境中下线,向网络在线节点广播下线信息。各在线节点接收到IP为192.168.1.11决策节点的下线信息后,根据节点类型选择策略,各在线节点修改节点状态表,选取IP为192.168.1.11节点下线之前的IP为192.168.1.16的备份节点为网络中新的决策节点,并同时选取IP为192.168.1.15的节点为新的备份节点。各节点修改后新的节点状态表如表8所示。
表8.节点状态表
节点IP | 最高版本号 | 节点类型 |
192.168.1.12 | 106 | 0 |
192.168.1.13 | 106 | 0 |
192.168.1.14 | 106 | 0 |
192.168.1.15 | 106 | 1 |
192.168.1.16 | 106 | 2 |
[0105] IP为192.168.1.14的节点发起数据同步更新操作:
delete from course where c_id=1;
IP为192.168.1.15的节点发起数据同步更新操作:
update course set cname=′Chemistry′where c_id=4;
发起数据同步请求的节点通过同步请求生成模块生成数据同步操作序列。
IP为192.168.1.14的节点的数据同步操作序列,如表9所示。
表9.IP为192.168.1.14的节点的数据同步操作序列
本地序列号 | 操作请求时间 | Sql语句类型 | 操作内容 |
1 | 2010-12-4 15:48:02 | Delete | delete from course where c_id=1; |
IP为192.168.1.15的节点的数据同步操作序列,如表10所示。
表10.IP为192.168.1.15的节点的数据同步操作序列
本地序列号 | 操作请求时间 | Sql语句类型 | 操作内容 |
1 | 2010-12-4 15:48:52 | Update | update course set cname=′Chemistry′ where c_id=4; |
步骤二、发起数据同步请求的IP为192.168.1.14的节点和IP为192.168.1.15的节点各自通过同步请求发送模块向网络中其他在线节点发送各自节点的数据同步操作序列。
步骤三、网络中所有节点通过串行化调度模块将接收到的所有发起数据同步请求节点的数据同步操作序列生成串行化操作序列。
IP为192.168.1.16的决策节点后根据串行化调度策略得到的串行化操作序列,如表11所示。
表11.串行化操作序列
执行状态有2个取值:“0”表示操作还未执行,“1”表示操作已执行。
步骤四、IP为192.168.1.16的决策节点通过决策调控模块向网络中其他在线节点发送串行化操作序列。
步骤五、网络中的其他在线节点通过同步更新接收模块接收来自决策节点192.168.1.16发送的串行化操作序列。
步骤六、网络中各个在线节点将IP为192.168.1.16的决策节点发送来的串行化操作序列与本地的最高版本号比较。如果起始版本号正确且所有版本号连续,则表明接收到了正确的串行化操作序列,转到步骤十;否则转到步骤八。
步骤七、接收到错误信息的网络节点通过同步更新重发模块向IP为192.168.1.16的决策节点发送重发请求;
步骤八、IP为192.168.1.16的决策节点重新向该接收错误的节点发送串行化操作序列,转向步骤七。
步骤九、网络中的节点根据接收到的从IP为192.168.1.16的决策节点发送来的串行化操作序列,顺序逐条插入数据,并更新最高版本号以及本地的串行化操作序列。
最后网络中各在线节点在各自的数据库testdb中course表的值信息相同,数据顺序也相同,如表12所示。
表12.course表的内容
c_id | cname |
4 | Chemistry |
3 | Computer |
2 | English |
步骤十、此时,IP为192.168.1.11的节点上线,向网络中广播节点上线信息,并接收其他在线节点状态广播,修改本节点状态表,并根据节点类型选择策略将本节点定义为普通节点。各节点收到该节点的上线信息后修改节点状态表,如表13所示。
表13.节点状态表
节点IP | 最高版本号 | 节点类型 |
192.168.1.12 | 108 | 0 |
192.168.1.13 | 108 | 0 |
[0134]
192.168.1.14 | 108 | 0 |
192.168.1.15 | 108 | 1 |
192.168.1.16 | 108 | 2 |
192.168.1.11 | 106 | 0 |
IP为192.168.1.16的决策节点发现新上线节点最高版本号低于决策节点最高版本号,IP为192.168.1.16的决策节点通过决策调控模块向IP为192.168.1.11的新上线节点发送串行化操作序列,串行化操作序列如表11所示,IP为192.168.1.11的新上线节点接收此串行化序列,进行版本号比较后执行本地更新操作,IP为192.168.1.11的新上线节点更新操作后的本地数据库testdb中course表内容如表12所示,并向网络中其他在线节点广播本节点最高版本号信息,网络中各在线节点接收到了该广播信息后修改各自的节点状态表。最后网络中在线节点得到一致的数据信息。并更新得到新的节点状态表如表14所示。
表14.节点状态表
节点IP | 最高版本号 | 节点类型 |
192.168.1.12 | 108 | 0 |
192.168.1.13 | 108 | 0 |
192.168.1.14 | 108 | 0 |
192.168.1.15 | 108 | 1 |
192.168.1.16 | 108 | 2 |
192.168.1.11 | 108 | 0 |
此次同步更新操作处理结束。系统进入监听状态等待下一次的数据同步更新操作。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,或者对其中部分技术特征进行等同替换,这些改进和替换也应视为本发明的保护范围。
Claims (5)
1.一种分布式数据同步系统,其特征在于,包括通过网络连接的多个节点,其中每个节点均包括数据库、节点状态表以及数据同步模块,其中节点状态表包括网络中每个节点的IP地址、最高版本号和节点类型,最高版本号在节点第一次上线时设置为0,每执行一次对数据库的修改操作最高版本号加1,节点类型分为决策节点、备份节点和普通节点;网络中每个节点包括的数据库均拥有相同的数据库名、数据表名和数据表结构;数据同步模块具体包括:
节点上线初始化模块:负责在节点新上线时通过节点类型选择模块,确定新上线节点类型,然后向网络中其他节点发送上线消息,上线消息包括本节点的IP地址、最高版本号和节点类型;在节点状态表中增加本节点信息;
节点状态维护模块:负责接收网络中其它节点的上线消息,修改节点状态表,并每隔一定时间在网络中广播本节点的IP地址、最高版本号和节点类型;
节点类型选择模块:根据设置的节点类型选择策略确定本节点的节点类型;
同步请求生成模块:在本节点有数据同步请求时,生成数据同步操作序列;
同步请求发送模块:负责向网络中其他在线节点发送本节点的数据同步操作序列;
串行化调度模块:负责接收网络中所有节点的数据同步操作序列,并将这些操作序列串行化,形成串行化操作序列,序列中每个操作均对应一个版本号;
决策调控模块:如果是决策节点,则在有新上线节点且其最高版本号与决策节点不一致时,向该节点发送使其最高版本号与决策节点一致的串行化操作序列;在网络中有数据同步请求时,将决策节点最高版本号之后的串行化操作序列发送给网络中其他节点;
同步更新接收模块:接收从决策节点发送来的串行化操作序列;
同步更新重发模块:负责向决策节点发送重发串行化操作序列的请求,决策节点也使用该模块接收其他节点发送的重发串行化操作序列的请求;
同步更新执行模块:网络中的节点根据接收的决策节点发送来的串行化操作序列执行本地数据库操作,并更新最高版本号以及本地的串行化操作序列。
2.根据权利要求1所述的一种分布式数据同步系统,其特征在于,所述节点还包括共享内存,所述数据同步模块还包括共享内存管理模块,共享内存管理模块负责管理共享内存的读写;共享内存用于缓存本地节点的同步请求,存放数据同步操作序列以及串行化操作序列。
3.根据权利要求1或2所述的一种分布式数据同步系统,其特征在于,所述数据同步模块还包括日志处理模块,负责维护日志文件,日志文件记录运行过程中的数据执行消息和错误消息。
4.一种分布式数据同步方法,该方法使用权利要求1所述系统实现分布式数据同步,其特征在于,网络中有数据同步请求时,实现数据同步的步骤包括:
步骤一、网络中有节点发起分布式数据同步请求,通过同步请求生成模块生成数据同步操作序列;
步骤二、所有发起数据同步请求的节点通过同步请求发送模块向网络中其他在线节点发送本节点的数据同步操作序列;
步骤三、网络中所有节点通过串行化调度模块接收网络中所有节点的数据同步操作序列,并将接收到的数据同步操作序列串行化,形成串行化操作序列;
步骤四、决策节点通过决策调控模块将串行化操作序列发送给网络中其他节点;
步骤五、网络中的在线节点通过同步更新接收模块接收从决策节点发送来的串行化操作序列;
步骤六、网络中的在线节点将接收到的串行化操作序列中的版本号与本地节点的最高版本号进行比较,如果串行化操作序列中的版本号是从本地节点的最高版本号+1开始,并且版本号连续,则说明接收到的串行化操作序列正确,转到步骤九;否则转到步骤七;
步骤七、在线节点通过同步更新重发模块向决策节点发送重发串行化操作序列的请求;
步骤八、决策节点收到重发串行化操作序列的请求后,重新向该请求重发的节点发送对应的串行化操作序列,转到步骤五;
步骤九、在线节点通过同步更新执行模块根据接收的决策节点发送来的串行化操作序列执行本地数据库操作,并更新最高版本号以及本地的串行化操作序列。
5.根据权利要求4所述的一种分布式数据同步方法,其特征在于,还包括节点新上线时的数据同步方法,包括以下步骤:
步骤一、节点新上线时,通过节点上线初始化模块确定新上线节点类型,向网络中其他节点发送上线消息,在节点状态表中增加本节点信息;
步骤二、新上线节点比较自身节点与决策节点的最高版本号信息,并进行判断,如果新上线节点最高版本号小于决策节点最高版本号,则转到步骤三,否则转到步骤十;
步骤三、新上线节点通过同步更新重发模块请求决策节点发送新上线节点最高版本号之后的串行化操作序列;
步骤四、决策节点通过决策调控模块将版本号从新上线节点最高版本号+1开始到决策节点最高版本号的串行化操作序列发送给新上线节点;
步骤五、新上线节点通过同步更新接收模块接收从决策节点发送来的串行化操作序列;
步骤六、新上线节点将接收到的串行化操作序列中的版本号与本地节点和决策节点的最高版本号进行比较,如果串行化操作序列中的版本号是从本地节点的最高版本号+1开始,并且版本号连续,直到版本号为决策节点的最高版本号为止,则说明接收到的串行化操作序列正确,转到步骤九;否则转到步骤七;
步骤七、新上线节点通过同步更新重发模块向决策节点发送重发串行化操作序列的请求;
步骤八、决策节点收到重发串行化操作序列的请求后,重新向新上线节点发送对应的串行化操作序列,转到步骤五;
步骤九、新上线节点通过同步更新执行模块根据接收的决策节点发送来的串行化操作序列执行本地数据库操作,并更新最高版本号以及本地的串行化操作序列;
步骤十、新上线节点通过节点状态维护模块每隔一定时间在网络中广播本节点的IP地址、最高版本号和节点类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010624118 CN102088489B (zh) | 2010-12-31 | 2010-12-31 | 一种分布式数据同步系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010624118 CN102088489B (zh) | 2010-12-31 | 2010-12-31 | 一种分布式数据同步系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102088489A true CN102088489A (zh) | 2011-06-08 |
CN102088489B CN102088489B (zh) | 2013-05-22 |
Family
ID=44100101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010624118 Expired - Fee Related CN102088489B (zh) | 2010-12-31 | 2010-12-31 | 一种分布式数据同步系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102088489B (zh) |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102438042A (zh) * | 2011-11-04 | 2012-05-02 | 中国工商银行股份有限公司 | 一种多点接入设备的动态参数同步方法及系统 |
CN102646127A (zh) * | 2012-02-29 | 2012-08-22 | 浪潮(北京)电子信息产业有限公司 | 分布式文件系统副本选择方法和装置 |
CN102693324A (zh) * | 2012-01-09 | 2012-09-26 | 西安电子科技大学 | 一种分布式数据库同步系统、同步方法和节点管理方法 |
CN102831223A (zh) * | 2012-08-23 | 2012-12-19 | 大唐移动通信设备有限公司 | 一种分布式数据库的管理方法和系统 |
CN103106200A (zh) * | 2011-11-09 | 2013-05-15 | 上海盛霄云计算技术有限公司 | 非关系型数据库同步系统及双写同步方法 |
CN103412919A (zh) * | 2013-08-09 | 2013-11-27 | 杭州华为数字技术有限公司 | 一种分布式文件系统的调度方法及设备 |
CN103561095A (zh) * | 2013-11-04 | 2014-02-05 | 金蝶软件(中国)有限公司 | 一种数据同步方法、节点及存储服务集群 |
CN103795754A (zh) * | 2012-10-31 | 2014-05-14 | 中国电信股份有限公司 | 多系统间的数据同步方法和系统 |
CN103793533A (zh) * | 2014-02-27 | 2014-05-14 | 大唐移动通信设备有限公司 | 一种分布式数据同步方法和设备 |
CN104112016A (zh) * | 2014-07-18 | 2014-10-22 | 北京京东尚科信息技术有限公司 | 变更数据表结构的方法 |
CN104133827A (zh) * | 2013-09-29 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 一种数据库更新方法和更新系统 |
CN104168321A (zh) * | 2014-08-22 | 2014-11-26 | 深圳市中兴移动通信有限公司 | 一种存储数据更新的方法、云存储服务器及终端 |
CN104348906A (zh) * | 2014-09-16 | 2015-02-11 | 深圳市华为技术软件有限公司 | 一种分布式系统中数据协商方法及装置 |
CN105511987A (zh) * | 2015-12-08 | 2016-04-20 | 上海爱数信息技术股份有限公司 | 一种强一致性且高可用的分布式任务管理系统 |
CN105512266A (zh) * | 2015-12-03 | 2016-04-20 | 曙光信息产业(北京)有限公司 | 一种实现分布式数据库操作一致性的方法及装置 |
CN106096873A (zh) * | 2016-08-16 | 2016-11-09 | 杭州市质量技术监督检测院 | 产品安全风险监控系统和方法 |
CN106095957A (zh) * | 2016-06-16 | 2016-11-09 | 北京航空航天大学 | 分布式文件系统的跨域多副本文件同步方法及装置 |
CN103685350B (zh) * | 2012-09-04 | 2016-12-21 | 阿里巴巴集团控股有限公司 | 存储系统的同步方法及相关的设备 |
CN106296230A (zh) * | 2016-08-16 | 2017-01-04 | 杭州市质量技术监督检测院 | 日用消费品质量安全监控系统和方法 |
CN106330559A (zh) * | 2016-08-29 | 2017-01-11 | 安徽奥里奥克科技股份有限公司 | 基于MapReduce的复杂网络拓扑特征参数计算方法和系统 |
CN106339793A (zh) * | 2016-08-16 | 2017-01-18 | 杭州市质量技术监督检测院 | 产品质量风险预警系统和方法 |
CN106341483A (zh) * | 2016-09-28 | 2017-01-18 | 深圳市普渡科技有限公司 | 一种基于局域网多播组的分布式调度系统通信方法 |
CN106357771A (zh) * | 2016-09-20 | 2017-01-25 | 天脉聚源(北京)科技有限公司 | 一种状态同步方法及装置 |
CN107229649A (zh) * | 2016-03-25 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 数据更新系统及方法 |
CN107317843A (zh) * | 2017-05-31 | 2017-11-03 | 民政部国家减灾中心 | 基于服务器集群的灾情速报方法及系统 |
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
CN107644030A (zh) * | 2016-07-20 | 2018-01-30 | 华为技术有限公司 | 分布式数据库数据同步方法、相关装置及系统 |
CN109710586A (zh) * | 2018-12-28 | 2019-05-03 | 北京谷数科技有限公司 | 一种集群节点配置文件同步方法及装置 |
CN110347749A (zh) * | 2019-06-27 | 2019-10-18 | 绿漫科技有限公司 | 一种基于crdt的分布式类json数据自动合并的方法及系统 |
CN110661869A (zh) * | 2019-09-26 | 2020-01-07 | 苏州浪潮智能科技有限公司 | 一种节点上线方法、系统、装置、设备及计算机存储介质 |
CN110968646A (zh) * | 2019-12-20 | 2020-04-07 | 睿住科技有限公司 | 一种嵌入式系统数据库同步方法、装置及存储介质 |
CN111447092A (zh) * | 2020-03-26 | 2020-07-24 | 杭州复杂美科技有限公司 | 版本监测方法、设备和存储介质 |
CN112087343A (zh) * | 2020-09-22 | 2020-12-15 | 广州合易威视信息科技有限公司 | 一种坐席管理系统的组网与通讯方法 |
CN112232627A (zh) * | 2020-09-07 | 2021-01-15 | 国网宁夏电力有限公司经济技术研究院 | 输变电工程造价设计要素的估算方法 |
CN112232625A (zh) * | 2020-09-07 | 2021-01-15 | 国网宁夏电力有限公司经济技术研究院 | 基于时空大数据的输变电工程造价评估方法 |
CN112232628A (zh) * | 2020-09-07 | 2021-01-15 | 国网宁夏电力有限公司经济技术研究院 | 输变电工程造价数据整理与深化应用系统 |
CN117931829A (zh) * | 2024-03-22 | 2024-04-26 | 平凯星辰(北京)科技有限公司 | 数据库更新方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1536802A (zh) * | 2003-04-03 | 2004-10-13 | 中兴通讯股份有限公司 | 一种数据同步方法 |
CN1574887A (zh) * | 2003-06-12 | 2005-02-02 | 日本电气株式会社 | 媒体同步系统和使用该系统的服务提供方法 |
US20050187986A1 (en) * | 2001-10-24 | 2005-08-25 | Bea Systems, Inc. | Data synchronization |
CN1984149A (zh) * | 2006-04-27 | 2007-06-20 | 华为技术有限公司 | 一种基于消息的分布式系统以及在其中通信的方法 |
-
2010
- 2010-12-31 CN CN 201010624118 patent/CN102088489B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050187986A1 (en) * | 2001-10-24 | 2005-08-25 | Bea Systems, Inc. | Data synchronization |
CN1536802A (zh) * | 2003-04-03 | 2004-10-13 | 中兴通讯股份有限公司 | 一种数据同步方法 |
CN1574887A (zh) * | 2003-06-12 | 2005-02-02 | 日本电气株式会社 | 媒体同步系统和使用该系统的服务提供方法 |
CN1984149A (zh) * | 2006-04-27 | 2007-06-20 | 华为技术有限公司 | 一种基于消息的分布式系统以及在其中通信的方法 |
Non-Patent Citations (1)
Title |
---|
赵应钢: "异构分布式数据库数据同步系统设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102438042B (zh) * | 2011-11-04 | 2014-04-02 | 中国工商银行股份有限公司 | 一种多点接入设备的动态参数同步方法及系统 |
CN102438042A (zh) * | 2011-11-04 | 2012-05-02 | 中国工商银行股份有限公司 | 一种多点接入设备的动态参数同步方法及系统 |
CN103106200B (zh) * | 2011-11-09 | 2017-08-01 | 上海盛大网络发展有限公司 | 非关系型数据库同步系统及双写同步方法 |
CN103106200A (zh) * | 2011-11-09 | 2013-05-15 | 上海盛霄云计算技术有限公司 | 非关系型数据库同步系统及双写同步方法 |
CN102693324A (zh) * | 2012-01-09 | 2012-09-26 | 西安电子科技大学 | 一种分布式数据库同步系统、同步方法和节点管理方法 |
CN102646127A (zh) * | 2012-02-29 | 2012-08-22 | 浪潮(北京)电子信息产业有限公司 | 分布式文件系统副本选择方法和装置 |
CN102831223A (zh) * | 2012-08-23 | 2012-12-19 | 大唐移动通信设备有限公司 | 一种分布式数据库的管理方法和系统 |
CN103685350B (zh) * | 2012-09-04 | 2016-12-21 | 阿里巴巴集团控股有限公司 | 存储系统的同步方法及相关的设备 |
CN103795754A (zh) * | 2012-10-31 | 2014-05-14 | 中国电信股份有限公司 | 多系统间的数据同步方法和系统 |
CN103795754B (zh) * | 2012-10-31 | 2017-08-25 | 中国电信股份有限公司 | 多系统间的数据同步方法和系统 |
CN103412919B (zh) * | 2013-08-09 | 2016-12-28 | 杭州华为数字技术有限公司 | 一种分布式文件系统的调度方法及设备 |
CN103412919A (zh) * | 2013-08-09 | 2013-11-27 | 杭州华为数字技术有限公司 | 一种分布式文件系统的调度方法及设备 |
CN104133827B (zh) * | 2013-09-29 | 2016-04-27 | 腾讯科技(深圳)有限公司 | 一种数据库更新方法和更新系统 |
CN104133827A (zh) * | 2013-09-29 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 一种数据库更新方法和更新系统 |
CN103561095A (zh) * | 2013-11-04 | 2014-02-05 | 金蝶软件(中国)有限公司 | 一种数据同步方法、节点及存储服务集群 |
CN103793533A (zh) * | 2014-02-27 | 2014-05-14 | 大唐移动通信设备有限公司 | 一种分布式数据同步方法和设备 |
CN104112016B (zh) * | 2014-07-18 | 2017-10-03 | 北京京东尚科信息技术有限公司 | 变更数据表结构的方法 |
CN104112016A (zh) * | 2014-07-18 | 2014-10-22 | 北京京东尚科信息技术有限公司 | 变更数据表结构的方法 |
CN104168321A (zh) * | 2014-08-22 | 2014-11-26 | 深圳市中兴移动通信有限公司 | 一种存储数据更新的方法、云存储服务器及终端 |
CN104348906B (zh) * | 2014-09-16 | 2018-05-04 | 华为技术有限公司 | 一种分布式系统中数据协商方法及装置 |
CN104348906A (zh) * | 2014-09-16 | 2015-02-11 | 深圳市华为技术软件有限公司 | 一种分布式系统中数据协商方法及装置 |
CN105512266A (zh) * | 2015-12-03 | 2016-04-20 | 曙光信息产业(北京)有限公司 | 一种实现分布式数据库操作一致性的方法及装置 |
CN105511987A (zh) * | 2015-12-08 | 2016-04-20 | 上海爱数信息技术股份有限公司 | 一种强一致性且高可用的分布式任务管理系统 |
CN107229649B (zh) * | 2016-03-25 | 2019-07-12 | 腾讯科技(深圳)有限公司 | 数据更新系统及方法 |
CN107229649A (zh) * | 2016-03-25 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 数据更新系统及方法 |
CN106095957B (zh) * | 2016-06-16 | 2019-10-18 | 北京航空航天大学 | 分布式文件系统的跨域多副本文件同步方法及装置 |
CN106095957A (zh) * | 2016-06-16 | 2016-11-09 | 北京航空航天大学 | 分布式文件系统的跨域多副本文件同步方法及装置 |
CN107644030A (zh) * | 2016-07-20 | 2018-01-30 | 华为技术有限公司 | 分布式数据库数据同步方法、相关装置及系统 |
CN107644030B (zh) * | 2016-07-20 | 2021-05-18 | 华为技术有限公司 | 分布式数据库数据同步方法、相关装置及系统 |
CN106339793A (zh) * | 2016-08-16 | 2017-01-18 | 杭州市质量技术监督检测院 | 产品质量风险预警系统和方法 |
CN106296230A (zh) * | 2016-08-16 | 2017-01-04 | 杭州市质量技术监督检测院 | 日用消费品质量安全监控系统和方法 |
CN106096873A (zh) * | 2016-08-16 | 2016-11-09 | 杭州市质量技术监督检测院 | 产品安全风险监控系统和方法 |
CN106330559A (zh) * | 2016-08-29 | 2017-01-11 | 安徽奥里奥克科技股份有限公司 | 基于MapReduce的复杂网络拓扑特征参数计算方法和系统 |
CN106357771B (zh) * | 2016-09-20 | 2020-03-17 | 天脉聚源(北京)科技有限公司 | 一种状态同步方法及装置 |
CN106357771A (zh) * | 2016-09-20 | 2017-01-25 | 天脉聚源(北京)科技有限公司 | 一种状态同步方法及装置 |
CN106341483A (zh) * | 2016-09-28 | 2017-01-18 | 深圳市普渡科技有限公司 | 一种基于局域网多播组的分布式调度系统通信方法 |
CN107317843A (zh) * | 2017-05-31 | 2017-11-03 | 民政部国家减灾中心 | 基于服务器集群的灾情速报方法及系统 |
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
CN109710586A (zh) * | 2018-12-28 | 2019-05-03 | 北京谷数科技有限公司 | 一种集群节点配置文件同步方法及装置 |
CN109710586B (zh) * | 2018-12-28 | 2019-09-13 | 北京谷数科技有限公司 | 一种集群节点配置文件同步方法及装置 |
CN110347749A (zh) * | 2019-06-27 | 2019-10-18 | 绿漫科技有限公司 | 一种基于crdt的分布式类json数据自动合并的方法及系统 |
CN110661869A (zh) * | 2019-09-26 | 2020-01-07 | 苏州浪潮智能科技有限公司 | 一种节点上线方法、系统、装置、设备及计算机存储介质 |
CN110968646A (zh) * | 2019-12-20 | 2020-04-07 | 睿住科技有限公司 | 一种嵌入式系统数据库同步方法、装置及存储介质 |
CN111447092A (zh) * | 2020-03-26 | 2020-07-24 | 杭州复杂美科技有限公司 | 版本监测方法、设备和存储介质 |
CN111447092B (zh) * | 2020-03-26 | 2022-11-01 | 杭州复杂美科技有限公司 | 版本监测方法、设备和存储介质 |
CN112232627A (zh) * | 2020-09-07 | 2021-01-15 | 国网宁夏电力有限公司经济技术研究院 | 输变电工程造价设计要素的估算方法 |
CN112232625A (zh) * | 2020-09-07 | 2021-01-15 | 国网宁夏电力有限公司经济技术研究院 | 基于时空大数据的输变电工程造价评估方法 |
CN112232628A (zh) * | 2020-09-07 | 2021-01-15 | 国网宁夏电力有限公司经济技术研究院 | 输变电工程造价数据整理与深化应用系统 |
CN112087343A (zh) * | 2020-09-22 | 2020-12-15 | 广州合易威视信息科技有限公司 | 一种坐席管理系统的组网与通讯方法 |
CN117931829A (zh) * | 2024-03-22 | 2024-04-26 | 平凯星辰(北京)科技有限公司 | 数据库更新方法、装置、电子设备及存储介质 |
CN117931829B (zh) * | 2024-03-22 | 2024-05-24 | 平凯星辰(北京)科技有限公司 | 数据库更新方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102088489B (zh) | 2013-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102088489B (zh) | 一种分布式数据同步系统及方法 | |
CN103036717B (zh) | 分布式数据的一致性维护系统和方法 | |
CN101764831B (zh) | 一种流媒体数据共享方法、共享系统和流媒体节点 | |
CN106055698A (zh) | 数据迁移方法、代理节点及数据库实例 | |
CN101394423B (zh) | 一种媒体定位、搜索方法和系统 | |
WO2017114111A1 (zh) | 分布式系统异步式数据同步的方法 | |
CN109639773B (zh) | 一种动态构建的分布式数据集群控制系统及其方法 | |
CN102571991A (zh) | 基于多级映射的大规模多副本分布式存储系统及其应用方法 | |
CN104954101B (zh) | 基于同步ack的多终端数据同步方法 | |
CN107231400B (zh) | 一种数据的同步方法和装置 | |
CN104468163A (zh) | 容灾网络组网的方法、装置及容灾网络 | |
CN105959420A (zh) | 多客户端元数据同步更新方法及系统 | |
US20190278757A1 (en) | Distributed Database Management System with Dynamically Split B-Tree Indexes | |
CN108282396B (zh) | 一种im集群中的多级消息广播方法及系统 | |
US10397125B2 (en) | Method of cross-regional data transmission and system thereof | |
CN110099128B (zh) | 一种认证数据同步方法及装置 | |
CN105007233B (zh) | 一种基于dhcp服务器集群负载分配地址的方法 | |
US9767023B2 (en) | Method of controlling data writing to persistent storage device | |
TWI693547B (zh) | 一種資料更新方法和設備 | |
CN102209050A (zh) | 一种用户信息共享的即时通讯系统及方法 | |
CN102209051A (zh) | 一种实现用户信息共享的即时通讯系统及方法 | |
CN105656959A (zh) | 基于路由机制的多终端pub/sub消息同步方法 | |
CN201717889U (zh) | 渐进式数据同步系统 | |
CN101552773B (zh) | 一种数据同步中处理数据项标识符映射的方法、设备和系统 | |
CN102209048A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130522 Termination date: 20181231 |
|
CF01 | Termination of patent right due to non-payment of annual fee |