一种数据的同步方法和装置与流程

文档序号:11180713阅读:810来源:国知局
一种数据的同步方法和装置与流程

本发明涉及网络技术领域,尤其涉及一种数据的同步方法和装置。



背景技术:

在现有技术中,为了实现服务器集群中数据的一致性,提出了以下两种解决方案:

如图1所示的方案一:在服务器集群中增加一个配置中心,当其中一个服务器(发布者)获取到数据并要将所述数据同步到其他服务器(订阅者)中时,所述服务器将所述数据发送到所述配置中心,有所述配置中心向其他服务器发送所述数据,进而使其他服务器根据所述数据进行同步。

如图2所示的方案二:所述服务器集群通过选举算法选举出一个发布者master,其他服务器为订阅者,选择成功后,当需要让所述服务器集群同步一个数据时,由所述master获取所述数据,再由所述master向订阅者发送需要同步的数据,以使所述订阅者进行数据同步,在订阅者同步成功后向master返回同步成功的消息,当所述master宕机后,所述服务器集群需要重进选举master。

在实现本发明的过程中,发明人发现现有技术至少存在如下问题:

方案一在同步数据时依赖第三方设备,部署麻烦,可靠性不高,而方案二中如果集群中的服务器数量较大时,订阅者返回的同步成功的消息数量也就会越多,进而使得数据同步时的成本大大增加,并且在master宕机后,重新选举时也会增加数据同步时的成本。



技术实现要素:

本发明提供一种数据的同步方法和装置,用于解决现有技术中依赖第三方设备,部署麻烦,可靠性不高的问题;

本发明提供一种数据的同步方法和装置,还用于解决现有技术中数据同步成本较高的问题。

本发明提供一种数据的同步方法,所述方法应用于包括第一终端设备和第二终端设备的系统中,其中,所述第一终端设备和所述第二终端设备的时间是同步的,所述第二终端设备为多个,所述方法包括:

当第一终端设备接收到数据时,所述第一终端设备将接收到所述数据的时间戳添加到所述数据中;

所述第一终端设备将添加有所述时间戳的所述数据发送给所述第二终端设备,并保存添加有所述时间戳的所述数据;

所述第一终端设备接收所述第二终端设备根据添加有所述时间戳的所述数据反馈的数据,以使所述第一终端设备根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步。

所述第一终端设备和所述第二终端中相同的数据具有相同的数据标识;

所述反馈的数据是所述第二终端设备根据具有相同所述数据标识的数据确定的时间戳最大的数据。

所述第一终端设备根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步,具体为:

所述第一终端设备判断具有相同所述数据标识的数据的数目之和是否大于阈值;

当大于所述阈值时,所述第一终端设备确定出具有相同所述数据标识的数据中最大时间戳对应的数据;

所述第一终端设备根据最大时间戳对应的数据进行数据同步。

所述第一终端设备为保存添加有所述时间戳的所述数据设定生命周期,当所述第一终端设备在所述生命周期内判断出具有相同所述数据标识的数据的数目之和不大于所述阈值时,所述第一终端设备删除具有相同所述数据标识的数据。

具有相同所述数据标识的数据中还携带有同步类型;

所述第一终端设备根据最大时间戳对应的数据进行数据同步,具体为:

当最大时间戳对应的数据中的所述同步类型是同步数据时,所述第一终端设备根据最大时间戳对应的数据进行数据同步;

当最大时间戳对应的数据中的所述同步类型是同步删除数据时,所述第一终端删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最 大时间戳对应的数据进行数据同步。

一种数据同步装置,所述数据同步装置位于第一终端设备,应用于包括所述第一终端设备和多个第二终端设备的系统中,其中,所述第一终端设备和所述第二终端设备的时间是同步的,所述数据同步装置包括:

添加模块,当所述第一终端设备接收到数据时,用于将接收到所述数据的时间戳添加到所述数据中;

发送模块,用于将添加有所述时间戳的所述数据发送给所述第二终端设备,并保存添加有所述时间戳的所述数据;

接收模块,用于接收所述第二终端设备根据添加有所述时间戳的所述数据反馈的数据,以使所述第一终端设备中的同步模块根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步。

