一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据同步方法、装置、介质及设备与流程

2021-11-10 02:59:00 来源:中国专利 TAG:


1.本公开涉及云存储技术领域,具体而言,涉及一种数据同步方法、数据同步装置,以及计算机可读存储介质及终端。


背景技术:

2.云存储服务能够对有效保证所存储数据的安全性以及可靠性。而云存储服务的跨区域复制是通过在云存储服务的不同区域的数据中心显式地创建一个备份,从而防止数据在发生不可逆损坏时,仍然有安全、可用的备份数据。
3.但是,云存储服务的跨区域复制过程中,多区域间进行同步用户数据的难点在于,将源存储空间产生的上传、修改、删除等操作异步地、快速地同步到目标存储空间,并在目标存储空间产生与源存储空间一样的数据对象副本,以保证源存储数据与拷贝数据的一致性。
4.相关技术提供的数据同步方案存在不支持将数据从单一源存储空间同时向多个目标存储空间复制的问题。可见,相关技术提供的数据同步方案可用性有待提高,同时存在数据同步效率较低的问题。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开实施例的目的在于提供一种数据同步方法、数据同步装置、计算机可读存储介质及终端,进而至少在一定程度上提升了云存储服务的数据同步效率,进而提升云存储服务的可用性。
7.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
8.根据本公开实施例的一个方面,提供了一种数据同步方法,包括:接收由源存储空间分别向多个目标存储空间进行数据同步的多个任务,根据任务确定被同步数据对应的数据信息;将多个任务分别对应的数据信息存储至消息队列中;从消息队列中并行读取多个任务分别对应的数据信息,并基于多个任务分别对应的数据信息从源存储空间获取被同步数据;将多个任务分别对应的被同步数据并行发送至对应的目标存储空间。
9.根据本公开实施例的在一个方面,提供了一种数据同步装置,包括:数据信息确定模块,用于接收由源存储空间分别向多个目标存储空间进行数据同步的多个任务,根据任务确定被同步数据对应的数据信息;存储模块,用于将多个任务分别对应的数据信息存储至消息队列中;被同步数据获取模块,用于从消息队列中并行读取多个任务分别对应的数据信息,并基于多个任务分别对应的数据信息从源存储空间获取被同步数据;并行发送模块,用于将多个任务分别对应的被同步数据并行发送至对应的目标存储空间。
10.根据本公开实施例的又一个方面,提供了一种计算机可读存储介质,其上存储有
计算机程序,所述程序被处理器执行时实现如上述实施例中所述的数据同步方法。
11.根据本公开实施例的还一个方面,提供了一种终端,包括:包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述实施例中所述的数据同步方法。
12.本公开实施例提供的技术方案可以包括以下有益效果:
13.在本公开的一些实施例所提供的技术方案中,对于由同一源存储空间分别向目标存储空间进行数据同步的多个任务进行以下处理:根据任务确定被同步数据对应的数据信息,然后将多个任务分别对应的数据信息存储至消息队列中,并从消息队列中并行读取多个任务分别对应的数据信息。可见本技术方案基于消息队列实现对上述多个任务的同步处理。进一步地,基于多个任务分别对应的数据信息从源存储空间获取被同步数据,再将上述多个任务分别对应的被同步数据并行发送至对应的目标存储空间。从而实现将数据从同一源存储空间同时向多个目标存储空间进行复制,有效提升了数据同步效率,进而提升云存储服务的可用性。
14.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
15.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
16.图1示意性示出了一种相关技术中云存储服务的数据同步方案的场景图。
17.图2示意性示出了另一种相关技术中云存储服务的数据同步方案的场景图。
18.图3示意性示出了根据本公开一示例性的实施例中云存储服务的数据同步方案的场景图。
19.图4示意性示出了根据本公开另一示例性的实施例中云存储服务的数据同步方案的场景图。
20.图5示意性示出了根据本公开一示例性的实施例中数据同步系统的构架图。
21.图6示意性示出了根据本公开一示例性的实施例中数据同步方法的流程图。
22.图7示意性示出了根据本公开另一示例性的实施例中数据同步方法的流程图。
23.图8示意性示出了本公开一实施例中级联数据同步方案的场景图。
24.图9示意性示出了本公开一实施例中由同一源存储空间向多目标存储空间同时进行数据同步方案的场景图。
25.图10示意性示出了根据本公开一示例性的实施例中数据同步装置的结构图。
26.图11示意性示出了根据本公开另一示例性的实施例中数据同步装置的结构图。
27.图12示意性示出了根据本公开一示例性的实施例中终端的结构图。
具体实施方式
28.为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施例
方式作进一步地详细描述。
29.下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
30.在本公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本公开中的具体含义。此外,在本公开的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
31.随着移动互联网的普及以及手持设备、pc、可穿戴产品产生出海量数据的存储需求。尤其伴随5g网络的兴起,数据将呈现指数规模增长。而云存储服务是伴随着海量存储需求而兴起的一种提供较为简单、统一、便捷的数据存取服务。云存储服务的能够有效保证所存储数据的安全性、可靠性。
32.以下对云服务的数据同步方案的相关名词进行解释:
33.区域(region):表示云存储服务的数据中心所在的区域,物理位置。用户可以根据费用、请求来源等综合选择数据存储的region。一般来说,距离用户更近的region访问速度更快。
34.存储空间:存储空间(bucket)是用户用于存储对象(object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。
35.跨区域数据同步/复制:云存储服务提供的一种跨地理区域进行数据容灾能力,通过创建跨区域复制规则,在同一个账号下,将一个桶/存储空间(bucket)中的数据自动地、异步地复制到不同区域的另外一个桶。
36.具体的,云服务的数据同步/复制是通过在云存储服务的不同区域的数据中心显式地创建一个备份,能够防止数据在发生不可逆损坏时,提供安全、可用的备份数据。另外,还可以通过在多个地域就近访问云服务数据副本来提升访问效率。例如可以在全球多个区域间,通过配置跨区域复制,将用户的数据自动同步,这样用户访问数据时就近访问相应区域的数据,能最大限度的缩短客户访问数据的时延。
37.通常,数据同步/复制可以指数据库中主数据库和从数据库间的复制,也可以指分布式集群中多个集群之间的复制,还可以指分布式系统中多个副本之间的复制。它的难点在于数据通常是不断变化的,需要持续的将变更反映到多个数据拷贝上,并保证这些拷贝是完全一致的。对于云存储服务来说,多个区域间进行同步用户数据的难点在于将源存储空间产生的上传、修改、删除等操作异步地、快速地同步到目标存储空间,并最终在目标存储空间产生与源存储空间一样的数据对象副本。
38.对于云服务系统来说,用户需要复制的源存储空间中的历史对象数据量可能非常大(百亿级甚至千亿级),需要保障跨区域复制过程的高性能。以及,在跨区域数据复制过程中,当不同区域的数据中心间的网络传输时延、带宽、网络不稳定时,如何保障数据同步的
高可靠性及高可用性是至关重要的。
39.然而,在用户使用现有的云存储服务的跨区域数据同步方案时,均存在一些限制。例如:云存储服务提供者限制开启跨区域同步的条件为,进行数据同步的两个bucket不被允许与另外的bucket的同步。参考图1,region

1的bucket

a与region

2的bucket

b之间进行数据同步的同时,region

1的bucket

a与region

3的bucket

c之间不被允许进行数据同步。
40.又例如,同一对象数据从源bucket到目标bucket的迁移只被允许迁移一次。参考图2,存储于region

1的bucket

a中的数据s,通过跨区域数据同步至region

2的bucket

b中之后,该数据s将不被允许由region

2的bucket

b同步至region

3的bucket

c中。
41.相关技术中存在的上述技术问题不利于数据的同步效率进而使得云存储服务的可用性较低。
42.针对上述相关技术中存在的技术问题,提出本公开的云存储服务的数据同步方案。本公开基于云存储服务的业务特点以及用户需求,提出跨区域数据同步方案。本方案可以应用至多地域备份场景、数据异步同步场景,也可以在应用至多区域间数据同步的场景,可以有效提升分布存储系统、多活应用等的可靠性和可用性。
43.以下在介绍数据同步方法之前,先介绍数据同步系统的组成以及功能。至于各组件分别对应功能的具体实现将在方法实施例部分具体介绍。
44.其中,图5示意性示出了根据本公开一示例性的实施例中数据同步系统的构架图。具体地,图5示出能够关于将存储空间bucket

x的数据同步至存储空间bucket

y的同步任务的执行过程,即bucket

x作为该同步任务的源存储空间,bucket

y作为该任务的目标存储空间。参考图5,由于bucket

x处于region

1的数据库510,bucket

y处于region

2的数据库520,因此该任务也属于跨区域region的数据同步。同时可见,存在于region

1的数据库作510为该同步任务的源数据库,存在于region

2的数据库520作为该同步任务的目标数据库。
45.参考图5,为了完成上述同步任务,将涉及:任务管理组件(taskmanager组件)501、日志同步组件(logsyncer组件)502、同步处理组件(syncworker组件)503、消息队列(message queue)504,以及数据上传接口(s3 service接口)505。针对上述同步任务的执行过程如下:
46.日志同步组件(logsyncer组件)502用于将源数据库中的操作日志(包括对源存储空间的新增、修改、删除变更等信息)拉取出来;示例性的,可以将拉取出的操作日志存储于一消息队列中,以供后续任务管理组件(taskmanager组件)501消费。
47.任务管理组件(taskmanager组件)501用于接收同步任务,以及负责将同步任务拆解为:历史数据同步子任务和增量数据同步子任务。
48.其中,对于历史数据同步子任务,由taskmanager组件501获取(通过列表查询方式)源存储空间bucket

x中被同步数据的元信息,并将其封装投递到消息队列(message queue)504。对于增量数据同步子任务,由taskmanager组件501获取被同步数据相关的操作日志(由上述logsyncer组件502拉取),再将其封装投递到消息队列(message queue)504。从而,上述同步任务中被同步数据相对应的元信息和操作日志均被封装后投递至消息队列(message queue)504。
49.同步处理组件(syncworker组件)503用于从消息队列(message queue)504中并行读取同步任务对应的封装对象,以及还用于基于封装对象从源存储空间bucket

x获取被同步数据。
50.进一步地,通过数据上传接口(s3 service接口)505将上述同步任务对应的被同步数据上传至目标存储空间bucket

y。
51.其中,同步处理组件(syncworker组件)503还用于对上述消息队列(message queue)504进行幂等处理。其具体原理将在后续方法实施例中详细介绍。
52.关于上述数据同步系统中各个组件功能的具体实现也将在方法实施例中进行具体说明。
53.以下将结合附图6

附图8,对本公开实施例提供的数据同步方法进行详细介绍。
54.其中,图6示出了根据本公开一示例性的实施例中数据同步方法的流程示意图。参考图6,该方法包括以下步骤:
55.s610,接收由源存储空间分别向多个目标存储空间进行数据同步的多个任务,根据任务确定被同步数据对应的数据信息;
56.s620,将多个任务分别对应的数据信息存储至消息队列中;
57.s630,从消息队列中并行读取多个任务分别对应的数据信息,并基于多个任务分别对应的数据信息从源存储空间获取被同步数据;以及,
58.s640,将多个任务分别对应的被同步数据并行发送至对应的目标存储空间。
59.图6所示实施例所提供的技术方案,能够支持将数据从单一源存储空间同时向多个目标存储空间复制(如图3所示:region

1的bucket

a与region

2的bucket

b之间进行数据同步的同时,region

1的bucket

a与region

3的bucket

c等之间不被允许进行数据同步),本技术方案能够有效提升了云存储服务的可用性以及数据同步效率。同时,还能够提高用户的数据安全性和接入访问性能(就近访问)。
60.以下结合图5所示系统中各个组件,对图6所示实施例所包含的各个步骤的具体实施方式进行详细介绍:
61.在s610中,接收由源存储空间分别向多个目标存储空间进行数据同步的多个任务。
62.在示例性的实施例中,每个上述任务可以包括被同步对象标识、源存储空间标识和目标存储空间标识。例如,用户将当前存储于bucket

a的照片在的bucket

b进行异地备份,则其发出的任务包含:待备份照片名称(被同步对象标识)、bucket

a标识(源存储空间标识)和的bucket

b标识(目标存储空间标识)。其中,源存储空间表示该请求任务中数据被同步前所在的存储空间,目标存储空间表示该请求任务中数据将被同步至的存储空间。
63.在示例性的实施例中,可以根据任务中的源存储空间标识确定关于同一存储空间的数据同步任务。具体的例如参考图3,该图示出由同一源存储空间分别向多个目标存储空间进行数据同步的多个任务。具体的,源存储空间为源存储空间region

1的bucket

a,目标存储空间包括:region

2的bucket

b、region

3的bucket

c、
……
。上述多个任务可将region

1的bucket

a中的数据分别同步至region

2的bucket

b、region

3的bucket

c、
……

64.示例性的,图7示意性示出了根据本公开另一示例性的实施例中数据同步方法的
流程图。以下结合图7来介绍s610

s640的具体实施方式。
65.参考图7,作为s610中“根据任务确定被同步数据对应的数据信息”的一种具体实施方式:在s710中,在源存储空间中获取被同步对象的元信息。以及,在s710’中,获取关于被同步对象的操作日志。
66.在示例性的实施例中,根据任务中携带的被同步数据标识,在源存储空间中获取被同步数据的元信息,以及获取关于被同步数据的操作日志,并将元信息和操作日志确定为被同步数据对应的数据信息。
67.由于源存储空间的数据可能是不断变化的,为了保证在执行被同步数据在源存储空间与目标存储空间之间的一致性,本示例性的实施例中,将每个任务均进行任务拆解,分成历史数据同步子任务和增量数据同步子任务。其中,一方面,为了实现历史数据同步子任务,本技术方案需在源存储空间中获取被同步对象的元信息,以进一步地根据上述元信息确定上述目标任务对应的历史数据。另一方面。为了实现增量数据同步子任务,本技术方案需获取关于被同步对象的操作日志,以进一步地根据上述操作日志确定上述目标任务对应的增量数据。其中,上述增量数据为配置跨区域复制任务后,源存储空间产生的上传、修改等操作。
68.具体地,关于上述s710中被同步对象的元信息的获取实施例:
69.在示例性的实施例中,对于配置跨区域复制任务后源存储空间并没有产生的上传、修改等操作的历史数据,可以使用云存储服务提供的对象列举接口将源存储空间中的数据元信息列表查询后,获取到上述目标任务对应的源存储空间中被同步对象的元信息。
70.本实施例中,具体可以由taskmanager组件501根据用户配置的上述目标任务,调用源存储空间的云存储服务接口api将源存储空间中的被同步对象的元信息(包括:存储空间信息bucket、对象名、实体标签(entity tag,etag)校验值、上传时间、对象大小等信息)列举出来,从而获取到上述目标任务中被同步对象的元信息。
71.关于上述s710’中被同步对象的操作日志的获取实施例:
72.在示例性的实施例中,对源存储空间产生的增量数据的同步,在实现中可以采用基于源存储空间的复制日志进行处理。其中,复制日志中记录有对源存储空间的数据插入操作、数据修改操作、数据删除操作等信息。以数据库mongodb的复制日志oplog为例,其中记录有操作时间、操作类型(包括:新增/插入操作、修改操作、删除操作等)、数据的源空间、key、实体标签etag校验值等信息。
73.在示例性的实施例中,具体可以由logsyncer组件502从源数据库的复制日志中拉取数据,并根据用户配置的跨区域数据同步任务过滤出有关被同步对象的操作日志,示例性的,还可以将拉取到的操作日志发送到消息队列中(需要注意的是,该消息队列可以是后续用于存储封装对象的消息队列(message queue)504,也可以是其他消息队列)。进一步地,taskmanager组件501消费上述消息队列中logsyncer组件502生产的上述与被同步对象相关的操作日志,从而获取到上述目标任务对应的被同步对象的操作日志。
74.需要注意的是,上述数据信息还包括历史同步信息,历史同步信息表示被同步数据用于级联同步。更为具体的,在操作日志中包括上述历史同步信息,进而利用该信息实现级联同步数据。即能够支持同一对象数据从源bucket到目标bucket的迁移次数可以是多次(如图4所示:存储于region

1的bucket

a中的数据s,通过跨区域数据同步至region

2的
bucket

b中之后,在bucket

b中产生包括历史同步信息的操作日志,说明数据s为由bucket

a复制至bucket

b中的。进一步地,对于将该数据s由bucket

b同步至bucket

c的任务时,基于上述同步信息执行由region

2的bucket

b同步至region

3的bucket

c中的任务),从而有效解决多个存储空间间的级联传递复制问题,进而有效提升了云存储服务的可用性以及可扩展性。相关实现方式将在图8对应的实施例中进行详细阐述。
75.继续参考图7,作为s620的一种具体实施方式:在s720中,对元信息进行封装得到第一封装对象,并将第一封装对象发送至消息队列中;在s720’中,对操作日志进行封装得到第二封装对象,并将第二封装对象发送至消息队列中。
76.示例性的,为了提升对消息队列中对象的消费速度进而提升数据同步效率,上述第一封装对象和上述第二封装对象的格式相同。具体地,对于s710产生的元信息:由taskmanager组件501将其封装成目标格式(如,sync job message格式)的第一封装对象,并将其投递到消息队列(message queue)504。对于s710’产生的操作日志:也由taskmanager组件501将其封装成目标格式(如,sync job message格式)的第二封装对象,并将其投递到消息队列(message queue)504。
77.继续参考图7,作为s630中“从消息队列中并行读取多个任务分别对应的数据信息”的一种具体实施方式:在s730中,从消息队列并行地获取第一封装对象和第二封装对象。
78.需要说明的是,一方面,将关于上述操作信息和元信息封装为相同的格式,有利于实现单对象数据的复制作业,从而有利于提升数据同步处理效率。另一方面,将关于由同一源存储空间向多个目标存储空间进行数据同步的多个任务的数据信息,均被封装后投递至同一消息队列中的技术效果在于:根据为该源存储空间上设置了多少复制任务,根据各个任务数据信息分别确定上述目标格式的封装对象,将每个任务对应的封装对象投递至上述消息队列,这样syncworker组件对各个任务的封住对象进行并行处理,达到自动将源存储空间数据复制到多个目标地域的存储空间中的技术效果(如图3)。
79.其中,上述消息队列(message queue)504用于存储源存储空间各个任务的数据信息的封装对象,其具有较高的性能和可靠性,能够持久化保存数据功能,以保证消息队列中的数据不丢失,从而保证云存储服务的数据同步方案的高可靠性。需要注意的是,为了便于消息队列的维护,上述消息队列(message queue)504中的数据不必须有序,即消息队列中的信息可以出现重复。而针对该问题,本技术方案由syncworker组件503实现对消息队列的幂等处理,以保证源存储区域与目标存储区域数据的最终一致性。其中,通过幂等处理之后,同一个操作执行多次与执行一次的效果是一样的。
80.继续参考图6,在s630中,还基于多个任务分别对应的数据信息从源存储空间获取被同步数据。
81.在示例性的实施例中,可以通过部署在各个目标存储区域中的复制模块,从消息队列(message queue)504中消费封装对象(包括:第一封装对象和第二封装对象),再从源存储空间下载被同步数据并上传到目标存储空间。具体地,可以继续参考图7,其中,s740、s740’以及s750可以作为s630中获取被同步数据具体实施方式。
82.在s740中,根据所述元信息,在所述源存储空间下载数据得到被同步数据中的历史数据。
83.在示例性的实施例中,由syncworker组件503并行地消费上述消息队列中的封装对象,由于上述第一封装对象和上述第二封装对象的格式可以相同,因此消费上述封装对象时并不需要关注其包含元信息还是包含操作日志,从而有效提升了数据同步效率。
84.对于包含元信息的封装对象(即上述第一封装对象),通过调用源存储空间的云存储服务接口api并根据元信息进行数据下载,并可以得到被同步数据中的历史数据。
85.在s740’中,在操作日志为新增操作类型的情况下,基于每个任务对应的数据信息从源存储空间获取对应的被同步数据,包括:下载新增操作类型对应的数据,得到被同步数据中的增量数据。
86.例如,在配置跨区域复制任务后源存储空间被新上传了图片y,因此,在源存储空间产生关于该次修改的操作日志y。为了保证源存储空间与目标存储空间之间的一致性,需根据操作日志y下载图片y。
87.在s750中,在操作日志为修改类型的情况下:在历史数据中确定出目标数据,并根据修改操作类型处理目标数据得到被同步数据中的增量数据。
88.例如,被同步数据为图片x,在配置跨区域复制任务后产生过修改(如,图片x的像素值被改变),因此,在源存储空间产生关于该次修改的操作日志x。则关于该图片x,通过s740可以获取被修改之前的图片(即历史数据),则在步骤s750中先在历史数据中定位得到被修改之前的图片x,然后记载在操作日志x中修改数据对其进行修改得到像素被改变后的图片x。从而可以有效保证数据在源存储空间与目标存储空间的一致性。
89.需要注意的是,对源存储空间中的删除操作进行同步在技术上是可以实现的。但是,为了确保不会因误删而导致用户数据所造成数据丢失,本技术方案中不对源存储空间中的删除操作进行同步。
90.继续参考图7,作为步骤s640的具体实施方式,在s760中,将历史数据和增量数据上传至目标存储空间。在示例性的实施例中,将上述历史数据以及上述操作数据通过调用数据上传接口(s3 service接口)505(其中,s3 service接口为一种云存储服务提供的兼容s3协议接口)的方式流式上传至目标存储区域的存储空间,能够进一步提升了数据同步效率。
91.在示例性的实施例中,为了确保被同步数据的内容完整性以及数据一致性,在上传至目标存储空间的过程中还对多个任务分别对应的被同步数据的数据内容以及时间顺序进行校验。并在校验通过的情况下,则将被同步数据上传至目标存储空间。
92.具体地,校验携带在所述元信息和/或所述操作日志中的实体标签信息etag,从而校验所处理的数据是否为最新版本的数据,以确保被同步数据的内容完整性。对于同名key的先后上传,如果产生乱序,造成覆盖数据的问题使用基于无冲突数据复制类型(conflict

free replicated data types,crdt)来保障两边业务数据的最终一致性,并能够防止对目标存储区域内数据的错误覆盖,从而有利于保证云存储服务的数据同步方案的高可靠性。
93.本技术方案中,基于crdt来实现源存储空间与目标存储空间间的数据一致性。其中,crdt是指在分布式系统中一种能够无需合作就可以在网络中多个主机中并行地复制且能够解决可能的不一致性的一种数据结构。
94.在示例性的实施例中,还基于历史数据的上传时间和/或增量数据的更新时间,对
被同步数据的实体标签信息进行原子操作。具体地执行原子操作中的比较和交换(compare and swap,cas),以确保被同步数据的最终一致性,即使跨区域出现网络不稳定、消息乱序、延迟,依然能达到多副本间的最终一致性。
95.其中,对于分布式的复制系统来说,保障数据间多副本的一致性模型尤为重要。目前业内主要的一致性模型有以下几种类型:严格一致性、顺序一致性、因果一致性及最终一致性。以上几种一致性模型的区别主要是使用的限制性强弱,实现复杂度以及在分布式系统中性能的优劣表现。对于跨区域异步复制需要解决海量数据同步的系统来说,一般需实现最终一致性。
96.在示例性的实施例中,在通过syncworker组件503进行数据下载时,将元信息中的上传时间、etag校验值均进行下载。若出现相关信息相同的元数据已经存在的情况时,则跳过复制,从而避免循环配置复制(如,bucket

a

bucket

b

bucket a)的问题,进而不必要的数据处理算力消耗。
97.本技术方案不仅实现了将数据从单一源存储空间同时向多个目标存储空间复制,还能够实现同一对象数据从源bucket到目标bucket的迁移次数可以是多次。示例性的,图8示意性示出了根据申请一示例性的实施例中级联数据同步方案的场景图。
98.参考图8,用户向region

1上传存储对象object,为了实现存储对象object在三个region的同步。本技术方案包含两个任务,任务

1:object从region

1同步到region

2,以及任务

2:被同步至region

2的object从region

2同步到region

3。基于本技术方案实现数据的级联同步的方案如下:
99.对于任务

1:taskmanager

1组件接收该任务

1,其中包含被同步对象标识object、源存储空间标识region

1和目标存储空间标识region

2。taskmanager

1组件还获取源存储空间region

1中object的元信息。然后,logsyncer

1组件(未示出)在region

1中的日志信息中过滤出与上述object相关的日志信息,得到object的操作日志。进一步地,taskmanager

1组件再分别封装上述操作日志和封装元信息,并将所得的相同格式的封装对象投递至消息队列

1。进而,syncworker

1组件根据消息队列

1中的上述元信息确定任务

1对应的历史数据以及根据上述操作日志确定任务

1对应的增量数据。最终将上述历史数据和上述增量数据通过s3 service接口上传至region

2,完成任务

1。从而实现了,object由region

1同步至region

2。
100.需要注意的是,object由region

1同步至region

2后,在region

2中产生关于上述object的操作日志,该操作日志中包含历史同步信息,用于表示被同步数据object用于级联同步。
101.进而对于任务

2:taskmanager

2组件接收该任务

2,其中包含被同步对象标识object、源存储空间标识region

2和目标存储空间标识region

3。taskmanager

2组件还获取上述源存储空间region

2中object的元信息。然后,logsyncer

2组件(未示出)在region

2中的日志信息中过滤出与上述object相关的日志信息,得到object的操作日志。需要注意的是,关于object从region

1同步到region

2后所产生的包含历史同步信息的操作日志,这条操作日志又会被region

2的logsyncer

2组件作为与上述object相关的日志信息被过滤出来并投递到region

2的消息队列

2。
102.进一步地,taskmanager

2组件再分别封装上述操作日志和封装元信息,并将所得
的相同格式的封装对象投递至消息队列

2。进而,syncworker

2组件根据上述元信息确定任务

2对应的历史数据以及根据上述操作日志确定任务

2对应的增量数据。其中,对于由包含历史同步信息的操作日志而封装后的对象,将根据该封装对象下载object,并将其上传至该任务的目标存储空间region

3,完成任务

2。
103.需要说明的是,在将数据从region

2同步到region

3后,也会在region

3的源数据库内也生成一条相关操作日志,该操作日志中包含历史同步信息,用于表示被同步数据object用于级联同步,因此该操作日志可以用于该object由region3向region

4的数据同步。依次类推,该object能够被逐级复制下去。从而能够实现将源存储空间的数据级联地同步到各层级的目标地域。
104.本技术方案(如图8所示)能够支持同一对象数据从源存储空间到目标存储空间的迁移次数可以是多次,从而有效解决多个存储空间间的级联传递复制问题,理论上可以多级无限扩展,并能解决回环配置跨区域复制时,数据复制的无限循环问题。
105.在示例性的实施例中,图9示意性示出了本公开一实施例中由同一源存储空间向多目标存储空间同时进行数据同步方案的场景图。
106.参考图9,该图示出了由同一源存储空间bucket

x向两个目标存储空间bucket

y1、bucket

y2,同时进行的数据同步任务:任务(数据s1,x

y1)和任务(数据s2,x

y1)。其中,任务(数据s1,x

y1)表示将存储于bucket

x的数据s1同步至bucket

y1,任务(数据s2,x

y2)表示将存储于bucket

x的数据s2同步至bucket

y2。需要说明的是:数据s1和数据s2同为存储于bucket

x的数据且数据s1和数据s2可以为同一数据也可以为不同数据,在此不做限定。
107.参考图9,上述两任务的同步执行过程如下:
108.logsyncer组件将源数据库中的操作日志(包括对源存储空间bucket

x的新增、修改、删除变更等信息)拉取出来;示例性的,可以将拉取出的操作日志存储于一消息队列中,以供后续taskmanager组件消费。
109.进一步地,taskmanager组件接收上述任务(数据s1,x

y1)和任务(数据s2,x

y1),以及分别将两任务均拆解为:历史数据同步子任务和增量数据同步子任务。具体地:将任务(数据s1,x

y1)拆分为历史数据同步子任务(数据s1’,x

y1)和增量数据同步子任务(数据s1”,x

y1);将任务(数据s2,x

y2)拆分为历史数据同步子任务(数据s2’,x

y2)和增量数据同步子任务(数据s2”,x

y2)。
110.其中,对于历史数据同步子任务(数据s1’,x

y1)和(数据s2’,x

y2),由taskmanager组件获取bucket

x中被同步数据s1和s2的元信息,并分别将其封装投递到message queue。对于增量数据同步子任务(数据s1”,x

y1)和(数据s2”,x

y2),由taskmanager组件获取被同步数据s1和s2相关的操作日志(由上述logsyncer组件拉取),再将其分别封装投递到message queue。从而,上述任务(数据s1,x

y1)中被同步数据s1相对应的元信息和操作日志均被封装后投递至message queue。同时,上述任务(数据s2,x

y2)中被同步数据s2相对应的元信息和操作日志也被封装后投递至message queue。
111.更进一步地,syncworker组件从message queue中并行读取上述两任务对应的封装对象,再基于封装对象从源存储空间bucket

x获取被同步数据s1和s2。其中,上述操作日志可以包含对被同步数据s1和/或s2的修改信息等,但为了保证被同步数据不被丢失,本实
施例中不对被同步数据s1和s2的删除操作进行同步。在存在对被同步数据进行修改的情况下,通过相关操作日志对被同步数据进行对应修改更新。例如操作日志中包含对被同步数据s1的修改信息,则对被同步数据s1进行对应的修改,以使得被同步数据在源存储空间与目标存储空间之间保持一致性。
112.进一步地,通过数据上传接口s3 service接口将被同步数据s1上传至目标数据库101中的存储空间bucket

y1,以及通过上传接口s3service接口将被同步数据s2上传至目标数据库102中的存储空间bucket

y2。
113.本技术方案(如图9所示)能够支持将数据从单一源存储空间同时向多个目标存储空间复制,从而云存储服务用户能轻松配置一个源存储空间数据到多个目标地理区域空间的数据复制,达到一处上传,自动多处备份,多处进行接入访问的技术效果。有利于加强用户数据的安全性、接入访问性能及用户系统的可用性,还有利于拓宽云存储服务用户的能力。
114.下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
115.其中,图10示出了根据本公开一示例性的实施例中数据同步装置的结构图。请参见图10,该图所示的数据同步装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分,还可以作为独立的模块集成于服务器上。
116.本公开实施例中的数据同步装置1000包括:数据信息确定模块1010、存储模块1020、被同步数据获取模块1030和并行发送模块1040,其中:
117.上述数据信息确定模块1010,用于接收由源存储空间分别向多个目标存储空间进行数据同步的多个任务,根据上述任务确定被同步数据对应的数据信息;上述存储模块1020,执行上述taskmanager组件501的功能,用于将上述多个任务分别对应的数据信息存储至消息队列中;上述被同步数据获取模块1030,执行上述syncworker组件503的功能,用于从上述消息队列中并行读取上述多个任务分别对应的数据信息,并基于上述多个任务分别对应的数据信息从上述源存储空间获取被同步数据;以及,上述并行发送模块1040,用于将上述多个任务分别对应的被同步数据并行发送至对应的目标存储空间。
118.在示例性的实施例中,图11示意性示出了根据本公开另一示例性的实施例中数据同步装置的结构图。请参见图11:
119.在示例性的实施例中,上述数据信息包括历史同步信息,上述历史同步信息表示上述被同步数据用于级联同步,其中,上述存储模块1020,具体用于:将上述历史同步信息存储至上述消息队列中;上述被同步数据获取模块1030,具体用于:根据上述历史同步信息从上述源存储空间获取被同步数据。
120.在示例性的实施例中,上述数据信息确定模块1010,具体用于:根据上述任务中携带的被同步数据标识,在上述源存储空间中获取上述被同步数据的元信息(即,执行上述taskmanager组件501的功能),以及获取关于上述被同步数据的操作日志,并将上述元信息和上述操作日志确定为上述被同步数据对应的数据信息。
121.在示例性的实施例中,上述存储模块1020,包括:第一封装单元10201和第二封装单元10202。其中:
122.上述第一封装单元10201,执行上述taskmanager组件501的功能,用于:对上述元
信息进行封装得到第一封装对象,并将上述第一封装对象发送至上述消息队列中;上述第二封装单元10202,执行上述taskmanager组件501的功能,用于:对上述操作日志进行封装得到第二封装对象并将上述第二封装对象发送至上述消息队列中。
123.在示例性的实施例中,上述第一封装对象和上述第二封装对象的格式相同。
124.在示例性的实施例中,上述数据信息中的操作日志中包括历史同步信息,上述历史同步信息表示上述被同步数据用于级联同步,其中,上述第二封装单元10202,执行上述taskmanager组件501的功能,具体用于:将上述历史同步信息进行封装得到第二封装对象;上述被同步数据获取模块1030,执行上述syncworker组件503的功能,具体用于:读取上述第一封装对象,得到下载上述被同步数据的信息;以及,根据上述被同步数据的元信息从上述源存储空间下载得到上述被同步数据。
125.在示例性的实施例中,上述被同步数据获取模块1030,执行上述syncworker组件503的功能,还具体用于:根据上述元信息,在上述源存储空间下载数据得到上述被同步数据中的历史数据。
126.在示例性的实施例中,上述被同步数据获取模块1030,执行上述syncworker组件503的功能,还具体用于:在上述操作日志为修改操作类型的情况下,在上述历史数据中确定出目标数据,并根据上述修改操作类型处理上述目标数据得到上述被同步数据中的增量数据;在上述操作日志为新增操作类型的情况下,基于每个上述任务对应的数据信息从上述源存储空间获取对应的被同步数据,包括:下载上述新增操作类型对应的数据,得到上述被同步数据中的增量数据。
127.在示例性的实施例中,上述并行发送模块1040,具体用于:对上述多个任务分别对应的被同步数据的数据内容以及时间顺序进行校验;在校验通过的情况下,则将上述多个任务分别对应的被同步数据并行发送至对应的目标存储空间。
128.在示例性的实施例中,上述并行发送模块1040,包括:校验单元10401和上传单元10402。其中:
129.上述校验单元10401用于:校验携带在上述元信息和/或上述操作日志中的实体标签信息;上述上传单元10402用于:在校验通过的情况下,将上述历史数据和上述增量数据上传至上述目标存储空间。
130.在示例性的实施例中,上述校验单元10402,具体用于:基于上述历史数据的上传时间和/或上述增量数据的更新时间,对上述被同步数据的实体标签信息进行原子操作。
131.需要说明的是,上述实施例提供的数据同步装置在执行数据同步方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据同步装置与数据同步方法实施例属于同一构思,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的数据同步方法的实施例,这里不再赘述。
132.上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
133.本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、dvd、cd

rom、微型驱动器以及磁光盘、rom、ram、
eprom、eeprom、dram、vram、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器ic),或适合于存储指令和/或数据的任何类型的媒介或设备。
134.本公开实施例还提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述任一实施例方法的步骤。
135.图12示意性示出了根据本公开一示例性的实施例中终端的结构图。请参见图12所示,终端1200包括有:处理器1201和存储器1202。
136.本公开实施例中,处理器1201为计算机系统的控制中心,可以是实体机的处理器,也可以是虚拟机的处理器。处理器1201可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1201可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1201也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。
137.在本公开实施例中,所述处理器1201具体用于:
138.接收由源存储空间分别向多个目标存储空间进行数据同步的多个任务,根据上述任务确定被同步数据对应的数据信息;将上述多个任务分别对应的数据信息存储至消息队列中,从上述消息队列中并行读取上述多个任务分别对应的数据信息;基于上述多个任务分别对应的数据信息从上述源存储空间获取被同步数据;将上述多个任务分别对应的被同步数据并行发送至对应的目标存储空间。
139.进一步地,上述数据信息包括历史同步信息,上述历史同步信息表示上述被同步数据用于级联同步,其中,上述将上述多个任务分别对应的数据信息存储至消息队列中,包括:将上述历史同步信息存储至上述消息队列中;上述基于上述多个任务分别对应的数据信息从上述源存储空间获取被同步数据,包括:根据上述历史同步信息从上述源存储空间获取被同步数据。
140.进一步地,上述根据上述任务确定被同步数据对应的数据信息,包括:根据上述任务中携带的被同步数据标识,在上述源存储空间中获取上述被同步数据的元信息,以及获取关于上述被同步数据的操作日志,并将上述元信息和上述操作日志确定为上述被同步数据对应的数据信息。
141.进一步地,上述将上述多个任务分别对应的数据信息存储至消息队列中,包括:对上述元信息进行封装得到第一封装对象,并将上述第一封装对象发送至上述消息队列中;对上述操作日志进行封装得到第二封装对象,并将上述第二封装对象发送至上述消息队列中。
142.进一步地,上述第一封装对象和上述第二封装对象的格式相同。
143.进一步地,上述数据信息中的操作日志中包括历史同步信息,上述历史同步信息表示上述被同步数据用于级联同步,其中,上述对上述操作日志进行封装得到第二封装对象,包括:将上述历史同步信息进行封装得到第二封装对象;上述从上述消息队列中并行读取上述多个任务分别对应的数据信息,包括:读取上述第一封装对象,得到下载上述被同步数据的信息;基于上述多个任务分别对应的数据信息从上述源存储空间获取被同步数据,
包括:根据上述被同步数据的元信息从上述源存储空间下载得到上述被同步数据。
144.进一步地,上述基于上述多个任务分别对应的数据信息从上述源存储空间获取被同步数据,包括:根据上述元信息,在上述源存储空间下载数据得到上述被同步数据中的历史数据。
145.进一步地,上述基于上述多个任务分别对应的数据信息从上述源存储空间获取被同步数据,包括:在上述操作日志为修改操作类型的情况下,在上述历史数据中确定出目标数据,并根据上述修改操作类型处理上述目标数据得到上述被同步数据中的增量数据;在上述操作日志为新增操作类型的情况下,基于每个上述任务对应的数据信息从上述源存储空间获取对应的被同步数据,包括:下载上述新增操作类型对应的数据,得到上述被同步数据中的增量数据。
146.进一步地,上述将上述多个任务分别对应的被同步数据并行发送至对应的目标存储空间,包括:对上述多个任务分别对应的被同步数据的数据内容以及时间顺序进行校验;在校验通过的情况下,则将上述多个任务分别对应的被同步数据并行发送至对应的目标存储空间。
147.进一步地,上述将上述多个任务分别对应的被同步数据并行发送至对应的目标存储空间,包括:校验携带在上述元信息和/或上述操作日志中的实体标签信息;在校验通过的情况下,将上述历史数据和上述增量数据上传至上述目标存储空间。
148.进一步地,上述将上述历史数据和上述增量数据上传至上述目标存储空间,包括:基于上述历史数据的上传时间和/或上述增量数据的更新时间,对上述被同步数据的实体标签信息进行原子操作。
149.存储器1202可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1202还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在本公开的一些实施例中,存储器1202中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1201所执行以实现本公开实施例中的方法。
150.一些实施例中,终端1200还包括有:外围设备接口1203和至少一个外围设备。处理器1201、存储器1202和外围设备接口1203之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1203相连。具体地,外围设备包括:显示屏1204、摄像头1205和音频电路1206中的至少一种。
151.外围设备接口1203可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1201和存储器1202。在本公开的一些实施例中,处理器1201、存储器1202和外围设备接口1203被集成在同一芯片或电路板上;在本公开的一些其他实施例中,处理器1201、存储器1202和外围设备接口1203中的任意一个或两个可以在单独的芯片或电路板上实现。本公开实施例对此不作具体限定。
152.显示屏1204用于显示ui(user interface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1204是触摸显示屏时,显示屏1204还具有采集在显示屏1204的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1201进行处理。此时,显示屏1204还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在本公开的一些实施例中,显示屏1204可以为一个,设置终端1200的前面
板;在本公开的另一些实施例中,显示屏1204可以为至少两个,分别设置在终端1200的不同表面或呈折叠设计;在本公开的再一些实施例中,显示屏1204可以是柔性显示屏,设置在终端1200的弯曲表面上或折叠面上。甚至,显示屏1204还可以设置成非矩形的不规则图形,也即异形屏。显示屏1204可以采用lcd(liquid crystal display,液晶显示屏)、oled(organic light

emitting diode,有机发光二极管)等材质制备。
153.摄像头1205用于采集图像或视频。可选地,摄像头1205包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtual reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在本公开的一些实施例中,摄像头1205还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
154.音频电路1206可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1201进行处理。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1200的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。
155.电源1207用于为终端1200中的各个组件进行供电。电源1207可以是交流电、直流电、一次性电池或可充电电池。当电源1207包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
156.本公开实施例中示出的终端结构框图并不构成对终端1200的限定,终端1200可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
157.在本公开中,术语“第一”、“第二”等仅用于描述的目的,而不能理解为指示或暗示相对重要性或顺序;术语“多个”则指两个或两个以上,除非另有明确的限定。术语“安装”、“相连”、“连接”、“固定”等术语均应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;“相连”可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
158.本公开的描述中,需要理解的是,术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开和简化描述,而不是指示或暗示所指的装置或单元必须具有特定的方向、以特定的方位构造和操作,因此,不能理解为对本公开的限制。
159.以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,依本公开权利要求所作的等同变化,仍属本公开所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献