掌桥专利:专业的专利平台
掌桥专利
首页

一种数据同步系统、方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 09:29:07


一种数据同步系统、方法、装置、电子设备及存储介质

技术领域

本发明涉及计算机技术领域,特别是涉及一种数据同步系统、方法、装置、电子设备及存储介质。

背景技术

在网站运营过程中,需要各个前端设备将数据发送至后端设备进行聚合,用户可以在前端设备中对数据进行更新,前端设备对数据进行更新之后,需要将更新后的数据同步至后端设备,以保持前端设备和后端设备中数据的一致性。

现有技术中,前端设备与后端设备进行数据同步的方式为:首先,前端设备根据接收到的数据更新请求,对本地存储的第一数据执行更新操作,生成携带第一时间戳的数据更新消息,并将数据更新消息发送至后端设备,其中,第一时间戳指示前端设备对第一数据执行更新操作的时间;然后,后端设备判断第一时间戳所指示的时间是否在第二时间戳所指示的时间之后,其中,第二时间戳指示后端设备本地存储的与第一数据对应的第二数据最近发生更新的时间;若是,表明第一数据的更新发生在第二数据版本之后,则后端设备根据数据更新消息对第二数据执行更新操作。

但是,通常第一时间戳和第二时间戳只精确到秒级别,如果第一数据在同一秒内多次发生更新,就会生成多条携带相同第一时间戳的数据更新消息,后端设备无法判断多条数据更新消息的先后顺序,可能发生先处理在后发送的数据更新消息,再处理在先发送的数据更新消息的情况,导致数据更新被覆盖,从而使得前端设备和后端设备中的数据同步失败。

发明内容

本发明实施例的目的在于提供一种数据同步系统、方法、装置、电子设备及存储介质,以减少数据更新被覆盖的可能性,实现前端设备和后端设备中的数据同步。具体技术方案如下:

在本发明实施的第一方面,首先提供了一种数据同步系统,所述系统包括:后端设备及至少一个前端设备,其中,

所述前端设备,用于在对本地存储的第一数据执行更新操作后,根据预设版本号更新规则更新所述第一数据的版本号,得到目标版本号;生成携带所述目标版本号的数据更新消息,其中,所述数据更新消息用于指示所述第一数据及所述更新操作;将所述数据更新消息发送至所述后端设备;

所述后端设备,用于接收所述数据更新消息;根据所述数据更新消息,确定本地存储的与所述第一数据对应的第二数据的版本号;根据所述预设版本号更新规则、所述第二数据的版本号及所述目标版本号,判断所述第二数据的版本是否早于所述第一数据;若是,根据所述数据更新消息对所述第二数据执行所述更新操作,并将所述第二数据的版本号更新为所述目标版本号。

可选的,所述第一数据的版本号为数字;

所述前端设备,具体用于将所述第一数据的版本号与预设值相加,得到目标版本号;

所述后端设备,具体用于判断所述第二数据的版本号是否小于所述目标版本号;若小于,则判定所述第二数据的版本早于所述第一数据。

可选的,所述第一数据存储在数据表中,所述数据更新消息还用于指示所述数据表;

所述前端设备,具体用于在对所述第一数据执行更新操作后,查询所述数据表的版本号,作为所述第一数据的版本号;

所述后端设备,具体用于根据所述数据更新消息及预先存储的所述数据表与版本号的对应关系,将本地存储的所述数据表的版本号作为所述第二数据的版本号;在判定所述第二数据的版本早于所述第一数据的情况下,将本地存储的所述数据表的版本号更新为所述目标版本号。

可选的,所述数据表与版本号的对应关系采用json格式存储在所述后端设备中。

可选的,所述前端设备,具体用于通过消息中间件,将所述数据更新消息发送至所述后端设备。

可选的,所述后端设备,还用于在判定所述第二数据的版本不早于所述第一数据的情况下,丢弃所述数据更新消息。

在本发明实施的第二方面,还提供了一种数据同步方法,应用于前端设备,所述方法包括:

在对本地存储的第一数据执行更新操作后,根据预设版本号更新规则更新所述第一数据的版本号,得到目标版本号;

生成携带所述目标版本号的数据更新消息,其中,所述数据更新消息用于指示所述第一数据及所述更新操作;