所述第一终端设备和所述第二终端中相同的数据具有相同的数据标识;

所述反馈的数据是所述第二终端设备根据具有相同所述数据标识的数据确定的时间戳最大的数据。

所述同步模块具体用于:

判断具有相同所述数据标识的数据的数目之和是否大于阈值;

当大于所述阈值时,确定出具有相同所述数据标识的数据中最大时间戳对应的数据;

根据最大时间戳对应的数据进行数据同步。

所述添加模块还用于为保存添加有所述时间戳的所述数据设定生命周期;

所述装置还包括:

删除模块,当所述同步模块在所述生命周期内判断出具有相同所述数据标识的数据的数目之和不大于所述阈值时,用于删除具有相同所述数据标识的数据。

具有相同所述数据标识的数据中还携带有同步类型;

所述同步模块还具体用于:

当最大时间戳对应的数据中的所述同步类型是同步数据时,根据最大时间戳对应的数据进行数据同步;

当最大时间戳对应的数据中的所述同步类型是同步删除数据时,删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最大时间戳对应 的数据进行数据同步。

一种数据同步方法,所述方法应用于包括第一终端设备和第二终端设备的系统中,其中,所述第一终端设备和所述第二终端设备的时间是同步的,所述第二终端设备为多个,所述方法包括:

所述第二终端设备接收所述第一终端设备发送的添加有时间戳的数据和其他第二终端设备发送的根据所述添加有时间戳的数据反馈的数据;

所述第二终端设备根据添加有时间戳的数据和所述反馈的数据进行数据同步;

其中,所述时间戳是所述第一终端设备根据接收到所述数据的时间确定的。

所述第一终端设备和所述第二终端中相同的数据具有相同的数据标识;

所述反馈的数据是其他所述第二终端设备根据具有相同所述数据标识的数据确定的时间戳最大的数据。

所述第二终端设备根据添加有时间戳的数据和所述反馈的数据进行数据同步,具体为:

所述第二终端设备判断具有相同所述数据标识的数据的数目之和是否大于阈值;

当大于所述阈值时,所述第二终端设备确定出具有相同所述数据标识的数据中最大时间戳对应的数据;

所述第二终端设备根据最大时间戳对应的数据进行数据同步。

所述添加有时间戳的数据中携带有所述第一终端设备为所述数据设定生命周期,当所述第二终端设备在所述生命周期内判断出具有相同所述数据标识的数据的数目之和不大于所述阈值时,所述第二终端设备删除具有相同所述数据标识的数据。

具有相同所述数据标识的数据中还携带有同步类型;

所述第二终端设备根据最大时间戳对应的数据进行数据同步,具体为:

当最大时间戳对应的数据中的所述同步类型是同步数据时,所述第二终端设备根据最大时间戳对应的数据进行数据同步;

当最大时间戳对应的数据中的所述同步类型是同步删除数据时,所述第二终端删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最 大时间戳对应的数据进行数据同步。

在所述第二终端设备接收到所述第一终端设备发送的添加有时间戳的数据后,所述第二终端设备将与所述添加有时间戳的数据的所述数据标识相同的数据中时间戳最大的数据发送给所述第一终端设备,以使所述第一终端设备根据所述时间戳最大的数据进行数据同步。

一种数据同步装置,所述数据同步装置位于第二终端设备,应用于包括第一终端设备和多个所述第二终端设备的系统中,其中,所述第一终端设备和所述第二终端设备的时间是同步的,所述数据同步装置包括:

接收模块,用于接收所述第一终端设备发送的添加有时间戳的数据和其他第二终端设备发送的根据所述添加有时间戳的数据反馈的数据;

同步模块,用于根据添加有时间戳的数据和所述反馈的数据进行数据同步;

其中,所述时间戳是所述第一终端设备根据接收到所述数据的时间确定的。

所述第一终端设备和所述第二终端中相同的数据具有相同的数据标识;

所述反馈的数据是其他所述第二终端设备根据具有相同所述数据标识的数据确定的时间戳最大的数据。

所述同步模块具体用于:

