基于gossip协议的离散采集前置机节点数据同步方法与流程

文档序号:22750985发布日期:2020-10-31 09:45阅读:238来源:国知局
基于gossip协议的离散采集前置机节点数据同步方法与流程

本发明涉及数据同步处理领域,具体涉及基于gossip协议的离散采集前置机节点数据同步方法。



背景技术:

随着医疗行业信息化的发展以及社会的需求,对医疗信息系统数据的集中采集治理使用迫在眉睫。因医疗信息系统之间相互独立以及医疗数据敏感性等因素,医疗信息系统通常离散的分布在各个医院或医疗机构的内网环境中。在使用采集前置机采集这些信息系统的数据时,采集前置机也就离散的分布在各个医院/医疗机构处,对所有离散采集前置机的管理就变得极其困难。

现有技术以及相关专利技术对多台采集前置机管理都是将采集前置机设为节点组成中心化集群系统,设立主节点来管理所有节点的数据同步,数据同步只能在主备之间进行单向同步,并且需要所有节点之间能够直接互联,但是在实际情况中每个节点不能满足直接互联;离散采集前置机节点之间网络可能是间接相连通的,某个节点只和一个节点相连,每个节点都是独立运行的,会随时产生新数据,每个节点都是主节点,而现有数据同步相关技术都是针对主备同步的,无法满足全是主节点的数据同步要求。



技术实现要素:

本发明的目的在于:提供了基于gossip协议的离散采集前置机节点数据同步方法,以解决离散采集前置机节点之间数据同步的问题。

本发明采用的技术方案如下:

本发明是基于gossip协议的离散采集前置机节点数据同步方法,该方法具体包括以下步骤:

步骤1:设置n个离散采集前置机,每一个离散采集前置机对应为一个节点,对n个节点进行初始化,每个节点生成唯一的节点id;

步骤2:将步骤1中的n个节点组建成节点网络并设置种子节点;

步骤3:各个节点的数据和节点id绑定,并且各个节点的数据生成对应的数据摘要;

步骤4:各个节点定时或者主动触发和其他节点的数据同步请求;

步骤5:节点网络内进行多个“两两节点”之间数据同步;

步骤6:多个“两两节点”之间经过多次数据同步,所有节点的数据最终达到一致,各个节点都包含所有节点的数据以及数据摘要,从而完成离散前置机采集节点的数据同步。

进一步的,所述步骤3中数据摘要是实际数据的一个简描述,包含一组数据版本信息,数据版本信息包括数据版本号和数据版本时间。

进一步的,所述步骤5中“两两节点”之间基于gossip协议进行数据同步,将两个能够直接数据连通的节点设为a节点和b节点,a节点通过步骤4向b节点定时或者主动触发数据同步请求,数据同步具体步骤为:

步骤51:发送a节点的数据摘要给b节点;

步骤52:b节点接收a节点发送的数据摘要,将b节点的数据摘要和a节点的数据摘要进行数据版本信息对比,经过比较后,将b节点中需要同步给a节点的数据和b节点的数据摘要发送给a节点;

步骤53:a节点接收b节点返回的数据摘要和数据后,先将b节点中同步给a节点的数据合并到a节点,再将b节点同步给a节点的数据摘要和更新后的a节点进行数据版本信息对比,经过比较后,将a节点中需要同步给b节点的数据发送给b节点;

步骤54:b节点再次接收a节点请求,将a节点中同步给b节点的数据合并到b节点。

进一步的,在步骤52中,b节点的数据摘要和a节点的数据摘要进行数据版本信息对比,根据“两者的数据版本信息之差”结合“数据库数据变化日志”,找出从a节点的数据版本信息到b节点的数据版本信息具体发生的数据变化,并根据这些数据变化在b节点中精确的查询出这部分变化的数据,这部分变化的数据即为步骤52中b节点中需要同步给a节点的数据。

进一步的,在步骤53中,b节点同步给a节点的数据摘要和更新后的a节点进行数据版本信息对比,根据“两者的数据版本信息之差”结合“数据库数据变化日志”,找出从b的数据版本信息到a的数据版本信息具体发生的数据变化,并根据这些数据变化在a中精确的查询出这部分变化的数据,这部分变化的数据即为步骤53中a节点中需要同步给b节点的数据。

进一步的,所述数据变化包括数据更新、数据新增和数据删除。

综上所述,由于采用了本技术方案,本发明的有益效果是:

1、本发明是基于gossip协议的离散采集前置机节点数据同步方法,新加入一个节点或删除一个节点能够做到完全无感,节点只需能和其中任意一个节点直连就能加入集群网络,满足在复杂网络条件下组件网络,能够方便的从任意节点查看所有节点数据,方便数据集中展示等场景。

2、本发明是基于gossip协议的离散采集前置机节点数据同步方法,在数据同步过程中各个节点的数据更新不会受收敛过程影响可以随时自我更新变化。

3、本发明是基于gossip协议的离散采集前置机节点数据同步方法,各个节点会将两个数据版本信息之间变化的数据精确找出来进行传递,而不是整个数据进行同步,极大的减少了数据冗余,加快了收敛过程,从而解决了网络复杂离散节点之间的数据同步问题。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图,本说明书附图中的各个部件的比例关系不代表实际选材设计时的比例关系,其仅仅为结构或者位置的示意图,其中:

图1是本发明的节点网络连接图;