将所述数据更新消息发送至后端设备,以使所述后端设备根据所述数据更新消息,确定本地存储的与所述第一数据对应的第二数据的版本号,并在根据所述预设版本号更新规则、所述第二数据的版本号及所述目标版本号,判定所述第二数据的版本早于所述第一数据的情况下,根据所述数据更新消息对所述第二数据执行所述更新操作,并将所述第二数据的版本号更新为所述目标版本号。

可选的,所述第一数据的版本号为数字,所述根据预设版本号更新规则更新所述第一数据的版本号,得到目标版本号,包括:

将所述第一数据的版本号与预设值相加,得到目标版本号。

可选的,所述第一数据存储在数据表中,所述数据更新消息还用于指示所述数据表,在所述根据预设版本号更新规则更新所述第二数据的版本号,得到目标版本号之前,所述方法还包括:

查询所述第一数据所属的数据表的版本号,作为所述第一数据的版本号。

可选的,所述将所述数据更新消息发送至后端设备,包括:

通过消息中间件,将所述数据更新消息发送至所述后端设备。

在本发明实施的第三方面,还提供了一种数据同步方法,应用于后端设备,所述方法包括:

接收前端设备发送的携带目标版本号的数据更新消息,其中,所述数据更新消息用于指示所述前端设备本地存储的第一数据及对所述第一数据执行的更新操作,所述目标版本号为所述前端设备在对所述第一数据执行所述更新操作后,根据预设版本号更新规则对所述第一数据的版本号进行更新得到的;

根据所述数据更新消息,确定本地存储的与所述第一数据对应的第二数据的版本号;

根据所述预设版本号更新规则、所述第二数据的版本号及所述目标版本号,判断所述第二数据的版本是否早于所述第一数据;

若早于,根据所述数据更新消息对所述第二数据执行所述更新操作,并将所述第二数据的版本号更新为所述目标版本号。

可选的,所述第一数据的版本号为数字,所述目标版本号为所述第一数据的版本号与预设值相加之和;

所述根据所述预设版本号更新规则、所述第二数据的版本号及所述目标版本号,判断所述第二数据的版本是否早于所述第一数据,包括:

判断所述第二数据的版本号是否小于所述目标版本号;若小于,则判定所述第二数据的版本早于所述第一数据;若不小于,则判定所述第二数据的版本不早于所述第一数据。

可选的,所述第一数据存储在数据表中,所述数据更新消息还用于指示所述数据表,所述根据所述数据更新消息,确定本地存储的与所述第一数据对应的第二数据的版本号,包括:

根据所述数据更新消息及预先存储的所述数据表与版本号的对应关系,将本地存储的所述数据表的版本号作为所述第二数据的版本号;

所述将所述第二数据的版本号更新为所述目标版本号,包括:

将本地存储的所述数据表的版本号更新为所述目标版本号。

可选的,所述数据表与版本号的对应关系采用json格式存储在所述后端设备中。

可选的,在所述第二数据的版本不早于所述第一数据的情况下,所述方法还包括:

丢弃所述数据更新消息。

在本发明实施的第四方面,还提供了一种数据同步装置,应用于前端设备,所述装置包括:

更新模块,用于在对本地存储的第一数据执行更新操作后,根据预设版本号更新规则更新所述第一数据的版本号,得到目标版本号;

生成模块,用于生成携带所述目标版本号的数据更新消息,其中,所述数据更新消息用于指示所述第一数据及所述更新操作;

发送模块,用于将所述数据更新消息发送至后端设备,以使所述后端设备根据所述数据更新消息,确定本地存储的与所述第一数据对应的第二数据的版本号,并在根据所述预设版本号更新规则、所述第二数据的版本号及所述目标版本号,判定所述第二数据的版本早于所述第一数据的情况下,根据所述数据更新消息对所述第二数据执行所述更新操作,并将所述第二数据的版本号更新为所述目标版本号。

在本发明实施的第五方面,还提供了一种数据同步装置,应用于后端设备,所述装置包括:

接收模块,用于接收前端设备发送的携带目标版本号的数据更新消息,其中,所述数据更新消息用于指示所述前端设备本地存储的第一数据及对所述第一数据执行的更新操作,所述目标版本号为所述前端设备在对所述第一数据执行所述更新操作后,根据预设版本号更新规则对所述第一数据的版本号进行更新得到的;

确定模块,用于根据所述数据更新消息,确定本地存储的与所述第一数据对应的第二数据的版本号;