判断具有相同所述数据标识的数据的数目之和是否大于阈值;

当大于所述阈值时,确定出具有相同所述数据标识的数据中最大时间戳对应的数据;

根据最大时间戳对应的数据进行数据同步。

所述添加有时间戳的数据中携带有所述第一终端设备为所述数据设定生命周期;

所述装置还包括:

删除模块,当所述同步模块在所述生命周期内判断出具有相同所述数据标识的数据的数目之和不大于所述阈值时,用于删除具有相同所述数据标识的数据。

具有相同所述数据标识的数据中还携带有同步类型;

所述同步模块还具体用于:

当最大时间戳对应的数据中的所述同步类型是同步数据时,根据最大时间戳对应的数据进行数据同步;

当最大时间戳对应的数据中的所述同步类型是同步删除数据时,删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最大时间戳对应的数据进行数据同步。

所述装置还包括:

发送模块,在所述接收模块接收到所述第一终端设备发送的添加有时间戳的数据后,用于将与所述添加有时间戳的数据的所述数据标识相同的数据中时间戳最大的数据发送给所述第一终端设备,以使所述第一终端设备根据所述时间戳最大的数据进行数据同步。

本发明中当第一终端设备接收到数据时,在所述数据中添加时间戳并保存,然后将添加有时间戳的数据发送给第二终端设备,所述第一终端设备接收所述第二终端设备根据添加有所述时间戳的所述数据反馈的数据,并根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步,本发明在不借助第三方设备和选举发送数据设备的情况下实现了终端设备集群的数据同步,降低了数据同步时的成本,并且集群中的终端设备是根据自身得到的数据来进行同步,保证了数据同步时的可靠性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中的一种依靠第三方设备进行数据同步的流程示意图;

图2为现有技术中的一种通过选举发布者进行数据同步的流程示意图;

图3为本发明实施例中的一种数据的同步方法流程图之一;

图4为本发明实施例中的一种数据的同步方法流程图之二;

图5为本发明实施例中的一种数据发布时的同步方法流程示意图;

图6为本发明实施例中的一种数据同步装置结构示意图之一;

图7为本发明实施例中的一种数据同步装置结构示意图之二。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在现有技术中,由于依靠第三方设备来实现同步数据的方案存在部署麻烦,可靠性不高的缺陷,依靠选举数据发布者的方案存在增加数据同步成本的缺陷,因此本申请提出了一种数据的同步方法,具体如图3所示,所述方法应用于包括第一终端设备和第二终端设备的系统中,其中,所述第一终端设备和所述第二终端设备的时间是同步的,所述第二终端设备为多个,所述方法包括以下步骤:

步骤301,当第一终端设备接收到数据时,所述第一终端设备将接收到所述数据的时间戳添加到所述数据中。

具体的,所述第一终端设备和所述第二终端的时间是同步的是为了实现集群中的终端设备时间上的统一性,保证在第一终端设备为数据添加时间戳时具有相同的时间基础,进而保证了在集群中的终端设备能够正确的确定出相同的且时间戳最大的数据。其中,所述第一终端设备为接收数据的设备,所述第一终端设备应不是集群中的一个固定设备,是根据集群中接收数据的设备确定的,所述数据是集群之外的设备发送的。例如:集群中有3个终端设备,分别为设备1、设备2和设备3,当设备1接收到客户端发送的数据时,此时设备1为第一终端设备,如果是设备2接收到客户端发送的数据时,此时设备2为第一终端设备。同理,第二终端设备是集群中除第一终端设备之外的其他终端设备,所述第二终端设备是集群中接收所述第一终端设备发送的数据的设备,例如:集群中有3个终端设备,分别为设备1、设备2和设备3,当设备1为第一终端设备时,设备2和设备3为第二终端设备,当设备2为第一终端设备时,设备1和设备3为第二终端设备。

步骤302,所述第一终端设备将添加有所述时间戳的所述数据发送给所述第二终端设备,并保存添加有所述时间戳的所述数据。

具体的,所述第一终端设备保存添加有所述时间戳的所述数据是为了在后续进行数据同步。

