CN112084258A - 一种数据同步方法和装置 - Google Patents
一种数据同步方法和装置 Download PDFInfo
- Publication number
- CN112084258A CN112084258A CN202010831535.9A CN202010831535A CN112084258A CN 112084258 A CN112084258 A CN 112084258A CN 202010831535 A CN202010831535 A CN 202010831535A CN 112084258 A CN112084258 A CN 112084258A
- Authority
- CN
- China
- Prior art keywords
- data object
- change operation
- data
- database
- updating
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Abstract
本发明公开了一种数据同步方法和装置。所述方法包括:接收数据对象更新请求,所述数据对象更新请求携带有目标数据对象标识和更新信息;根据所述目标数据对象标识在数据库中确定目标数据对象,以及基于所述更新信息更新所述目标数据对象的内容信息和版本信息;基于所述更新信息和更新后的版本信息更新生成指示所述目标数据对象的变更操作消息;将所述变更操作消息发送至对应的服务实例,以使所述对应的服务实例将所述变更操作消息存储于变更操作队列中,以及基于所述变更操作队列对本地副本进行同步。这样能够实现对多副本进行更实时有效的同步,能够更好的保证本地副本与数据库中数据对象的一致性。
Description
技术领域
本申请涉及互联网通信技术领域,尤其涉及一种数据同步方法和装置。
背景技术
分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。
在中大型分布式系统中,通常会对服务进行多实例部署,从而保证系统的高可用、可扩展等性能。各服务实例中均需缓存一份对应的数据副本,该数据副本需要和存储层的数据保存一致。相关技术中,由服务实例定期从数据库(对应存储层)拉取数据,以更新本地副本。然而,这样并不能保证存储层的数据的更新能够实时同步给所有服务实例中的副本。因此,需要提供对多副本更实时有效的同步方案。
发明内容
为了解决现有技术应用在对多副本进行同步时,实时性差、效率低等问题,本申请提供了一种数据同步方法和装置:
根据本申请的第一方面,提供了一种数据同步方法,所述方法包括:
接收数据对象更新请求,所述数据对象更新请求携带有目标数据对象标识和更新信息;
根据所述目标数据对象标识在数据库中确定目标数据对象,以及基于所述更新信息更新所述目标数据对象的内容信息和版本信息;
基于所述更新信息和更新后的版本信息更新生成指示所述目标数据对象的变更操作消息;
将所述变更操作消息发送至对应的服务实例,以使所述对应的服务实例将所述变更操作消息存储于变更操作队列中,以及基于所述变更操作队列对本地副本进行同步。
根据本申请的第二方面,提供了一种数据同步方法,所述方法包括:
接收数据管理端发送的变更操作消息;
将所述变更操作消息写入变更操作队列中;
利用所述变更操作队列对本地副本进行同步;
其中,所述变更操作消息是由所述数据管理端基于对存储于数据库中的数据对象的内容信息和版本信息进行更新而生成的,所述变更操作消息携带有更新信息和更新后的版本信息。
根据本申请的第三方面,提供了一种数据同步装置,所述装置包括:
更新请求接收模块:用于接收数据对象更新请求,所述数据对象更新请求携带有目标数据对象标识和更新信息;
数据对象更新模块:用于根据所述目标数据对象标识在数据库中确定目标数据对象,以及基于所述更新信息更新所述目标数据对象的内容信息和版本信息;
变更操作消息生成模块:用于基于所述更新信息和更新后的版本信息更新生成指示所述目标数据对象的变更操作消息;
变更操作消息发送模块:用于将所述变更操作消息发送至对应的服务实例,以使所述对应的服务实例将所述变更操作消息存储于变更操作队列中,以及基于所述变更操作队列对本地副本进行同步。
根据本申请的第四方面,提供了一种数据同步装置,所述装置包括:
变更操作消息接收模块:用于接收数据管理端发送的变更操作消息;
变更操作队列写入模块:用于将所述变更操作消息写入变更操作队列中;
本地副本同步模块:用于利用所述变更操作队列对本地副本进行同步;
其中,所述变更操作消息是由所述数据管理端基于对存储于数据库中的数据对象的内容信息和版本信息进行更新而生成的,所述变更操作消息携带有更新信息和更新后的版本信息。
根据本申请的第五方面,提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如第一方面所述的数据同步方法或者如第二方面所述的数据同步方法。
根据本申请的一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如第一方面所述的数据同步方法或者如第二方面所述的数据同步方法。
根据本申请的另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行第一方面所述的数据同步方法或者如第二方面所述的数据同步方法。
本申请提供的一种数据同步方法和装置,具有如下技术效果:
本申请中数据管理端将对数据库中数据对象的更新生成对应的携带版本信息的变更操作消息,以及将变更操作消息实时发送至对应的服务实例。服务实例利用存储于变更操作队列对本地副本进行同步。这样能够实现对多副本进行更实时有效的同步,能够更好的保证本地副本与数据库中数据对象的一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例提供的一种应用环境的示意图;
图2是本发明实施例提供的一种数据同步方法的流程示意图;
图3是本发明实施例提供的一种系统架构示意图;
图4是本发明实施例提供的一种数据库核心字段示意图;
图5是本发明实施例提供的服务实例从数据库定期获取数据对象的一种示意图;
图6是本发明实施例提供的服务实例在本地副本查询数据对象的一种示意图;
图7是本发明实施例提供的服务实例利用变更操作队列对本地副本进行同步的一种流程示意图;
图8是本发明实施例提供的服务实例在本地副本查询数据对象的一种流程示意图
图9是本发明实施例提供的一种数据同步装置的组成框图;
图10也是本发明实施例提供的一种数据同步装置的组成框图;
图11是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
服务实例(service instance):作为与服务相对应的概念,是服务和具体某个或几个资源的绑定,服务是完全抽象的,只有在其实例化的时候才涉及到具体的提供服务的执行主体。在分布式系统中,一个(后台)服务为了提高吞吐量和可用性,通常会进行多实例部署,多个服务实例同时运行可以均摊流量。
多副本一致性:结合前面的分布式系统,有数据副本缓存的服务实例需要与存储层进行数据同步,保证缓存数据与数据库中存储的状态保持一致。
强一致性:数据在存储层发生的任何增删改将被实时同步到多个副本实例,保证任何时刻对用户来说,任意副本数据与存储层数据都是完全一致的。系统中的某个数据被成功更新后,后续任何对该数据的读取操作都将得到更新后的值。
数据库(Database):它可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
请参阅图1,图1是本发明实施例提供的一种应用环境的示意图,该应用环境中可以包括数据库、数据管理端和多个服务实施例。数据管理端响应于数据对象更新请求对数据库中对应的数据对象进行更新。数据管理端将对数据对象的更新生成对应的携带版本信息的变更操作消息,以及将变更操作消息实时发送至对应的服务实例。服务实例一方面定期从数据库拉取数据对本地副本进行同步(定期同步),一方面利用接收到的变更操作消息对本地副本进行同步(实时同步)。需要说明的是,图1仅仅是一种示例。
服务实例可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。其中服务器可以包括有网络通信单元、处理器和存储器等等。服务实例可以为对应的客户端提供后台服务。该对应的客户端可以包括智能手机、台式电脑、平板电脑、笔记本电脑、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、数字助理、智能音箱、智能可穿戴设备等类型的实体设备,也可以包括运行于实体设备中的软体,比如计算机程序。该对应的客户端所对应的操作系统可以包括安卓系统(Android系统)、IOS系统(是由苹果公司开发的移动操作系统)、linux(一种操作系统)、Microsoft Windows(微软视窗操作系统)等。
在实际应用中,数据库可以存储数据特征,比如海量分布式图像特征。服务可以对应特征检索业务场景,比如海量分布式图像特征检索业务场景。该服务指向的分布式系统可以为基于特征检索的后台分布式系统中,比如人脸识别、人脸支付系统等。其中检索是一种根据给定的特征从数据库中查找与该给定特征最相似(特征距离最近)的特征的过程。例如,当数据库为图像数据库时,则检索的过程实际上是根据给定的一个图像,从图像数据库中寻找与该给定图像最相似的图像。通常图像数据库是规模超大的检索库,对应的数据量非常大,比如10亿、100亿的量级,甚至更大的量级。
以下介绍本发明一种数据同步方法的具体实施例,图2是本发明实施例提供的一种数据同步方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
S201:数据管理端接收数据对象更新请求,所述数据对象更新请求携带有目标数据对象标识和更新信息;
在本发明实施例中,数据对象更新请求携带的目标数据对象标识指示需要进行更新的具体数据对象。数据对象更新请求携带的更新信息指示需要对该具体数据对象进行更新的具体内容(比如增操作的内容、删操作的内容、改操作的内容)。数据管理端负责管理数据库中各数据对象的更新(增、删、改),数据库中各数据对象的版本管理机制是独立的,数据管理端基于该版本管理机制可以对各数据对象进行更细粒度的更新以维护多个服务实例缓存的本地副本与存储层(持久层,对应数据库)的一致性。
数据管理端对每个数据对象进行独立的版本管理,可以保证每个数据对象的版本具有单调可比性。数据管理端为每个数据对象维护一个自增的版本号(version),初始数据被添加入库时标记version=1。此后每次数据对象发生变更,其对应的version自增1,即版本号代表了该数据对象历史上曾经发生过变更的次数(version=1可以指示一个数据对象从无到有的变更)。对数据对象的内容信息和版本信息(比如版本号)的更新可以是一个原子操作,这样可以满足保证对两者的更新同时成功或者失败的需求。比如,采用MySQL(一种关系型数据库管理系统)组件时,可将版本号与元数据存储在表中的同一行记录中。
相比由多个数据对象组成的数据片(page),以数据对象的粒度进行数据管理,能够为实现多个服务实例缓存的本地副本与存储层的强一致性提供更简单高效的应用方案,以及可以避免因page粒度需要利用分布式锁进行写冲突保护为系统所带来的复杂度和性能损耗。对每个数据对象的记录具有单调可比性,可以不用依赖系统时间进行数据变更管理,尤其对于分布式场景下单机系统时间往往不可靠的情形。
在一个实施例中,数据管理端可以对应以数据管理平台,数据管理平台包括数据管理客户端和数据管理服务器,数据管理服务器为数据管理客户端提供后台服务。可以利用数据管理客户端生成数据对象更新请求,数据管理客户端将数据对象更新请求发送给数据对象服务器,数据对象服务器响应于数据对象更新请求对数据库中对应的数据对象进行更新。其中数据管理客户端可以包括智能手机、台式电脑、平板电脑、笔记本电脑、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、数字助理、智能音箱、智能可穿戴设备等类型的实体设备,也可以包括运行于实体设备中的软体,比如计算机程序。数据管理客户端对应的操作系统可以包括安卓系统(Android系统)、IOS系统(是由苹果公司开发的移动操作系统)、linux(一种操作系统)、Microsoft Windows(微软视窗操作系统)等。数据管理服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。数据管理服务器可以包括有网络通信单元、处理器和存储器等等。
在实际应用中,如图3所示,海量分布式图像特征检索业务场景中往往读多写少,数据检索往往会成为系统瓶颈,因此采用读写分离的方式来进行系统部署,可以很方便的通过增加检索节点(服务实例)来提高系统性能。其中海量的数据特征可以按照数据之间的关联性(如城市、区域)等进行分组(group)。各分组可以通过路由策略分散到不同检索节点进行缓存,并对外提供特征检索计算服务。增加异构检索服务实例(检索节点_0与检索节点_1为异构关系)可以分散的存储不同分组的数据来实现系统容量的横向扩展,增加存储相同数据分组的同构检索服务实例(检索节点_0中的IP0、IP1和IP2为同构关系,检索节点_1中的IP3、IP4和IP5也为同构关系)可以均摊流量以实现系统qps(每秒查询率,它等于并发量/平均响应时间)水平扩展并保障系统可用性。基于图3所示的系统架构,随着系统数据量和请求量的增长,可以很方便的利用检索节点的增加对系统容量和性能进行水平扩展。
S202:数据管理端根据所述目标数据对象标识在数据库中确定目标数据对象,以及基于所述更新信息更新所述目标数据对象的内容信息和版本信息;
在本发明实施例中,数据管理端可以先在数据库中确定出对应目标数据对象标识的目标数据对象,然后基于更新信息更新目标数据对象的内容信息和版本信息。数据对象标识可以是标识具体数据对象的名称(比如人脸图像A、face imageA)、字符(比如0x7f04058)等。当在数据库中新增(从无到有)目标数据对象时,目标数据对象标识便存在于目标数据对象的相关字段(比如内容信息对应的字段)中。目标数据对象标识不随着目标数据对象的更新(增、删、改)而变化,当然将目标数据对象彻底清除数据库的情况除外,一般的删操作可以理解为保留目标数据对象标识的内容信息删除。根据目标数据对象标识可以方便在数据库中进行目标数据对象的定位,当定位失败时,说明数据库不存在目标数据对象,那么可以生成更新失败的消息以返回;当定位成功时,说明数据库存在目标数据对象,那么可以基于更新信息更新目标数据对象,也就是根据更新信息指示的具体增操作、删操作或者改操作变更目标数据对象的内容信息,相应的,更新目标数据对象的版本信息。比如一次变更对应在原版本号的基础上+1:更新前的版本号为n(n大于等于1,n为整数),更新后的版本号为n+1。
在一个实施例中,对于同一目标数据对象,1)当当前更新信息指示增操作时,常对应前一个更新信息指示删操作,相当于前一次更新中将目标数据对象的内容信息(若内容信息中包括目标数据对象标识,不包括目标数据对象标识所在字段)删除,当前更新中加入新的内容信息;2)当当前更新信息指示删操作时,常对应前一个更新信息指示增操作或者改操作;3)当当前更新信息指示改操作时,常对应前一个更新信息指示增操作或者改操作。其中,改操作用于对目标数据对象的内容信息作全部或部分的修改。当为部分修改时,改操作依赖前一次更新得到的内容信息。
在另一个实施例中,可以在存储于数据库中的每个数据对象的内容信息中设置状态标识位(state),状态标识位用于存放指示所述数据对象当前是否处于有效状态的标识。相应的,所述基于所述更新信息更新存储于数据库中的所述目标数据对象的内容信息和版本信息,包括:当所述更新信息指示删除数据对象时,将指示所述目标数据对象当前处于无效状态的标识放入所述目标数据对象的状态标识位中,以及为所述目标数据对象设置删除期限。
可以采用online指示数据对象当前处于有效状态,采用delete指示数据对象当前处于有效状态。当删除某数据对象(可以包括连带数据对象标识的彻底清除,也可以包括保留数据对象标识的内容信息删除。在实际应用中,主要对应后者)时,除了在对应的状态标识位放入“delete”(state=delete),还需要设置删除期限。该删除期限可以理解为用于实现无效数据延迟淘汰的自动过期时间,基于该删除期限可以实现对“删除某数据对象”的执行情况的查询、追溯(还可以定位到对应的版本信息),尤其对于后述步骤S203、S204不能成功广播对应服务实例的情形。基于该删除期限可以更好的保证对应的服务实例已经正确同步某数据对象。
如图4所示,作为一种数据库核心字段示意图,这里date指示内容信息,version指示版本信息,state指示状态标识位。1)state=online:表示该数据对象为有效数据;2)state=delete:表示该数据对象为已删除的无效数据,并为该数据对象设置自动过期时间,该时间需要小于后述从数据库作定期拉取的时间周期。超过该时间,所有对应的服务实例需要真正将该数据对象从本地副本删除(具体可以是保留数据对象标识的内容信息删除)以保证已经正确同步数据。当然,服务实例缓存的数据对象也可以保留含有“state=delete”的数据核心字段,以方便对对应数据对象在任何情况下正常进行版本比对。
S203:数据管理端基于所述更新信息和更新后的版本信息更新生成指示所述目标数据对象的变更操作消息;
在本发明实施例中,数据管理端可以基于对应同一数据对象的更新信息中的具体操作类型(比如增操作、删操作或者改操作)、前述操作的内容(比如增操作所加入的新的内容信息、删操作所删除的旧的内容信息、改操作所修改的内容信息)以及更新后的版本信息(比如更新后的版本号)来定义一个三元组。这个抽象定义出的三元组可以以<data,op,version>的形式呈现,其中data指示前述操作的内容,op指示更新信息中的具体操作类型,version指示更新后的版本信息。该三元组用于表征变更操作消息。在实际应用中,随着前述步骤S202中更新的执行,数据管理端基于三元组记录变更流水,进而执行对对应服务实例的写扩散。当存储层数据发生变更时,将写请求(数据对象更新请求)流水同步扩散到对应的检索节点。
S204:对应的服务实例接收数据管理端发送的变更操作消息;
在本发明实施例中,数据管理端将变更操作消息发送至对应的服务实例,对应的服务实例接收变更操作消息。在实际应用中,基于异构服务实例的设置,指示某个数据对象的变更操作消息并不需要由数据管理端向所有服务实例发送。一个服务实例缓存的本地副本可以对应数据库的一个分组,相应的,该分组中各数据对象对应的变更操作消息可以构建变更流水,由数据管理端以每个变更操作消息的维度向对应的服务实例进行发送,以实现变更流水的扩散。
在一个实施例中,数据管理端将变更操作消息发送至对应的服务实例之后,当没有接收到对应的服务实例返回的确认接收消息时,数据管理端为对应的服务实例的标识添加副本同步失败标记(副本一致性标记),以及将添加标记后的标识写入关联数据库中。一个服务实例的标识可以采用<ip,port,group>三元组的抽象定义,其中ip指示该服务实例(具体可以是该服务实例的固定ip地址),port指示该服务实例对应的端口号,group指示该服务实例所缓存的同步失败的数据对象对应的数据库分组。当然也可以直接将<ip,port,group>作为副本一致性标记,将其写入关联数据库。数据管理端收到确认接收消息,可以说明变更操作消息发送成功、服务实例数据同步成功。数据管理端没有收到确认接收消息,可以说明变更操作消息的发送可能失败,当然也可以说明服务实例虽然成功接收变更操作消息但没能在预设时间段内作反馈。为保证后续服务实例响应读请求(数据对象查询请求)的数据查询准确性和数据查询效率,数据管理端基于没有接收到对应的服务实例返回的确认接收消息的情形生成副本同步失败标记,数据管理端利用该标记确定写扩散失败的服务实例,将添加标记后的标识(上述三元组)写入关联数据库中。关联数据库可以采用kv数据库(key-value数据库,是一种以键值对存储数据的数据库)。kv数据库NoSQL数据库(泛指非关系型的数据库)的一种,比如开源有名的Redis(一种key-value存储系统)、leveldb(一种非常高效的kv数据库)等,通常可以用作数据库、缓存和消息中间件。
S205:对应的服务实例将所述变更操作消息写入变更操作队列中;
在本发明实施例中,服务实例将接收到的变更操作消息写入变更操作队列中。一个服务实例缓存的本地副本可以包括多个数据对象,数据管理端将这些数据对象对应的变更操作消息依次发送过来,服务实例也将接受到的变更操作消息依次写入本地的变更操作队列中。服务实例接收数据管理端基于三元组<data,op,version>(可参见步骤S203中的相关记载)构建的变更流水,并将其暂存到本地的变更操作队列中。
S206:对应的服务实例利用所述变更操作队列对本地副本进行同步;
在本发明实施例中,变更操作队列中存储的变更操作消息是由数据管理端基于对存储于数据库中的数据对象(属于具体服务实例缓存的本地副本所对应的分组)的内容信息和版本信息进行更新而生成的,变更操作消息携带有更新信息和更新后的版本信息。服务实例利用变更操作队列对本地副本进行同步,可以看作是将数据库的变更操作复制给服务实例,服务实例自己对本地副本执行变更操作。
在一个实施例中,如图7所示,所述对应的服务实例利用所述变更操作队列对本地副本进行同步,包括:
S701:确定所述本地副本中每个数据对象对应的第一最大版本号;
比如本地副本包括数据对象1、数据对象2和数据对象3。以数据对象2为例,数据对象2的第一最大版本号表征数据对象2当前在本地副本中的最大版本号。
S702:基于所述变更操作队列确定所述每个数据对象对应的第二最大版本号;
数据对象2的第二最大版本号表征数据对象2当前在变更操作队列中的最大版本号,该版本号反映着数据库中数据对象2基于写请求(数据管理端接收到的数据对象更新请求)进行更新的情况。
S703:基于所述第一最大版本号和所述第二最大版本号确定版本号差值和对应数据对象的目标版本号;
一般而言,一个数据对象对应的第二最大版本号大于等于其对应的第一最大版本号。一个数据对象的目标版本号也取其中的最大值。
S704:基于所述版本号差值在候选数据源中确定所述对应数据对象的目标内容源,以及基于所述目标内容源和所述目标版本号对所述本地副本进行同步,所述候选数据源包括所述第一最大版本号所指示的内容信息和所述变更操作队列中记录的变更操作消息。
考虑到变更操作消息携带的更新信息可以指示具体增操作、删操作或者改操作变更数据对象的内容信息(可参见步骤S202中的相关记载),而更新信息所指示的不同操作会影响目标内容源的确定,下面以数据对象2为例列出确定目标内容源的不同情况:
1)当第一最大版本号等于第二最大版本号时,版本号差值为零。说明数据库中数据对象2没有基于写请求进行更新,本地副本中的数据对象2与数据库中的数据对象2保持一致。将第一最大版本号作为目标版本号,基于版本号差值将第一最大版本号所指示的内容信息作为数据对象2的目标内容源。本地副本中的数据对象2不需要进行更新了。
2)对于第一最大版本号小于第二最大版本号的情况:
2.1)当版本号差值小于阈值(比如2)且第二最大版本号所指示的变更操作消息为增删操作消息时,说明需要基于本地副本中的数据对象2的内容信息执行一次增操作或者删操作,而增操作或者删操作不依赖本地副本中的数据对象2的内容信息。因而将第二最大版本号所指示的变更操作消息作为数据对象2的目标内容源。
2.2)当所述版本号差值小于阈值(比如2)且第二最大版本号所指示的变更操作消息为改操作消息时,说明需要基于本地副本中的数据对象2的内容信息执行一次改操作,而改操作依赖本地副本中的数据对象2的内容信息。因而将第一最大版本号所指示的内容信息和第二最大版本号所指示的变更操作消息作为数据对象2的目标内容源。
2.3)当所述版本号差值大于等于阈值(比如2)且第二最大版本号所指示的变更操作消息为增删操作消息时,说明需要基于前一次更新(对应第二次大版本号所指示的操作)得到的数据对象2的内容信息执行一次增操作或者删操作,而增操作或者删操作不依赖前一次更新得到的数据对象2的内容信息。因而将第二最大版本号所指示的变更操作消息作为数据对象2的目标内容源。
2.4)当所述版本号差值大于等于阈值(比如2)且第二最大版本号所指示的变更操作消息为改操作消息时,确定最靠近第二最大版本号的属于增操作消息的第二中间版本号:
2.4.1)若第二中间版本号与第二最大版本号之间的第一差值小于等于上述版本号差值,将第一版本区间(对应第一差值)对应的变更操作消息作为目标内容源;
比如第一最大版本号为21,第二最大版本号为25,版本号差值为4(25-21=4>2)。若第二中间版本号为23,第一差值为2(25-23=2<4),说明可以基于第二中间版本号至第二最大版本号之间所有版本号(第一版本区间:版本号23-25)对应的变更操作消息得到数据对象2的最新内容信息。因而将第一最大版本号所指示的内容信息和第一版本区间对应的变更操作消息作为数据对象2的目标内容源;
2.4.2)若第二中间版本号与第二最大版本号之间的差值大于上述版本号差值,将第一最大版本号所指示的内容信息和第二版本区间(对应上述版本号差值)对应的变更操作消息作为目标内容源。
比如第一最大版本号为21,第二最大版本号为25,版本号差值为4(25-21=4>2)。若第二中间版本号为19,第一差值为6(25-19=6>4),说明需要基于本地副本中的数据对象2的内容信息执行四次变更操作,而四次变更操作对应第一最大版本号+1至第二最大版本号之间所有版本号(第二版本区间:版本号22-25)对应的变更操作消息。因而将第一最大版本号所指示的内容信息和第二版本区间对应的变更操作消息作为数据对象2的目标内容源。
在另一个实施例中,如图5所示,所述方法还包括服务实例从所述数据库定期获取数据对象:
首先,服务实例确定目标时间段。服务实例的数据基准更新器记录每次从本地副本对应的数据库分组拉取数据对象的时间。当当前时间点符合预设时间触发条件时,服务实例确定前一次数据拉取时间点(last_update_time)和时间补偿值(offset)。预设时间触发条件可以为定时拉取触发条件,当当前时间点和前一次数据拉取时间点之间的间隔满足对应的固定时间段时,说明当前时间点符合预设时间触发条件。当然,当当前时间点对应的操作符合指定操作触发条件时,服务实例也可以确定前一次数据拉取时间点(last_update_time)和时间补偿值(offset)。指定操作触发条件可以是接收到针对目标页面上“拉取”按钮的点击事件、采集到携带有特定含义的语音来触发、采集到携带有特定含义的表情、手势指令等。
服务实例基于当前时间点、前一次数据拉取时间点和时间补偿值得到目标时间段,目标时间段为基础时间段(从前一次数据拉取时间点到当前时间点之间的时间段)加上时间补偿值,可以视作基于基础时间段向历史方向再扩展一个时间补偿值。时间补偿值的设置是为了消除分布式多机器上可能存在的系统时间误差。时间补偿值可以小于等于1秒,比如100毫秒、200毫秒。
然后,服务实例从数据库获取对应目标时间段的数据对象。如图5所示,服务实例确定本地副本对应的数据库分片(分组)位置。服务实例利用异步线程分别从对应的数据库分片位置拉取对应目标时间段的数据对象。对应的数据库分片(分组)位置可以指示多个位置,比如位置1、位置2和位置3。服务实例利用线程1从位置1拉取对应目标时间段的所有数据对象(存储于位置1的),服务实例利用线程2从位置2拉取对应目标时间段的所有数据对象(存储于位置2的),服务实例利用线程3从位置3拉取对应目标时间段的所有数据对象(存储于位置3的)。基于各线程拉取到数据对象的时间点,基于拉取到的数据对象生成同步任务并写入任务队列(更新队列)中。异步线程的利用可以保证对对应较多、较分散数据库分片(分组)位置的本地副本进行更及时有效的数据对象拉取,有助于保障本地副本与存储层的强一致性。
本说明书实施例所提供的一种“基准更新”+“增量同步”的数据同步方案能够尽可能保证任意数量的副本和持久层的一致性收敛。“基准更新”+“增量同步”的数据同步方案中将缓存数据同步任务交给后台定时线程来完成,不对服务关键路径造成阻塞。
在另一个实施例中,如图6、8所示,所述方法还包括服务实例在本地副本查询数据对象:
S801:响应于接收到的数据对象查询请求,向关联数据库发送命中查询请求;
S802:当接收到所述关联数据库返回的未命中结果时,基于所述本地副本进行数据对象查询;
S803:当接收到所述关联数据库返回的命中结果时,基于当前时间点和前一次数据拉取时间点确定本次拉取时间段,从所述数据库拉取对应所述本次拉取时间段的数据对象,基于拉取到的数据对象更新所述本地副本,基于更新后的本地副本进行数据对象查询;
结合前述步骤S204中的相关记载,关联数据库存储副本同步失败标记和对应的服务实例的标识,副本同步失败标记是由数据管理端基于对应的服务实例未返回确认接收消息而生成的,确认接收消息指示数据管理端向对应的服务实例发送的变更操作消息接收成功。
考虑到极端情况下会出现某数据库分组的最近一次变更操作消息丢失(可以说明变更操作消息的发送可能失败,当然也可以说明服务实例虽然成功接收变更操作消息但没能在预设时间段内作反馈),为保证本地副本与存储层的强一致性,尤其是同构服务实例对应的多副本强一致性。数据管理端为对应的服务实例的标识添加副本同步失败标记(副本一致性标记),以及将添加标记后的标识写入关联数据库中。一个服务实例的标识可以采用<ip,port,group>三元组的抽象定义,其中ip指示该服务实例(具体可以是该服务实例的固定ip地址),port指示该服务实例对应的端口号,group指示该服务实例所缓存的同步失败的数据对象对应的数据库分组。当然也可以直接将<ip,port,group>作为副本一致性标记,将其写入关联数据库。
在检索请求(数据对象查询请求)发生时检查并确保每个检索节点(服务实例)的本地副本始终与存储层数据保持强一致。当认为副本数据发生同步失败时,将副本一致性标记元组<ip,port,group>作为key记录到kv数据库(关联数据库)中,表示该副本中对应某group(数据库分组)的数据对象同步失败、与存储层数据不一致。当用户需要对应某group的数据对象做检索计算时,它的请求会落到本地副本对应该group的同构服务实例其中一个检索节点上,这会触发<ip,port,group>三元组检查,若命中,则会进行用时补偿,即从数据库获取最近一次滚动更新之后的数据(当前时间点和前一次数据拉取时间点确定的本次拉取时间段对应的数据对象);若未命中,则直接使用该检索节点本地副本中对应group的数据对象进行检索计算即可。
实验表明,指向命中情形的检索请求与所有检索请求的占比小于等于万分之一,即在绝大多数情况下,不会触发数据用时补偿,对总体的耗时影响微乎其微。另外,就算触发了数据用时补偿,但补偿的代价仅为最近一次滚动更新之后的增量数据,该增量数据对应数据基准更新器的利用。
本说明书实施例提供的技术方案利用副本一致性标记提高了判断每个服务实例的本地副本是否与存储层一致的便利性和效率本。在应用中不会位读请求的关键路径上引入过多耗时代价。同时该耗时代价的引入仅存在于两次基准数据更新任务之间出现写扩散(对应数据库分组A)失败,且刚好发生了对对应数据库分组A的本地副本进行读数据的请求时。该耗时代价对应触发一次针对数据库分组A的最近一次滚动更新之后的数据对象的拉取,很大程度上也减少了在异常情况下给系统带来的耗时代价。
在实际应用中,为避免频繁的将数据变更应用到内存或显存数据可以采用变更流水压缩的方式。异步线程拉取回某group的近期变更数据后,同样提取出变更流水三元组<data,op,version>将其加入到缓存队列中,并实施一次变更流水压缩,即比对缓存队列中的op和version,得到数据对象的最终变更状态。在一些情况下可以仅根据op具体操作实施一次对内存或显存缓存数据的修改。在高qps场景下能够极大地减少频繁变更缓存数据所带来的系统性能损耗,同时提高系统效率。
追求本地副本与存储层强一致的场景下,为了确保每一次检索请求都能找到所有最新的数据,在读请求发生时也需应用一次缓存更新。变更流水压缩的基本原则是取缓存队列中最后两次变更流水三元组,比对其version大小及其执行的op操作,直接得出最终数据状态并清空当前队列。
以下表1为例,执行变更流水压缩时,只需检查最后两个变更流水<data,add,6>+<data,update,7>,此时先根据data7指示的改操作的内容对data6指示的增操作的内容进行修改合并,然后将合并后的内容信息直接应用到内存或显存缓存数据中即可。其余流水压缩合并情形可简单以此类推。缓存队列带来的另一个好处是,当发生部分变更流水缺失时,如下表中缺少version=3的变更流水记录时,并不会影响缓存数据的更新。表1中“data”、“op”、“version”、“A:add”(对应增操作)、“D:delete”(对应删操作)、“U:update”(对应改操作)可参见前述步骤S202-S203中的相关记载,这里不再赘述。
data | |||||||
op | A | U | A | D | A | U | |
version | 1 | 2 | 4 | 5 | 6 | 7 |
表1
各服务实例通过数据基准更新器滚动拉取最新数据并结合变更操作队列进行流水压缩,高qps场景下能够极大地节省服务资源,快速更新缓存数据。本说明书实施例提供的多副本数据同步方案中,通过定义抽象<data,op,version>三元组实现细粒度的特征数据版本管理。结合检索实例的基准数据滚动更新机制和副本一致性标记,不仅大大降低了系统实现的复杂度。该方案适用于海量分布式图片特征检索业务场景,基于读写分离架构,实现一种“基准更新”+“增量同步”的数据同步机制,保证任意数量的副本数据一致性的同时,基本不会给系统带来额外的耗时代价。同样也可被应用任意多实例部署的有类似的数据多副本一致性同步需求的分布式系统。
由以上本说明书实施例提供的技术方案可见,本说明书实施例中数据管理端将对数据库中数据对象的更新生成对应的携带版本信息的变更操作消息,以及将变更操作消息实时发送至对应的服务实例。服务实例利用存储于变更操作队列对本地副本进行同步。这样能够实现对多副本进行更实时有效的同步,能够更好的保证本地副本与数据库中数据对象的一致性。
本发明实施例还提供了一种数据同步系统,所述系统包括数据管理端和多个服务实例:
所述数据管理端:用于接收数据对象更新请求,所述数据对象更新请求携带有目标数据对象标识和更新信息;根据所述目标数据对象标识在数据库中确定目标数据对象,以及基于所述更新信息更新所述目标数据对象的内容信息和版本信息;基于所述更新信息和更新后的版本信息更新生成指示所述目标数据对象的变更操作消息;以及将所述变更操作消息发送至对应的服务实例;
所述对应的服务实例:用于接收所述数据管理端发送的所述变更操作消息;将所述变更操作消息写入变更操作队列中;以及利用所述变更操作队列对本地副本进行同步。
需要说明的,所述系统实施例中的系统与方法实施例基于同样的发明构思。
以下以数据管理端为执行主体介绍本发明一种数据同步方法的具体实施例,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。所述方法可以包括:
接收数据对象更新请求,所述数据对象更新请求携带有目标数据对象标识和更新信息;
根据所述目标数据对象标识在数据库中确定目标数据对象,以及基于所述更新信息更新所述目标数据对象的内容信息和版本信息;
基于所述更新信息和更新后的版本信息更新生成指示所述目标数据对象的变更操作消息;
将所述变更操作消息发送至对应的服务实例,以使所述对应的服务实例将所述变更操作消息存储于变更操作队列中,以及基于所述变更操作队列对本地副本进行同步。
本发明实施例还提供了一种数据同步装置,如图9所示,所述装置包括:
更新请求接收模块910:用于接收数据对象更新请求,所述数据对象更新请求携带有目标数据对象标识和更新信息;
数据对象更新模块920:用于根据所述目标数据对象标识在数据库中确定目标数据对象,以及基于所述更新信息更新所述目标数据对象的内容信息和版本信息;
变更操作消息生成模块930:用于基于所述更新信息和更新后的版本信息更新生成指示所述目标数据对象的变更操作消息;
变更操作消息发送模块940:用于将所述变更操作消息发送至对应的服务实例,以使所述对应的服务实例将所述变更操作消息存储于变更操作队列中,以及基于所述变更操作队列对本地副本进行同步。
需要说明的,所述装置实施例中的装置与方法实施例基于同样的发明构思。
以下以服务实例为执行主体介绍本发明一种数据同步方法的具体实施例,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。所述方法可以包括:
接收数据管理端发送的变更操作消息;
将所述变更操作消息写入变更操作队列中;
利用所述变更操作队列对本地副本进行同步;
其中,所述变更操作消息是由所述数据管理端基于对存储于数据库中的数据对象的内容信息和版本信息进行更新而生成的,所述变更操作消息携带有更新信息和更新后的版本信息。
本发明实施例还提供了一种数据同步装置,如图10所示,所述装置包括:
变更操作消息接收模块1010:用于接收数据管理端发送的变更操作消息;
变更操作队列写入模块1020:用于将所述变更操作消息写入变更操作队列中;
本地副本同步模块1030:用于利用所述变更操作队列对本地副本进行同步;
其中,所述变更操作消息是由所述数据管理端基于对存储于数据库中的数据对象的内容信息和版本信息进行更新而生成的,所述变更操作消息携带有更新信息和更新后的版本信息。
需要说明的,所述装置实施例中的装置与方法实施例基于同样的发明构思。
本发明实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的数据同步方法。
进一步地,图11示出了一种用于实现本发明实施例所提供的数据同步方法的电子设备的硬件结构示意图,所述电子设备可以参与构成或包含本发明实施例所提供的数据同步装置。如图11所示,电子设备110可以包括一个或多个(图中采用1102a、1102b,……,1102n来示出)处理器1102(处理器1102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1104、以及用于通信功能的传输装置1106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图11所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备110还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。
应当注意到的是上述一个或多个处理器1102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到电子设备110(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器1104可用于存储应用软件的软件程序以及模块,如本发明实施例中所述的数据同步方法对应的程序指令/数据存储装置,处理器1102通过运行存储在存储器114内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种数据同步方法。存储器1104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1104可进一步包括相对于处理器1102远程设置的存储器,这些远程存储器可以通过网络连接至电子设备110。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置1106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子设备110的通信供应商提供的无线网络。在一个实例中,传输装置1106包括一个网络适配器(NetworkInterfaceController,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实施例中,传输装置1106可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与电子设备110(或移动设备)的用户界面进行交互。
本发明的实施例还提供了一种存储介质,所述存储介质可设置于电子设备之中以保存用于实现方法实施例中一种数据同步方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的数据同步方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,所述方法包括:
接收数据对象更新请求,所述数据对象更新请求携带有目标数据对象标识和更新信息;
根据所述目标数据对象标识在数据库中确定目标数据对象,以及基于所述更新信息更新所述目标数据对象的内容信息和版本信息;
基于所述更新信息和更新后的版本信息更新生成指示所述目标数据对象的变更操作消息;
将所述变更操作消息发送至对应的服务实例,以使所述对应的服务实例将所述变更操作消息存储于变更操作队列中,以及基于所述变更操作队列对本地副本进行同步。
2.根据权利要求1所述的方法,其特征在于,所述将所述变更操作消息发送至对应的服务实例之后,所述方法还包括:
当没有接收到所述对应的服务实例返回的确认接收消息时,为所述对应的服务实例的标识添加副本同步失败标记,以及将添加标记后的标识写入关联数据库中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在存储于所述数据库中的每个数据对象的内容信息中设置状态标识位,所述状态标识位用于存放指示所述数据对象当前是否处于有效状态的标识;
相应的,所述基于所述更新信息更新所述目标数据对象的内容信息和版本信息,包括:
当所述更新信息指示删除数据对象时,将指示所述目标数据对象当前处于无效状态的标识放入所述目标数据对象的状态标识位中,以及为所述目标数据对象设置删除期限。
4.一种数据同步方法,其特征在于,所述方法包括:
接收数据管理端发送的变更操作消息;
将所述变更操作消息写入变更操作队列中;
利用所述变更操作队列对本地副本进行同步;
其中,所述变更操作消息是由所述数据管理端基于对存储于数据库中的数据对象的内容信息和版本信息进行更新而生成的,所述变更操作消息携带有更新信息和更新后的版本信息。
5.根据权利要求4所述的方法,其特征在于,所述利用所述变更操作队列同步本地副本,包括:
确定所述本地副本中每个数据对象对应的第一最大版本号;
基于所述变更操作队列确定所述每个数据对象对应的第二最大版本号;
基于所述第一最大版本号和所述第二最大版本号确定版本号差值和对应数据对象的目标版本号;
基于所述版本号差值在候选数据源中确定所述对应数据对象的目标内容源,以及基于所述目标内容源和所述目标版本号对所述本地副本进行同步,所述候选数据源包括所述第一最大版本号所指示的内容信息和所述变更操作队列中记录的变更操作消息。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括从所述数据库定期获取数据对象:
确定目标时间段;
从所述数据库获取对应所述目标时间段的数据对象。
7.根据权利要求6所述的方法,其特征在于,所述确定目标时间段,包括:
当当前时间点符合预设时间触发条件时,确定前一次数据拉取时间点和时间补偿值;
基于所述当前时间点、所述前一次数据拉取时间点和所述时间补偿值得到所述目标时间段;
相应的,所述从所述数据库获取对应所述目标时间段的数据对象,包括:
确定所述本地副本对应的数据库分片位置;
利用异步线程分别从所述对应的数据库分片位置拉取对应所述目标时间段的数据对象。
8.根据权利要求4所述的方法,其特征在于,所述方法还包括:
响应于接收到的数据对象查询请求,向关联数据库发送命中查询请求;
当接收到所述关联数据库返回的未命中结果时,基于所述本地副本进行数据对象查询;
当接收到所述关联数据库返回的命中结果时,基于当前时间点和前一次数据拉取时间点确定本次拉取时间段,从所述数据库拉取对应所述本次拉取时间段的数据对象,基于拉取到的数据对象更新所述本地副本,基于更新后的本地副本进行数据对象查询;
其中,所述关联数据库存储副本同步失败标记和对应的服务实例的标识,所述副本同步失败标记是由数据管理端基于所述对应的服务实例未返回确认接收消息而生成的,所述确认接收消息指示所述数据管理端向所述对应的服务实例发送的变更操作消息接收成功。
9.一种数据同步装置,其特征在于,所述装置包括:
更新请求接收模块:用于接收数据对象更新请求,所述数据对象更新请求携带有目标数据对象标识和更新信息;
数据对象更新模块:用于根据所述目标数据对象标识在数据库中确定目标数据对象,以及基于所述更新信息更新所述目标数据对象的内容信息和版本信息;
变更操作消息生成模块:用于基于所述更新信息和更新后的版本信息更新生成指示所述目标数据对象的变更操作消息;
变更操作消息发送模块:用于将所述变更操作消息发送至对应的服务实例,以使所述对应的服务实例将所述变更操作消息存储于变更操作队列中,以及基于所述变更操作队列对本地副本进行同步。
10.一种数据同步装置,其特征在于,所述装置包括:
变更操作消息接收模块:用于接收数据管理端发送的变更操作消息;
变更操作队列写入模块:用于将所述变更操作消息写入变更操作队列中;
本地副本同步模块:用于利用所述变更操作队列对本地副本进行同步;
其中,所述变更操作消息是由所述数据管理端基于对存储于数据库中的数据对象的内容信息和版本信息进行更新而生成的,所述变更操作消息携带有更新信息和更新后的版本信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010831535.9A CN112084258A (zh) | 2020-08-18 | 2020-08-18 | 一种数据同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010831535.9A CN112084258A (zh) | 2020-08-18 | 2020-08-18 | 一种数据同步方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112084258A true CN112084258A (zh) | 2020-12-15 |
Family
ID=73728254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010831535.9A Pending CN112084258A (zh) | 2020-08-18 | 2020-08-18 | 一种数据同步方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112084258A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112765187A (zh) * | 2020-12-30 | 2021-05-07 | 北京懿医云科技有限公司 | 商品数据同步方法与商品数据传输系统 |
CN113407560A (zh) * | 2021-08-19 | 2021-09-17 | 太平金融科技服务(上海)有限公司深圳分公司 | 更新消息处理方法、数据同步方法、配置信息配置方法 |
CN113868231A (zh) * | 2021-12-03 | 2021-12-31 | 南昌龙旗信息技术有限公司 | 数据结构的更新方法及装置 |
CN114153862A (zh) * | 2021-12-09 | 2022-03-08 | 腾讯科技(成都)有限公司 | 业务数据处理方法、装置、设备及存储介质 |
CN114579667A (zh) * | 2022-04-28 | 2022-06-03 | 深圳市华曦达科技股份有限公司 | 一种HBase数据增量同步的方法、装置及系统 |
CN114579311A (zh) * | 2022-03-04 | 2022-06-03 | 北京百度网讯科技有限公司 | 执行分布式计算任务的方法、装置、设备以及存储介质 |
CN114676166A (zh) * | 2022-05-26 | 2022-06-28 | 阿里巴巴(中国)有限公司 | 数据处理方法及装置 |
CN115510166A (zh) * | 2022-11-23 | 2022-12-23 | 云账户技术(天津)有限公司 | 数据同步服务的方法、装置、远程平台和电子设备 |
CN116414579A (zh) * | 2023-02-21 | 2023-07-11 | 北京友友天宇系统技术有限公司 | 基于分布式群组通信实现的多副本间数据一致性的方法 |
CN116975076A (zh) * | 2023-07-28 | 2023-10-31 | 深圳市丕微科技企业有限公司 | 一种多终端交互的数据传输控制方法及系统 |
CN116414579B (zh) * | 2023-02-21 | 2024-05-10 | 北京友友天宇系统技术有限公司 | 基于分布式群组通信实现的多副本间数据一致性的方法 |
-
2020
- 2020-08-18 CN CN202010831535.9A patent/CN112084258A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112765187A (zh) * | 2020-12-30 | 2021-05-07 | 北京懿医云科技有限公司 | 商品数据同步方法与商品数据传输系统 |
CN113407560A (zh) * | 2021-08-19 | 2021-09-17 | 太平金融科技服务(上海)有限公司深圳分公司 | 更新消息处理方法、数据同步方法、配置信息配置方法 |
CN113868231A (zh) * | 2021-12-03 | 2021-12-31 | 南昌龙旗信息技术有限公司 | 数据结构的更新方法及装置 |
CN113868231B (zh) * | 2021-12-03 | 2022-03-18 | 南昌龙旗信息技术有限公司 | 数据结构的更新方法及装置 |
CN114153862A (zh) * | 2021-12-09 | 2022-03-08 | 腾讯科技(成都)有限公司 | 业务数据处理方法、装置、设备及存储介质 |
CN114579311A (zh) * | 2022-03-04 | 2022-06-03 | 北京百度网讯科技有限公司 | 执行分布式计算任务的方法、装置、设备以及存储介质 |
CN114579667A (zh) * | 2022-04-28 | 2022-06-03 | 深圳市华曦达科技股份有限公司 | 一种HBase数据增量同步的方法、装置及系统 |
CN114676166A (zh) * | 2022-05-26 | 2022-06-28 | 阿里巴巴(中国)有限公司 | 数据处理方法及装置 |
CN115510166A (zh) * | 2022-11-23 | 2022-12-23 | 云账户技术(天津)有限公司 | 数据同步服务的方法、装置、远程平台和电子设备 |
CN116414579A (zh) * | 2023-02-21 | 2023-07-11 | 北京友友天宇系统技术有限公司 | 基于分布式群组通信实现的多副本间数据一致性的方法 |
CN116414579B (zh) * | 2023-02-21 | 2024-05-10 | 北京友友天宇系统技术有限公司 | 基于分布式群组通信实现的多副本间数据一致性的方法 |
CN116975076A (zh) * | 2023-07-28 | 2023-10-31 | 深圳市丕微科技企业有限公司 | 一种多终端交互的数据传输控制方法及系统 |
CN116975076B (zh) * | 2023-07-28 | 2024-05-07 | 深圳市丕微科技企业有限公司 | 一种多终端交互的数据传输控制方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112084258A (zh) | 一种数据同步方法和装置 | |
US20200186602A1 (en) | Continuous backup of data in a distributed data store | |
US11120152B2 (en) | Dynamic quorum membership changes | |
US10642861B2 (en) | Multi-instance redo apply | |
EP3811596B1 (en) | Hierarchical namespace with strong consistency and horizontal scalability | |
US9146934B2 (en) | Reduced disk space standby | |
US7653668B1 (en) | Fault tolerant multi-stage data replication with relaxed coherency guarantees | |
KR101914019B1 (ko) | 분산 데이터베이스 시스템들을 위한 고속 장애 복구 | |
KR101771246B1 (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
KR101764897B1 (ko) | 데이터베이스 엔진 및 개별 분산 저장 서비스를 갖는 데이터베이스 시스템 | |
US8108634B1 (en) | Replicating a thin logical unit | |
US20170024315A1 (en) | Efficient garbage collection for a log-structured data store | |
EP3811229B1 (en) | Hierarchical namespace service with distributed name resolution caching and synchronization | |
CN105493474B (zh) | 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法 | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
CN103501319A (zh) | 一种低延迟的面向小文件的分布式存储系统 | |
CN112307119A (zh) | 数据同步方法、装置、设备及存储介质 | |
US9928174B1 (en) | Consistent caching | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN109726211B (zh) | 一种分布式时序数据库 | |
CN109992447B (zh) | 数据复制方法、装置及存储介质 | |
Ghandeharizadeh et al. | Rejig: a scalable online algorithm for cache server configuration changes | |
CN114661690A (zh) | 多版本并发控制和日志清除方法、节点、设备和介质 | |
CN114205368B (zh) | 数据存储系统、控制方法、装置、电子设备和存储介质 | |
US11914571B1 (en) | Optimistic concurrency for a multi-writer database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230920 Address after: 100190 Beijing Haidian District Zhichun Road 49 No. 3 West 309 Applicant after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Applicant before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TA01 | Transfer of patent application right |