判断模块,用于根据所述预设版本号更新规则、所述第二数据的版本号及所述目标版本号,判断所述第二数据的版本是否早于所述第一数据;

同步模块,用于在所述第二数据的版本早于所述第一数据的情况下,根据所述数据更新消息对所述第二数据执行所述更新操作,并将所述第二数据的版本号更新为所述目标版本号。

在本发明实施的第六方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述的数据同步方法。

在本发明实施的第七方面,还提供了一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任一所述的数据同步方法。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的数据同步方法。

在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据同步方法。

本发明实施例提供的数据同步系统、方法、装置、电子设备及存储介质,前端设备在对本地存储的第一数据执行更新操作后,根据预设版本号更新规则更新第一数据的版本号,得到目标版本号;生成携带目标版本号的数据更新消息,其中,数据更新消息用于指示第一数据及更新操作;将数据更新消息发送至后端设备;后端设备接收数据更新消息;根据数据更新消息,确定本地存储的与第一数据对应的第二数据的版本号;根据预设版本号更新规则、第二数据的版本号及目标版本号,判断第二数据的版本是否早于第一数据;若是,根据数据更新消息对第二数据执行更新操作,并将第二数据的版本号更新为目标版本号。

也就是说,每当前端设备对本地存储的第一数据执行更新操作,就对第一数据的版本号进行更新,这样,后端设备可以对比更新后的第一数据的版本号与本地存储的第二数据的版本号,确定第二数据的版本和更新后的第一数据的版本的先后顺序,在第二数据的版本早于更新后的第一数据的版本的情况下,再对第二数据执行更新操作,从而减少数据更新被覆盖的可能性,实现前端设备和后端设备中的数据同步。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的一种数据同步系统的系统结构图;

图2为本发明实施例提供的一种数据同步系统进行数据同步的时序图;

图3为本发明实施例提供的另一种数据同步系统进行数据同步的时序图;

图4为本发明实施例提供的一种数据同步方法的方案示意图;

图5为本发明实施例提供的一种应用于前端设备的数据同步方法的流程图;

图6为本发明实施例提供的一种应用于后端设备的数据同步方法的流程图;

图7为本发明实施例提供的一种应用于前端设备的数据同步装置的结构图;

图8为本发明实施例提供的一种应用于后端设备的数据同步装置的结构图;

图9为本发明实施例提供的一种电子设备的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

本发明实施例提供了一种数据同步系统,该系统中包括前端设备和后端设备,其中,前端设备的数量可以是一个,也可以是多个。

举例而言,图1是本发明实施例提供的一种数据同步系统的系统结构图,在图1所示的数据同步系统中,包括两个前端设备110和一个后端设备120。

图2是本发明实施例提供的一种数据同步系统进行数据同步的时序图,具体包括如下步骤:

S201、前端设备110在对本地存储的第一数据执行更新操作后,根据预设版本号更新规则更新第一数据的版本号,得到目标版本号。

在本发明实施例中,前端设备110可以响应于用户发送的数据更新请求,对本地存储的用户请求更新的第一数据执行更新操作,其中,每个前端设备110可以接收一个或多个数据更新请求,这些数据更新请求可以是按顺序发送的,也可以是并发的。

或者,前端设备110也可以按照预设的数据更新规则,获取待更新的数据,并根据待更新的数据对本地存储的第一数据执行更新操作,本发明实施例对此不做限定。

其中,更新操作可以是指对第一数据的替换、删除或增加,也可以是指对第一数据进行格式转换、数学运算等处理,具体不做限定。

一种实现方式中,在前端设备110中可以对应存储每个第一数据自身的版本号。或者,在另一种实现方式中,若第一数据存储在数据表中,那么,也可以在前端设备110中存储各个数据表的版本号,并将每个第一数据所属数据表的版本号作为该第一数据的版本号,这样,不需要在前端设备110中存储每个第一数据对应的版本号,减少了对前端设备110的系统资源的占用以及对数据表性能的影响。

在本步骤中,若第一数据存储在数据表中,那么,前端设备110获取目标版本号的具体方式可以为:在对第一数据执行更新操作后,查询第一数据所属的数据表的版本号,作为第一数据的版本号。其中,数据表的版本号可以存储在数据表中,作为数据表的一部分;或者,也可以独立于数据表存储在前端设备110中,这样,在数据表读取发生错误的情况下,仍然可以对其版本号进行记录。