步骤303,所述第一终端设备接收所述第二终端设备根据添加有所述时间戳的所述数据反馈的数据,以使所述第一终端设备根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步。

其中,所述第一终端设备和所述第二终端中相同的数据具有相同的数据标识;

所述反馈的数据是所述第二终端设备根据具有相同所述数据标识的数据确定的时间戳最大的数据。

具体的,在集群中的终端设备接收到的集群之外的设备发送的数据中携带有数据标识,并且集群之外的设备发送的同一数据的数据标识是相同的,其中,同一数据可能在不同时间发送,集群是根据接收到的数据进行同步的,因此集群中的设备中可能存在与当前接收到的数据的数据标识相同的数据,所述存在数据标识相同的数据中同样存在集群中的设备接收到所述数据的时间戳。

所述第二终端设备中可能存在与所述数据相同的数据标识,因此在所述第二终端设备接收到添加有所述时间戳的所述数据时,所述第二终端设备需要根据添加所述时间戳的所述数据的数据标识确定出所述第二终端中存在相同数据标识的数据,然后,所述第二终端设备根据具有相同数据标识的数据确定出时间戳最大的数据,此时确定出的数据为集群最新接收到的数据,需要以此为数据同步的依据,并将确定出的时间戳最大的数据作为反馈数据反馈给所述第一终端设备,在所述第一终端设备接收到集群中的第二终端设备反馈的时间戳最大的数据后,所述第一终端设备就可以根据反馈的数据和自身保存的添加有所述时间戳的所述数据确定出最新的数据,以使所述第一终端设备根据所述最新的数据进行数据同步。

所述第一终端设备根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步,具体为:

所述第一终端设备判断具有相同所述数据标识的数据的数目之和是否大于阈值;

当大于所述阈值时,所述第一终端设备确定出具有相同所述数据标识的 数据中最大时间戳对应的数据;

所述第一终端设备根据最大时间戳对应的数据进行数据同步。

具体的,所述阈值根据实际情况确定,例如:所述阈值为集群中的终端设备数目的一半,当所述第一终端设备确定出的具有相同所述数据标识的数据的数目表示集群中就有多少个终端设备接收到了所述数据,当所述数目超过阈值时表示集群达到了数据同步的要求,此时所述第一终端设备就可以根据自身中的最新的所述数据进行数据同步。

所述第一终端设备为保存添加有所述时间戳的所述数据设定生命周期,当所述第一终端设备在所述生命周期内判断出具有相同所述数据标识的数据的数目之和不大于所述阈值时,所述第一终端设备删除具有相同所述数据标识的数据。

具体的,数据同步时必须在一定时间内完成数据同步,否则就失去了数据同步的意义,因此,在所述第一终端设备在为所述数据添加时间戳时还要为所述数据设定生命周期,所述生命周期的长短根据实际情况确定,当所述第一终端设备在所述生命周期内没有收到超过所述阈值的具有相同数据标识的数据时表示此次数据同步失败,为了保证所述第一终端设备的资源不被浪费,因此所述第一终端设备删除具有相同所述数据标识的数据。

具有相同所述数据标识的数据中还携带有同步类型;

所述第一终端设备根据最大时间戳对应的数据进行数据同步,具体为:

当最大时间戳对应的数据中的所述同步类型是同步数据时,所述第一终端设备根据最大时间戳对应的数据进行数据同步;

当最大时间戳对应的数据中的所述同步类型是同步删除数据时,所述第一终端删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最大时间戳对应的数据进行数据同步。

具体的,在数据同步时是为了让集群中的终端设备的数据统一,而所述第一终端设备接收到的数据进行同步时,有时是为了增加数据,而有时是为了删除数据,如果所述第一终端设备确定出的最大时间戳对应的数据的同步类型是同步数据时,表示是为了增加数据,所述第一终端设备根据最大时间戳对应的数据进行数据同步;如果所述第一终端设备确定出的最大时间戳对应的数据的同步类型是删除数据时,表示是为了撤销所述数据,所述第一终 端设备根据最大时间戳对应的数据进行同步时删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最大时间戳对应的数据进行数据同步,其中在删除所述数据时,所述第一终端设备可以只删除所述数据本身,保留所述数据对应的时间戳、同步类型和数据标识等信息,以供后续查询。