图2是本发明的整体流程框图;

图3是本发明中数据同步流程框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

下面结合附图对本发明作详细说明。

实施例一

如图1所示,本发明是基于gossip协议的离散采集前置机节点数据同步方法,该方法具体包括以下步骤:

步骤1:设置n个离散采集前置机,每一个离散采集前置机对应为一个节点,对n个节点进行初始化,每个节点生成唯一的节点id;

步骤2:将步骤1中的n个节点组建成节点网络并设置种子节点;

步骤3:各个节点的数据和节点id绑定,并且各个节点的数据生成对应的数据摘要;

步骤4:各个节点定时或者主动触发和其他节点的数据同步请求;

步骤5:节点网络内进行多个“两两节点”之间数据同步;

步骤6:多个“两两节点”之间经过多次数据同步,所有节点的数据最终达到一致,各个节点都包含所有节点的数据以及数据摘要,从而完成离散前置机采集节点的数据同步。

根据图1所示,在本发明中的节点为离散采集前置机节点的简述,以图1为例,设置a节点、b节点、c节点、e节点、f节点、g节点、h节点,这些节点组建成节点网络,各个节点之间直接或者间接数据连通,在图1中,节点之间实线连接为可以数据直接连通,节点之间虚线连接为无法直接数据连通;根据图1,为a节点、b节点、c节点、e节点可将c节点设置为种子节点,e节点、f节点、g节点、h节点可将e节点设置为种子节点,d节点可将a节点设置为种子节点,设置种子节点这种方式,将所有的节点直接和间接的连接起来了,并组成了一个去中心化的集群。

所述步骤3中数据摘要是实际数据的一个简描述,包含一组数据版本信息,数据版本信息包括数据版本号和数据版本时间。

如图3所示,所述步骤5中“两两节点”之间基于gossip协议进行数据同步,将两个能够直接数据连通的节点设为a节点和b节点,a节点通过步骤4向b节点定时或者主动触发数据同步请求,数据同步具体步骤为:

步骤51:发送a节点的数据摘要给b节点;

步骤52:b节点接收a节点发送的数据摘要,将b节点的数据摘要和a节点的数据摘要进行数据版本信息对比,经过比较后,将b节点中需要同步给a节点的数据和b节点的数据摘要发送给a节点;

步骤53:a节点接收b节点返回的数据摘要和数据后,先将b节点中同步给a节点的数据合并到a节点,再将b节点同步给a节点的数据摘要和更新后的a节点进行数据版本信息对比,经过比较后,将a节点中需要同步给b节点的数据发送给b节点;

步骤54:b节点再次接收a节点请求,将a节点中同步给b节点的数据合并到b节点。

具体的,在步骤52中,b节点的数据摘要和a节点的数据摘要进行数据版本信息对比,根据“两者的数据版本信息之差”结合“数据库数据变化日志”,找出从a节点的数据版本信息到b节点的数据版本信息具体发生的数据变化,并根据这些数据变化在b节点中精确的查询出这部分变化的数据,这部分变化的数据即为步骤52中b节点中需要同步给a节点的数据。

具体的,在步骤53中,b节点同步给a节点的数据摘要和更新后的a节点进行数据版本信息对比,根据“两者的数据版本信息之差”结合“数据库数据变化日志”,找出从b的数据版本信息到a的数据版本信息具体发生的数据变化,并根据这些数据变化在a中精确的查询出这部分变化的数据,这部分变化的数据即为步骤53中a节点中需要同步给b节点的数据。

具体的,所述数据变化包括数据更新、数据新增和数据删除。例如一个表删除了哪几条,更新了哪几条,新增了哪几条。

在本发明中,节点会按照一定时间频率或者主动向其他节点发起数据同步请求,判断数据是否需要同步,如果不需要数据同步,则数据同步请求完成;如果需要数据同步,则比较两个节点的数据版本信息并且合并两个节点的数据和数据摘要,并判断两个节点的数据是否是最新的,如果数据不是最新的,则返回节点向其他节点发起数据同步请求,如果数据已经是最新的,则完成数据同步请求;本发明中,多个“两两节点”之间经过多次数据同步,所有节点之间的数据完成一次同步,该过程称为集群数据一致性收敛过程,本发明中也简称“收敛过程”,在一次收敛过程中发生多次“两两节点”的数据同步,所以收敛过程就能简化为两个节点之间的数据同步,一次完整的收敛流程如图2所示。经过该收敛过程后,图1中,例如d节点数据会经过a节点、c节点、e节点与g节点实现同步合并,这样在d节点上拥有g节点最新数据,g节点上也拥有d节点最新数据,从而解决了网络复杂离散节点之间的数据同步问题。

本发明的方法,新加入一个节点或删除一个节点能够做到完全无感,节点只需能和其中任意一个节点直连就能加入集群网络,满足在复杂网络条件下组件网络,能够方便的从任意节点查看所有节点数据,方便数据集中展示等场景;本发明在数据同步过程中各个节点的数据更新不会受收敛过程影响可以随时自我更新变化;各个节点会将两个数据版本信息之间变化的数据精确找出来进行传递,而不是整个数据进行同步,极大的减少了数据冗余,加快了收敛过程;每一个节点都是主节点,解决了多个主节点之间的复杂同步数据问题。

以上所述,仅为本发明的优选实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的技术人员在本发明所揭露的技术范围内,可不经过创造性劳动想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1