举例而言,第一数据可以为前端设备110本地存储的MySQL(Structured QueryLanguag,构造化查询言语)数据表中的一个字段,那么,可以将每个第一数据所属的MySQL数据表的版本号作为该第一数据的版本号,并且,每个MySQL数据表的版本号也被作为一个字段存储在该MySQL数据表中。

在本步骤中,若第一数据的版本号为数字,那么,前端设备110根据预设版本号更新规则更新第一数据的版本号的方式,可以为:将第一数据的版本号与预设值相加,得到目标版本号,比如,若第一数据的版本号为0,预设值为1,那么,目标版本号即为1。

或者,第一数据的版本号还可以是字母和数字的组合,如“1.a”那么,前端设备110根据预设版本号更新规则更新第一数据的版本号的方式,可以为:将第一数据的版本号中的字母部分按照字母表顺延,若字母部分为“z”,则将第一数据的版本号中的数字部分加1,并将字母部分更新为“a”,得到目标版本号,比如,若第一数据的版本号为“1.z”,那么,目标版本号即为“2.a”。

另外,第一数据的版本号还可以是其他的数字、字母或数字和字母的组合,根据版本号的不同格式,可以预设不同的版本号更新规则,本发明实施例对此不做限定。

S202、前端设备110生成携带目标版本号的数据更新消息,其中,数据更新消息用于指示第一数据及更新操作。

举例而言,在后端设备120中,可以预先存储每个本地存储的数据与数据标识的对应关系,以及每个更新操作与操作标识的对应关系,前端设备110生成的数据更新消息中可以包括第一数据的数据标识以及前端设备110对第一数据执行的更新操作的操作标识,这样,后端设备120在接收到数据更新消息之后,可以根据数据更新消息中的数据标识和操作标识,确定对那些数据执行那些更新操作。

一种实现方式中,第一数据存储在数据表中,那么,数据更新消息还可以指示该数据表,比如,若第一数据存储在MySQL数据表中,那么,数据更新消息可以为MySQL数据表的bin log消息,bin log消息可以指示MySQL数据表、MySQL数据表中的第一数据以及前端设备110对第一数据执行的更新操作。

S203、前端设备110将数据更新消息发送至后端设备120。

在本步骤中,前端设备110可以通过预先约定好的通信协议,如HTTP(HyperTextTransfer Protocol,超文本传输协议)协议,直接将数据更新消息发送至后端设备120。

或者,前端设备110也可以先将数据更新消息存储至消息中间件,通过消息中间件将数据更新消息发送至后端设备120,其中,消息中间件可以采用RocketMQ。消息中间件可以在不同平台之间进行通信,并且,可以屏蔽掉各种平台及协议之间的特性,实现不同平台之间的协同。

S204、后端设备120接收数据更新消息,根据数据更新消息,确定本地存储的与第一数据对应的第二数据的版本号。

在本步骤中,后端设备120可以通过预先约定好的通信协议,如HTTP协议,直接接收前端设备110发送的数据更新消息。或者,后端设备120也可以从存储前端设备110发送的数据更新消息的消息中间件中接收数据更新消息。

本发明实施例的应用场景中,各个前端设备110会将本地存储的数据发送至后端设备120进行聚合,也就是说,在后端设备120中存储着各个前端设备110中的数据。为了便于描述,将前端设备110本地存储的数据称为第一数据,将后端设备120中本地存储的数据称为第二数据,第一数据及其对应的第二数据即为分别存储在前端设备110和后端设备120中的同一数据。

在本发明实施例中,每个第二数据都具有版本号。一种实现方式中,每个第二数据的版本号均不相同,那么,在后端设备120中可以对应存储每个第二数据及其自身的版本号。

或者,另一种实现方式中,若前端设备110中的第一数据存储在数据表中,且后端设备120接收到的数据更新消息还可以指示第一数据所属的数据表,那么,后端设备120中可以存储前端设备110中每个数据表与其版本号的对应关系,并且,将本地存储的第一数据所属数据表的版本号作为该第一数据对应的第二数据的版本号。这样,后端设备120中仅需存储各个数据表与其版本号的对应关系,而不需要对应存储每个第二数据及其版本号,减少了对后端设备120的系统资源的占用以及对数据表性能的影响。

其中,后端设备120可以单独建立一个版本记录数据表,在版本记录数据表中对应存储每个数据表及对应的版本号。或者,也可以将每个数据表及其版本号作为一个json(JavaScript Object Notation,基于JAVA脚本的对象表示法)格式的字段,与第二数据存储在同一数据表中,便于进行管理和扩展。本发明实施例对此不做限定。