当所述第一终端设备中接收集群之外的设备发送的至少一个具有相同的数据标识的数据时。所述第一终端设备根据接收数据的先后顺序进行数据同步。

本发明中当第一终端设备接收到数据时,在所述数据中添加时间戳并保存,然后将添加有时间戳的数据发送给第二终端设备,所述第一终端设备接收所述第二终端设备根据添加有所述时间戳的所述数据反馈的数据,并根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步,本发明在不借助第三方设备和选举发送数据设备的情况下实现了终端设备集群的数据同步,降低了数据同步时的成本,并且集群中的终端设备是根据自身得到的数据来进行同步,保证了数据同步时的可靠性。

本发明还提供了一种数据的同步方法,具体如图4所示,所述方法应用于包括第一终端设备和第二终端设备的系统中,其中,所述第一终端设备和所述第二终端设备的时间是同步的,所述第二终端设备为多个,所述方法包括以下步骤:

步骤401,所述第二终端设备接收所述第一终端设备发送的添加有时间戳的数据和其他第二终端设备发送的根据所述添加有时间戳的数据反馈的数据。

其中,所述时间戳是所述第一终端设备根据接收到所述数据的时间确定的。

所述第一终端设备和所述第二终端中相同的数据具有相同的数据标识;

所述反馈的数据是其他所述第二终端设备根据具有相同所述数据标识的数据确定的时间戳最大的数据。

例如:终端设备集群中包括:设备1、设备2和设备3,其中所述设备1为第一终端设备,设备2和设备3为第二终端设备,在所述设备1接收到数据时,所述设备1在将添加有时间戳的数据发送给所述设备2时还发送给了设备3,此时,所述设备2为所述第二终端设备,所述设备3为其他所述第 二终端设备,由于设备3中可能存在具有相同数据标识的所述数据,为了保证设备2在进行数据同步时以使最新的数据进行更新的,所述设备3还要将确定出其自身中具有相同所述数据标识的数据的时间戳最大的数据发送给所述设备2,以使所述设备2可以根据最新的数据进行数据同步。同理,在所述设备2接收到设备发送的数据时,所述设备2也要确定出自身中具有相同数据标识的数据的时间戳最大的数据发送给所述设备3,以使所述设备3也可以根据最新的数据进行数据同步。

步骤402,所述第二终端设备根据添加有时间戳的数据和所述反馈的数据进行数据同步。

具体的,在所述第二终端设备在接收到添加有时间戳的数据和其他第二终端设备反馈的数据后,此时所述第二终端设备中包含了集群中其他所有终端设备反馈的具有所述相同数据标识的数据,此时如果所述第二终端设备中还存在其他具有相同数据标识的数据,所述第二终端设备在添加有时间戳的数据、其他第二终端设备反馈的数据和所述其他具有相同数据标识的数据中确定出时间戳最大的数据,以使所述第二终端设备根据所述时间戳最大的数据进行数据同步。同理,其他所述第二终端设备也根据上述过程进行数据同步。

所述第二终端设备根据添加有时间戳的数据和所述反馈的数据进行数据同步,具体为:

所述第二终端设备判断具有相同所述数据标识的数据的数目之和是否大于阈值;

当大于所述阈值时,所述第二终端设备确定出具有相同所述数据标识的数据中最大时间戳对应的数据;

所述第二终端设备根据最大时间戳对应的数据进行数据同步。

具体的,当所述第二终端设备确定出的具有相同所述数据标识的数据的数目表示集群中就有多少个终端设备接收到了所述数据,当所述数目超过阈值时表示集群达到了数据同步的要求,此时所述第二终端设备就可以根据自身中的最新的所述数据进行数据同步。

所述添加有时间戳的数据中携带有所述第一终端设备为所述数据设定生命周期,当所述第二终端设备在所述生命周期内判断出具有相同所述数据标 识的数据的数目之和不大于所述阈值时,所述第二终端设备删除具有相同所述数据标识的数据。