S205、后端设备120根据预设版本号更新规则、第二数据的版本号及目标版本号,判断第二数据的版本是否早于第一数据;若是,执行S206。

本步骤中,后端设备120判断第二数据的版本是否早于第一数据的方法,与前端设备110得到目标版本号的方法是对应的。

举例而言,若第一数据的版本号为数字,预设版本号更新规则为将第一数据的版本号与预设值相加,那么,后端设备120可以判断第二数据的版本号是否小于目标版本号,若小于,则判定第二数据的版本早于第一数据。比如,若第二数据的版本号为0,目标版本号为1,那么,后端设备120可以判定第二数据的版本早于第一数据。

或者,若第一数据的版本号还可以是字母和数字的组合,预设版本号更新规则为将第一数据的版本号中的字母部分按照字母表顺延,若字母部分为“z”,则将第一数据的版本号中的数字部分加1,并将字母部分更新为“a”,得到目标版本号,那么,后端设备120可以先判断第二数据的版本号和目标版本号中的数字部分,数字部分较小的版本号对应版本较早的数据,若数字部分相等,则根据字母表判断字母部分的前后顺序,字母部分更靠前的版本号对应版本较早的数据。

S206、后端设备120根据数据更新消息对第二数据执行更新操作,并将第二数据的版本号更新为目标版本号。

在本发明实施例中,若在后端设备120中对应存储每个第二数据自身的版本号,那么,在判定第二数据的版本早于第一数据的情况下,后端设备120可以将第二数据的版本号更新为目标版本号。

或者,若前端设备110中的第一数据存储在数据表中,且后端设备120中存储前端设备110中每个数据表与其版本号的对应关系,那么,在判定第二数据的版本早于第一数据的情况下,后端设备120可以将本地存储的数据表的版本号更新为目标版本号,也就是说,在更新后的数据表与其版本号的对应关系中,第一数据所属数据表对应于目标版本号。

在本步骤中,若后端设备120判定第二数据的版本不早于第一数据,那么,后端设备120可以丢弃数据更新消息。

综上所述,本发明实施例提供的数据同步系统中,每当前端设备对本地存储的第一数据执行更新操作,就对第一数据的版本号进行更新,这样,后端设备可以对比更新后的第一数据的版本号与本地存储的第二数据的版本号,确定第二数据的版本和更新后的第一数据的版本的先后顺序,在第二数据的版本早于更新后的第一数据的版本的情况下,再对第二数据执行更新操作,从而减少数据更新被覆盖的可能性,实现前端设备和后端设备中的数据同步。

图3是本发明实施例提供的另一种数据同步系统进行数据同步的时序图,具体包括如下步骤:

S301、前端设备110在对本地存储的第一数据执行更新操作后,查询第一数据所属的数据表的版本号,作为第一数据的版本号。

在本发明实施例中,前端设备110可以响应于用户发送的数据更新请求,对本地存储的用户请求更新的第一数据执行更新操作,其中,每个前端设备110可以接收一个或多个数据更新请求,这些数据更新请求可以是按顺序发送的,也可以是并发的。

其中,数据表的版本号可以采用json格式存储在数据表中,作为数据表的一部分。举例而言,第一数据可以为前端设备110本地存储的MySQL数据表“user_basic_info”中的“uid”字段,那么,可以将每个“uid”字段所属的MySQL数据表“user_basic_info”的版本号作为该“uid”字段的版本号,其中,每个MySQL数据表“user_basic_info”中还可以包括“version”字段,“version”字段即为该MySQL数据表“user_basic_info”的版本号。

S302、前端设备110将第一数据的版本号与预设值相加,得到目标版本号。

举例而言,若第一数据的版本号为0,预设值为1,那么,目标版本号即为1。

S303、前端设备110生成携带目标版本号的数据更新消息,其中,数据更新消息用于指示第一数据、更新操作及数据表。

举例而言,在后端设备120中,可以预先存储每个本地存储的数据与数据标识的对应关系、每个更新操作与操作标识的对应关系以及每个数据表与数据表标识的对应关系,前端设备110生成的数据更新消息中可以包括第一数据的数据标识、前端设备110对第一数据执行的更新操作的操作标识以及第一设备所属数据表的标识,这样,后端设备120在接收到数据更新消息之后,可以根据数据更新消息中的数据标识和操作标识,确定前端设备110是对哪个数据表中的哪个第一数据执行了哪些更新操作。

在本步骤中,若第一数据存储在MySQL数据表中,那么,数据更新消息可以为MySQL数据表的bin log消息。

S304、前端设备110通过消息中间件,将数据更新消息发送至后端设备120。

其中,消息中间件可以采用RocketMQ。消息中间件可以在不同平台之间进行通信,并且,可以屏蔽掉各种平台及协议之间的特性,实现不同平台之间的协同。

S305、后端设备120接收数据更新消息,根据数据更新消息及预先存储的数据表与版本号的对应关系,将本地存储的数据表的版本号作为第二数据的版本号。

本发明实施例的应用场景中,各个前端设备110会将本地存储的数据发送至后端设备120进行聚合,也就是说,在后端设备120中存储着各个前端设备110中的数据。为了便于描述,将前端设备110本地存储的数据称为第一数据,将后端设备120中本地存储的数据称为第二数据,第一数据及其对应的第二数据即为分别存储在前端设备110和后端设备120中的同一数据。

在本步骤中,后端设备120中可以存储前端设备110中每个数据表与其版本号的对应关系,并且,将本地存储的第一数据所属数据表的版本号作为该第一数据对应的第二数据的版本号。这样,后端设备120中仅需存储各个数据表与其版本号的对应关系,而不需要对应存储每个第二数据及其版本号,减少了对后端设备120的系统资源的占用以及对数据表性能的影响。

其中,后端设备120可以将每个数据表及其版本号作为一个json格式的字段,与第二数据存储在同一数据表中,便于进行管理和扩展。

举例而言,若第一数据所属数据表为MySQL数据表“user_basic_info”,那么,可以将表示该数据表及其版本号的last_update字段记为“‘user_basic_info’:3”,表示“user_basic_info”数据表的版本号为3,其中,last_update字段以json格式存储在后端设备120的MySQL数据表“mp_user_info”中,在MySQL数据表“mp_user_info”中存储着包括MySQL数据表“user_basic_info”在内的多个数据表的数据以及每个数据表的版本号。

S306、后端设备120判断第二数据的版本号是否小于目标版本号;若小于,执行S307;若不小于,执行S308。

举例而言,若第二数据的版本号为0,目标版本号为1,那么,后端设备120可以判定第二数据的版本早于第一数据。

S307、后端设备120根据数据更新消息对第二数据执行更新操作,并将本地存储的数据表的版本号更新为目标版本号。

也就是说,在更新后的数据表与其版本号的对应关系中,第一数据所属数据表对应于目标版本号。

S308、后端设备120丢弃数据更新消息。

举例而言,如图4所示,为本发明实施例提供的一种数据同步方法的方案示意图,其中,数据同步系统中包括前端设备A、前端设备B和后端设备,前端设备A中存储着数据表“user_basic_info”,前端设备B中存储着数据表“company_info”,后端设备中存储着数据表“mp_user_info”,数据表“mp_user_info”中包括数据表“user_basic_info”和数据表“company_info”中的所有数据,以及数据表“user_basic_info”和数据表“company_info”分别对应的版本号。

首先,前端设备A同时接收到针对本地存储的数据表“user_basic_info”的数据更新请求A和数据更新请求B,前端设备B同时接收到针对本地存储的数据表“company_info”的数据更新请求C和数据更新请求D。

针对每个数据更新请求,前端设备分别对本地存储的第一数据执行更新操作,然后,根据预设版本号更新规则更新第一数据的版本号,得到目标版本号,并生成了每个数据更新请求对应的携带目标版本号的数据更新消息A、数据更新消息B、数据更新消息C以及数据更新消息D,并将这些数据更新消息通过RocketMQ消息中间件发送至后端设备。

进而,后端设备可以根据每条数据更新消息,确定数据表“mp_user_info”中存储的该条数据更新消息所指示的数据表“user_basic_info”或数据表“company_info”的版本号,作为该数据更新消息所指示的第一数据对应的第二数据的版本号,并判断第二数据的版本号是否小于目标版本号;若小于,根据该条数据更新消息对第二数据执行更新操作,并将该条数据更新消息所指示的数据表“user_basic_info”或数据表“company_info”的版本号更新为目标版本号;若不小于,丢弃数据更新消息。