具体的,数据同步时必须在一定时间内完成数据同步,否则就失去了数据同步的意义,因此,在所述第一终端设备在为所述数据添加时间戳时还要为所述数据设定生命周期,所述生命周期的长短根据实际情况确定,当所述第二终端设备在所述生命周期内没有收到超过所述阈值的具有相同数据标识的数据时表示此次数据同步失败,为了保证所述第二终端设备的资源不被浪费,因此所述第一终端设备删除具有相同所述数据标识的数据。

具有相同所述数据标识的数据中还携带有同步类型;

所述第二终端设备根据最大时间戳对应的数据进行数据同步,具体为:

当最大时间戳对应的数据中的所述同步类型是同步数据时,所述第二终端设备根据最大时间戳对应的数据进行数据同步;

当最大时间戳对应的数据中的所述同步类型是同步删除数据时,所述第二终端删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最大时间戳对应的数据进行数据同步。

具体的,在数据同步时是为了让集群中的终端设备的数据统一,而所述第二终端设备在进行数据同步时,有时是为了增加数据,而有时是为了删除数据,如果所述第二终端设备确定出的最大时间戳对应的数据的同步类型是同步数据时,表示是为了增加数据,所述第二终端设备根据最大时间戳对应的数据进行数据同步;如果所述第二终端设备确定出的最大时间戳对应的数据的同步类型是删除数据时,表示是为了撤销所述数据,所述第二终端设备根据最大时间戳对应的数据进行同步时删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最大时间戳对应的数据进行数据同步,,其中在删除所述数据时,所述第二终端设备可以只删除所述数据本身,保留所述数据对应的时间戳、同步类型和数据标识等信息,以供后续查询。

在所述第二终端设备接收到所述第一终端设备发送的添加有时间戳的数据后,所述第二终端设备将与所述添加有时间戳的数据的所述数据标识相同的数据中时间戳最大的数据发送给所述第一终端设备,以使所述第一终端设备根据所述时间戳最大的数据进行数据同步。

本发明中当第一终端设备接收到数据时,在所述数据中添加时间戳并保 存,然后将添加有时间戳的数据发送给第二终端设备,所述第一终端设备接收所述第二终端设备根据添加有所述时间戳的所述数据反馈的数据,并根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步,本发明在不借助第三方设备和选举发送数据设备的情况下实现了终端设备集群的数据同步,降低了数据同步时的成本,并且集群中的终端设备是根据自身得到的数据来进行同步,保证了数据同步时的可靠性。