综上所述,本发明实施例提供的数据同步系统中,每当前端设备对本地存储的数据表中的第一数据执行更新操作,就对第一数据的版本号进行更新,这样,后端设备可以对比更新后的第一数据的版本号与第二数据的版本号,确定第二数据的版本和第一数据的版本的先后顺序,其中,第二数据的版本号即为后端设备120本地存储的第一数据所属数据表的版本号,在第二数据的版本早于第一数据的版本的情况下,再对第二数据执行更新操作,从而减少数据更新被覆盖的可能性,实现前端设备和后端设备中的数据同步。

如图5所示,本发明实施例还提供了一种数据同步方法,该方法应用于前端设备,具体包括如下步骤:

S501、在对本地存储的第一数据执行更新操作后,根据预设版本号更新规则更新第一数据的版本号,得到目标版本号。

S502、生成携带目标版本号的数据更新消息,其中,数据更新消息用于指示第一数据及更新操作。

S503、将数据更新消息发送至后端设备。

这样,后端设备可以根据数据更新消息,确定本地存储的与第一数据对应的第二数据的版本号,并在根据预设版本号更新规则、第二数据的版本号及目标版本号,判定第二数据的版本早于第一数据的情况下,根据数据更新消息对第二数据执行更新操作,并将第二数据的版本号更新为目标版本号。

一种实现方式中,第一数据的版本号为数字,根据预设版本号更新规则更新第一数据的版本号,得到目标版本号,包括:

将第一数据的版本号与预设值相加,得到目标版本号。

一种实现方式中,第一数据存储在数据表中,数据更新消息还用于指示数据表,在根据预设版本号更新规则更新第二数据的版本号,得到目标版本号之前,方法还包括:

查询第一数据所属的数据表的版本号,作为第一数据的版本号。

一种实现方式中,将数据更新消息发送至后端设备,包括:

通过消息中间件,将数据更新消息发送至后端设备。

综上,本发明实施例提供的数据同步方法中,每当前端设备对本地存储的第一数据执行更新操作,就对第一数据的版本号进行更新,这样,后端设备可以对比更新后的第一数据的版本号与本地存储的第二数据的版本号,确定第二数据的版本和更新后的第一数据的版本的先后顺序,在第二数据的版本早于更新后的第一数据的版本的情况下,再对第二数据执行更新操作,从而减少数据更新被覆盖的可能性,实现前端设备和后端设备中的数据同步。

如图6所示,本发明实施例还提供了一种数据同步方法,该方法应用于后端设备,具体包括如下步骤:

S601、接收前端设备发送的携带目标版本号的数据更新消息。

其中,数据更新消息用于指示前端设备本地存储的第一数据及对第一数据执行的更新操作,目标版本号为前端设备在对第一数据执行更新操作后,根据预设版本号更新规则对第一数据的版本号进行更新得到的。

S602、根据数据更新消息,确定本地存储的与第一数据对应的第二数据的版本号。

S603、根据预设版本号更新规则、第二数据的版本号及目标版本号,判断第二数据的版本是否早于第一数据,若早于,执行S604。

S604、根据数据更新消息对第二数据执行更新操作,并将第二数据的版本号更新为目标版本号。

一种实现方式中,第一数据的版本号为数字,目标版本号为第一数据的版本号与预设值相加之和;

根据预设版本号更新规则、第二数据的版本号及目标版本号,判断第二数据的版本是否早于第一数据,包括:

判断第二数据的版本号是否小于目标版本号;若小于,则判定第二数据的版本早于第一数据;若不小于,则判定第二数据的版本不早于第一数据。

一种实现方式中,第一数据存储在数据表中,数据更新消息还用于指示数据表,根据数据更新消息,确定本地存储的与第一数据对应的第二数据的版本号,包括:

根据数据更新消息及预先存储的所述数据表与版本号的对应关系,将本地存储的数据表的版本号作为第二数据的版本号;

将第二数据的版本号更新为目标版本号,包括:

将本地存储的数据表的版本号更新为目标版本号。

一种实现方式中,数据表与版本号的对应关系采用json格式存储在所述后端设备中。

一种实现方式中,在第二数据的版本不早于第一数据的情况下,方法还包括:

丢弃数据更新消息。

综上,本发明实施例提供的数据同步方法中,每当前端设备对本地存储的第一数据执行更新操作,就对第一数据的版本号进行更新,这样,后端设备可以对比更新后的第一数据的版本号与本地存储的第二数据的版本号,确定第二数据的版本和更新后的第一数据的版本的先后顺序,在第二数据的版本早于更新后的第一数据的版本的情况下,再对第二数据执行更新操作,从而减少数据更新被覆盖的可能性,实现前端设备和后端设备中的数据同步。

如图7所示,本发明实施例还提供了一种数据同步方法,该方法应用于前端设备,具体包括如下步骤:

更新模块701,用于在对本地存储的第一数据执行更新操作后,根据预设版本号更新规则更新第一数据的版本号,得到目标版本号;

生成模块702,用于生成携带目标版本号的数据更新消息,其中,数据更新消息用于指示第一数据及更新操作;

发送模块703,用于将数据更新消息发送至后端设备,以使后端设备根据数据更新消息,确定本地存储的与第一数据对应的第二数据的版本号,并在根据预设版本号更新规则、第二数据的版本号及目标版本号,判定第二数据的版本早于第一数据的情况下,根据数据更新消息对第二数据执行更新操作,并将第二数据的版本号更新为目标版本号。

综上,本发明实施例提供的数据同步装置中,每当前端设备对本地存储的第一数据执行更新操作,就对第一数据的版本号进行更新,这样,后端设备可以对比更新后的第一数据的版本号与本地存储的第二数据的版本号,确定第二数据的版本和更新后的第一数据的版本的先后顺序,在第二数据的版本早于更新后的第一数据的版本的情况下,再对第二数据执行更新操作,从而减少数据更新被覆盖的可能性,实现前端设备和后端设备中的数据同步。

如图8所示,本发明实施例还提供了一种数据同步方法,该方法应用于后端设备,具体包括如下步骤:

接收模块801,用于接收前端设备发送的携带目标版本号的数据更新消息,其中,数据更新消息用于指示前端设备本地存储的第一数据及对第一数据执行的更新操作,目标版本号为前端设备在对第一数据执行更新操作后,根据预设版本号更新规则对第一数据的版本号进行更新得到的;

确定模块802,用于根据数据更新消息,确定本地存储的与第一数据对应的第二数据的版本号;

判断模块803,用于根据预设版本号更新规则、第二数据的版本号及目标版本号,判断第二数据的版本是否早于第一数据;

同步模块804,用于在第二数据的版本早于第一数据的情况下,根据数据更新消息对第二数据执行更新操作,并将第二数据的版本号更新为目标版本号。

综上,本发明实施例提供的数据同步装置中,每当前端设备对本地存储的第一数据执行更新操作,就对第一数据的版本号进行更新,这样,后端设备可以对比更新后的第一数据的版本号与本地存储的第二数据的版本号,确定第二数据的版本和更新后的第一数据的版本的先后顺序,在第二数据的版本早于更新后的第一数据的版本的情况下,再对第二数据执行更新操作,从而减少数据更新被覆盖的可能性,实现前端设备和后端设备中的数据同步。

本发明实施例还提供了一种电子设备,如图9所示,包括处理器901、通信接口902、存储器904和通信总线904,其中,处理器901,通信接口902,存储器904通过通信总线904完成相互间的通信,

存储器904,用于存放计算机程序;

处理器901,用于执行存储器904上所存放的程序时,实现如下步骤:

在对本地存储的第一数据执行更新操作后,根据预设版本号更新规则更新第一数据的版本号,得到目标版本号;

生成携带目标版本号的数据更新消息,其中,数据更新消息用于指示第一数据及更新操作;

将数据更新消息发送至后端设备。

或者,实现如下步骤:

接收前端设备发送的携带目标版本号的数据更新消息,其中,数据更新消息用于指示前端设备本地存储的第一数据及对第一数据执行的更新操作,目标版本号为前端设备在对第一数据执行更新操作后,根据预设版本号更新规则对第一数据的版本号进行更新得到的;

根据数据更新消息,确定本地存储的与第一数据对应的第二数据的版本号;

根据预设版本号更新规则、第二数据的版本号及目标版本号,判断第二数据的版本是否早于第一数据;

若早于,根据数据更新消息对第二数据执行更新操作,并将第二数据的版本号更新为目标版本号。

上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据同步方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据同步方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

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

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

相关技术
  • 一种数据同步系统、方法、装置、电子设备及存储介质
  • 多化身位置同步系统、方法、装置及电子设备和存储介质
技术分类

06120112188664