为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本申请的技术方案进行说明,具体的,系统中包括3台服务器:服务器a、服务器b、服务器c,且所述3台服务器的时间是同步的,其中生成同步数据的终端为客户端,并且定义所述同步数据的结构:d={k,v,s,t},k表示数据标识,v表示数据值,s表示数据的状态(数据状态有:sync表示正在同步,updated表示同步完成,zombie表示删除数据值三种状态,t表示服务器接收所述数据的时间戳,时间戳以毫秒为单位,并且,每台服务器的存储分为三部分:暂存区:用于存放同步数据,此时的同步数据的状态为sync,生命周期为i;数据区:里面存在已经生效的数据,此时的数据状态为updated,可以被客户端读取使用;待删区:用于存放删除通知,此时数据的状态为zombie,生命周期为i,规定阈值为1.5。具体过程如图5所示。

客户端发布了一个表示为k的数据,并选择发送服务器a中,如果此时所述数据中数据状态s和时间戳t为空,所述服务器a在接收到所述数据后,根据接收所述数据的时间在t中添加时间戳,并将s设置为sync,并向包括自己在内服务器集群发送所述数据,当服务器b收到所述数据后,在暂存区中查找以k为数据标识的其他数据,如果所述其他数据中的时间戳小于所述数据,那么所述服务器b忽略所述数据,如果大于,所述服务器b用所述数据替换掉所述其他数据,并将所述数据发送给服务器a和服务器c,同理服务器c同样需要完成上述过程。此时服务器b确定暂存区中数据标识为k的数据的个数为2,超过阈值,所述服务器b选取出暂存区中以k为标识时间戳最大的数据,并将所述时间戳最大的数据移动到数据区中,并将s设置为updated,如果数据区中存在以k为数据标识的数据,则用所述时间戳最大的数据覆盖所述数据区中以k为数据标识的数据。如果在所述数据的生命周期内服务器b确定数据标识为k的数据小于所述阈值,则不执行移动操作,并 删除服务器b中以k为数据标识的所有数据,同理服务器c同样需要完成上述过程。

在完成上述过程后,服务器a中存在至少3条以k为数据标识的数据,所述服务器a确定出时间戳最大的数据后,将所述时间戳最大的数据移动到数据区,并将s设置为updated,如果数据区中存在以k为数据标识的数据,则用所述时间戳最大的数据覆盖所述数据区中以k为数据标识的数据。如果在所述数据的生命周期内服务器a确定数据标识为k的数据小于所述阈值,则不执行移动操作,并删除服务器a中以k为数据标识的所有数据。

由于服务器b和服务器c是根据服务器a发送的数据进行同步和反馈的,因此当其中一个服务器中确定出数据标识为k的数据的个数小于所述阈值时,其他服务器中以k为数据标识的数据的个数也小于所述阈值,因此,当一个服务器删除以k为数据标识的数据时,其他服务器也在删除以k为数据标识的数据。并且服务器a在删除以k为数据标识的数据后,还要向客户端反馈同步失败的消息。

客户端发布了一个表示为k的数据,并选择发送服务器a中,如果此时所述数据中数据状态s为zombie,时间戳t为空时,所述服务器a在接收到所述数据后,根据接收所述数据的时间在t中添加时间戳,然后所述服务器a向包括自己在内服务器集群发送所述数据,当服务器b收到所述数据后,在暂存区中查找以k为数据标识的其他数据,如果所述其他数据中的时间戳小于所述数据,那么所述服务器b忽略所述数据,如果大于,所述服务器b用所述数据替换掉所述其他数据,并将所述数据发送给服务器a和服务器c,同样需要完成上述过程。此时服务器b确定暂存区中数据标识为k的数据的个数为2,超过阈值,所述服务器b选取出暂存区中以k为标识时间戳最大的数据,并将所述时间戳最大的数据移动到待删区中,并将所述数据中s对应的数据值删除,如果待删区中存在以k为数据标识的数据,则用所述时间戳最大的数据覆盖所述待删区中以k为数据标识的数据。如果在所述数据的生命周期内服务器b确定数据标识为k的数据小于所述阈值,则不执行移动操作,并删除服务器b中以k为数据标识的所有数据,同理服务器c同样需要完成上述过程。

在完成上述过程后,服务器a中存在至少3条以k为数据标识的数据, 所述服务器a确定出时间戳最大的数据后,将所述时间戳最大的数据移动到待删区,如果待删区中存在以k为数据标识的数据,则用所述时间戳最大的数据覆盖所述数据区中以k为数据标识的数据。如果在所述数据的生命周期内服务器a确定数据标识为k的数据小于所述阈值,则不执行移动操作,并删除服务器a中以k为数据标识的所有数据。

如果服务器a接收到客户端发送的多条以k为数据标识的数据时,所述服务器按照接收数据的顺序同步数据。

基于与上述方法同样的申请构思,本发明提出了一种数据同步装置,如图6所示,所述数据同步装置位于第一终端设备,应用于包括所述第一终端设备和多个第二终端设备的系统中,其中,所述第一终端设备和所述第二终端设备的时间是同步的,所述数据同步装置包括:

添加模块61,当所述第一终端设备接收到数据时,用于将接收到所述数据的时间戳添加到所述数据中;

发送模块62,用于将添加有所述时间戳的所述数据发送给所述第二终端设备,并保存添加有所述时间戳的所述数据;

接收模块63,用于接收所述第二终端设备根据添加有所述时间戳的所述数据反馈的数据,以使所述第一终端设备中的同步模块根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步。

所述第一终端设备和所述第二终端中相同的数据具有相同的数据标识;

所述反馈的数据是所述第二终端设备根据具有相同所述数据标识的数据确定的时间戳最大的数据。

所述同步模块具体用于:

判断具有相同所述数据标识的数据的数目之和是否大于阈值;

当大于所述阈值时,确定出具有相同所述数据标识的数据中最大时间戳对应的数据;

根据最大时间戳对应的数据进行数据同步。

所述添加模块还用于为保存添加有所述时间戳的所述数据设定生命周期;

所述装置还包括:

删除模块,当所述同步模块在所述生命周期内判断出具有相同所述数据标识的数据的数目之和不大于所述阈值时,用于删除具有相同所述数据标识 的数据。

具有相同所述数据标识的数据中还携带有同步类型;

所述同步模块还具体用于:

当最大时间戳对应的数据中的所述同步类型是同步数据时,根据最大时间戳对应的数据进行数据同步;

当最大时间戳对应的数据中的所述同步类型是同步删除数据时,删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最大时间戳对应的数据进行数据同步。

本发明中当第一终端设备接收到数据时,在所述数据中添加时间戳并保存,然后将添加有时间戳的数据发送给第二终端设备,所述第一终端设备接收所述第二终端设备根据添加有所述时间戳的所述数据反馈的数据,并根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步,本发明在不借助第三方设备和选举发送数据设备的情况下实现了终端设备集群的数据同步,降低了数据同步时的成本,并且集群中的终端设备是根据自身得到的数据来进行同步,保证了数据同步时的可靠性。

基于与上述方法同样的申请构思,本发明还提出了一种数据同步装置,具体如图7所示,所述数据同步装置位于第二终端设备,应用于包括第一终端设备和多个所述第二终端设备的系统中,其中,所述第一终端设备和所述第二终端设备的时间是同步的,所述数据同步装置包括:

接收模块71,用于接收所述第一终端设备发送的添加有时间戳的数据和其他第二终端设备发送的根据所述添加有时间戳的数据反馈的数据;

同步模块72,用于根据添加有时间戳的数据和所述反馈的数据进行数据同步;

其中,所述时间戳是所述第一终端设备根据接收到所述数据的时间确定的。

所述第一终端设备和所述第二终端中相同的数据具有相同的数据标识;

所述反馈的数据是其他所述第二终端设备根据具有相同所述数据标识的数据确定的时间戳最大的数据。

所述同步模块具体用于:

判断具有相同所述数据标识的数据的数目之和是否大于阈值;

当大于所述阈值时,确定出具有相同所述数据标识的数据中最大时间戳对应的数据;

根据最大时间戳对应的数据进行数据同步。

所述添加有时间戳的数据中携带有所述第一终端设备为所述数据设定生命周期;

所述装置还包括:

删除模块,当所述同步模块在所述生命周期内判断出具有相同所述数据标识的数据的数目之和不大于所述阈值时,用于删除具有相同所述数据标识的数据。

具有相同所述数据标识的数据中还携带有同步类型;

所述同步模块还具体用于:

当最大时间戳对应的数据中的所述同步类型是同步数据时,根据最大时间戳对应的数据进行数据同步;

当最大时间戳对应的数据中的所述同步类型是同步删除数据时,删除最大时间戳对应的数据中的数据值,并根据删除所述数据值的最大时间戳对应的数据进行数据同步。

所述第二终端设备还包括:

发送模块,在所述接收模块接收到所述第一终端设备发送的添加有时间戳的数据后,用于将与所述添加有时间戳的数据的所述数据标识相同的数据中时间戳最大的数据发送给所述第一终端设备,以使所述第一终端设备根据所述时间戳最大的数据进行数据同步。

本发明中当第一终端设备接收到数据时,在所述数据中添加时间戳并保存,然后将添加有时间戳的数据发送给第二终端设备,所述第一终端设备接收所述第二终端设备根据添加有所述时间戳的所述数据反馈的数据,并根据自身保存的添加有所述时间戳的所述数据和所述反馈的数据进行数据同步,本发明在不借助第三方设备和选举发送数据设备的情况下实现了终端设备集群的数据同步,降低了数据同步时的成本,并且集群中的终端设备是根据自身得到的数据来进行同步,保证了数据同步时的可靠性。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可 读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到至少两个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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