一种数据处理方法和数据存储系统与流程

未命名 07-13 阅读:91 评论:0


1.本发明涉及存储技术领域,特别是涉及一种数据处理方法和数据存储系统。


背景技术:

2.在pds(drive&photo service,网盘与相册)等服务中,存在海量元数据,为了解决海量元数据的管理问题,可以采用分区(partition)管理模式来创建数据存储分区。
3.对于pds等服务中高并发访问特点,可以通过对数据存储分区进行分裂来提升系统性能,但数据存储分区的分裂需要消耗较多的资源和时间,难以进行高频操作,对突发流量和热点访问等高并发访问场景的适应性较差,影响服务的整体扩展性。


技术实现要素:

4.鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种数据处理方法和数据存储系统,包括:
5.一种数据处理方法,数据存储系统配置有用于存储元数据的数据存储分区,该方法包括:
6.在数据存储系统中,创建与数据存储分区分离的协议处理分区;其中,协议处理分区用于处理针对元数据的访问调度;
7.根据针对元数据的访问情况,对当前协议处理分区进行分裂,以将访问请求分发至分裂后的多个协议处理分区中进行服务处理。
8.可选地,还包括:
9.在当前协议处理分区处理针对元数据的访问请求的过程中,将本地缓存中目标元数据写入日志文件,并将日志文件同步至数据存储分区;其中,目标元数据为基于访问请求存在更新的元数据。
10.可选地,在将本地缓存中目标元数据写入日志文件之前,还包括:
11.从数据存储分区读取所需的元数据,并存储至本地缓存。
12.可选地,在将日志文件同步至数据存储分区之前,还包括:
13.判断日志文件中写入的元数据数量是否大于预设数量阈值,并在元数据数量大于预设数量阈值的情况下,执行将日志文件同步至数据存储分区。
14.可选地,将日志文件同步至数据存储分区,包括:
15.根据日志文件,对数据存储分区的索引文件进行更新,并通知所有数据存储分区重新加载更新后的索引文件。
16.可选地,对当前协议处理分区进行分裂,包括:
17.将当前协议处理分区的日志文件切分为多个子日志文件;
18.分别在多个新的协议处理分区中加载其中一个子日志文件;其中,多个新的协议处理分区用于作为分裂后的协议处理分区提供服务。
19.可选地,还包括:
20.记录新增的目标元数据;其中,新增的目标元数据为当前协议处理分区在对日志文件切分后且在设置为禁止服务状态前新增的目标元数据;
21.将新增的目标元数据同步至多个新的协议处理分区。
22.可选地,在将新增的目标元数据同步至多个新的协议处理分区之后,还包括:
23.通过二阶段提交的方式,向多个新的协议处理分区发送分裂完成消息,以由多个新的协议处理分区开始作为分裂后的协议处理分区提供服务。
24.可选地,还包括:
25.将当前协议处理分区设置为禁止服务状态。
26.可选地,还包括:
27.根据针对元数据的访问情况,配置数据存储分区的副本数量。
28.可选地,数据存储系统中数据存储分区和协议处理分区采用分布式架构,数据存储分区采用键值对形式存储元数据。
29.一种数据存储系统,数据存储系统配置有用于存储元数据的数据存储分区以及用于在数据存储系统中执行的计算机程序,计算机程序被处理器执行时实现如上的数据处理方法。
30.一种电子设备,包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上的数据处理方法。
31.一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上的数据处理方法。
32.本发明实施例具有以下优点:
33.在本发明实施例中,通过在数据存储系统中,创建与数据存储分区分离的协议处理分区,数据存储分区用于存储元数据,协议处理分区用于处理针对元数据的访问调度,然后根据针对元数据的访问情况,对当前协议处理分区进行分裂,以将访问请求分发至分裂后的多个协议处理分区中进行服务处理,实现了将元数据的协议处理层与存储层分离,并借助于协议处理分区的轻量、快速的分裂能力来对访问请求进行分流,进而能够应对突发流量和热点访问等高并发访问场景,提升服务的整体扩展性。
附图说明
34.为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
35.图1是本发明一实施例提供的一种数据处理方法的步骤流程图;
36.图2是本发明一实施例提供的一种系统架构的示意图;
37.图3是本发明一实施例提供的另一种数据处理方法的步骤流程图;
38.图4是本发明一实施例提供的另一种数据处理方法的步骤流程图;
39.图5是本发明一实施例提供的另一种数据处理方法的步骤流程图;
40.图6是本发明一实施例提供的另一种数据处理方法的步骤流程图。
具体实施方式
41.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.在本发明实施例中,根据pds等服务中元数据的存储和访问特点,采用元数据的协议处理层和存储层分离的架构,并借助于协议处理分区的轻量、快速的分裂能力来对访问请求进行分流,通过本发明实施例既能够管理海量元数据,又能够有效及时应对突发和热点流量等高并发访问场景,满足了pds等服务的高可用、高性能、高可扩展的需求。
43.对于高可用,协议处理分区的快速分裂影响时间短,数据存储分区的多副本能力保证一个副本宕机时,其他副本仍旧可提供文件访问。对于高性能,协议处理分区分裂后更多的节点提供服务,性能会更强,数据处理分区的多副本能力与此类似。对于高可扩展,基于协议处理分区的分裂和数据处理分区的多副本能力做到系统能力的线性扩展。
44.参照图1,示出了本发明一实施例提供的一种数据处理方法的步骤流程图,数据存储系统可以为针对pds等服务中元数据的数据存储系统。
45.为了解决pds等服务中海量元数据的管理问题,可以在数据存储系统中采用分区管理模式,数据存储系统可以配置用于存储元数据的数据存储分区。在一示例中,数据存储分区可以采用键值对(kv,key-value)形式存储元数据,即数据存储分区为kv分区(kv partition);其中,元数据可以包括基于目录树的相关数据。
46.具体的,可以包括如下步骤:
47.步骤101,在数据存储系统中,创建与数据存储分区分离的协议处理分区;其中,协议处理分区用于处理针对元数据的访问调度。
48.对于pds等服务中高并发访问特点,可以通过对数据存储分区进行分裂来提升系统性能,但数据存储分区的分裂需要消耗较多的资源和时间,难以进行高频操作,对突发流量和热点访问等高并发访问场景的适应性较差,影响服务的整体扩展性。
49.具体的,在数据存储分区中,原生的数据存储分区的分裂涉及到元数据的切分,切分之后子数据存储分区首先要加载元数据的数据索引,然后通过重放父数据存储分区的日志(redolog)获得最新的元数据,这个过程资源消耗和时间消耗都偏大。
50.基于此,可以将元数据的协议处理层与存储层分离,对协议处理层采用分区管理模式,创建与数据存储分区分离的协议处理分区(protocol partition)。
51.其中,协议处理分区可以用于处理针对元数据的访问调度,协议处理分区是一个逻辑分区,是用户io访问的最小调度单元,可以用于实现pds等服务中针对元数据的访问调度,如协议处理分区负责创建文件的流程,然后将新创建的数据写入到数据存储分区,数据存储分区则管理真实元数据。
52.由于协议处理分区仅仅缓存最近被访问的元数据,分裂时只需要对最近被访问的元数据做分裂,这个数据量一般都很小,往往只有mb级别,能够快速完成分裂。
53.在本发明一实施例中,为了适应pds等服务具有海量的元数据的情况,数据存储系统中数据存储分区和协议处理分区可以采用分布式架构,即可以设置分布式的多个数据存储分区,并可以设置分布式的多个协议处理分区,如图2,在数据存储系统中配置多个协议
处理分区pp1至ppn和多个数据存储分区kp1至kpn。
54.在本发明一实施例中,还包括:
55.在当前协议处理分区处理针对元数据的访问请求的过程中,将本地缓存中目标元数据写入日志文件,并将日志文件同步至数据存储分区;其中,目标元数据为基于访问请求存在更新的元数据。
56.在创建协议处理分区后,应用的访问请求都由协议处理分区处理,数据存储分区中的元数据都是只读的不会修改,所有的修改在协议处理分区侧完成。
57.在当前协议处理分区处理针对元数据的访问请求的过程中,当前协议处理分区的本地缓存中可以缓存最近被访问的元数据,可以确定本地缓存中目标元数据,目标元数据为基于访问请求存在更新的元数据,即脏数据。
58.具体的,元数据可以由多个属性组成,如果任意一个属性的值被更改了,则该元数据就是脏数据,即目标元数据。例如,当应用访问文件时,会更新最后访问时间(atime)这个属性,即atime属性的值因为应用访问发生了变化,则访问的这个文件的元数据就称之为脏数据,即目标元数据。
59.在确定目标元数据后,可以将目标元数据写入日志(log)文件中,通过将协议处理层中存在更新的元数据同步至数据存储层的交互过程,协议处理层与数据存储层相互分离,使二者可以相互独立地进行分区的伸缩。而且,通过将最近修改的文件的元数据存储到当前协议处理分区独有日志文件,这样即使当前协议处理分区发生宕机或者发生failover(失效转移),能够通过这些日志加载恢复元数据,从而对外提供服务。
60.在一示例中,如果无法将目标元数据写入日志文件,则判定请求处理失败,结束处理,并可以向应用反馈处理失败的结果。
61.在将目标元数据写入日志文件后,可以将日志文件同步至数据存储分区,通过将携带存在更新的元数据的日志文件同步至数据存储分区,一方面可以通过数据存储分区让最新的元数据对其他的协议处理分区可见,另一方面,当日志文件同步到数据存储分区之后,当前协议处理分区就可以不再维护这些日志文件,压缩当前协议处理分区独有日志存储的数量,保证分裂时切分的数据量可控。
62.在本发明一实施例中,在将本地缓存中目标元数据写入日志文件之前,还包括:
63.从数据存储分区读取所需的元数据,并存储至本地缓存。
64.对于访问请求,可以确定其所需要访问的元数据,然后可以优先在当前协议处理分区的本地缓存中进行查找,如果本地缓存中存储有所需的元数据,则可以直接进行元数据的访问,如果本地缓存中未存储有所需的元数据,则可以从数据存储分区读取所需的元数据,然后可以将所需的元数据更新至当前协议处理分区的本地缓存中。
65.其中,协议处理分区和数据存储分区可以部署在同一个集群中,也可以部署在不同集群中,但它们可能会由不同的服务器加载,则可以通过rpc(remote produce call,远程过程调用)进行通信,协议处理分区可以通过rpc从数据存储分区中读取元数据。
66.在一示例中,如果无法从数据存储分区读取所需的元数据,则判定请求处理失败,结束处理,并可以向应用反馈处理失败的结果。
67.在本发明一实施例中,在将日志文件同步至数据存储分区之前,还包括:
68.判断日志文件中写入的元数据数量是否大于预设数量阈值,并在元数据数量大于
预设数量阈值的情况下,执行将日志文件同步至数据存储分区。
69.在具体实现中,可以设置预设数量阈值,如10mb,可以检查日志文件中写入的元数据数量是否大于预设数量阈值,如果没有大于预设数量阈值,则可以继续写入元数据,如果大于预设数量阈值,则可以触发后台操作将日志文件同步至数据存储分区。
70.以下结合图2,对上述协议处理分区处理读写流程进行示例性说明:
71.a1、检查访问的元数据是否在本地缓存,若在,则处理访问请求,否则跳转到步骤a5;
72.a2、将处理请求过程中脏数据(即目标元数据)写入log(即日志文件),若写失败,则请求处理失败,跳转到步骤a 4;
73.a3、检查log中脏数据的数量是否超过某个阈值(即预设数量阈值),若超过,则触发后台操作将log同步到kv partition;
74.a4、结束处理,将结果返回给应用;
75.a5、通过rpc从kv partition中读取元数据,若成功,则更新本地缓存,然后跳转到步骤a1,否则请求处理失败,结束处理,将结果返回给应用。
76.在本发明一实施例中,将日志文件同步至数据存储分区,包括:
77.根据日志文件,对数据存储分区的索引文件进行更新,并通知所有数据存储分区重新加载更新后的索引文件。
78.在实际应用中,可以根据携带目标元数据的日志文件,对数据存储分区中已有的索引文件进行更新,即将其合并在已有的索引文件中,得到更新后的所有文件,然后可以通知所有数据存储分区重新加载更新后的索引文件,即同步完成。
79.具体的,可以将日志文件序列化为指定存储格式的存储文件,指定存储格式的存储文件为协议处理分区向数据存储分区同步目标元数据时使用的存储文件,如将日志文件序列化为cpt(checkpoint,检查点)文件,然后提交至指定服务,指定服务是用于处理协议处理分区中日志文件同步至数据存储分区的服务,如coordinator(协调服务)。
80.对于指定服务,其可以将指定存储格式的存储文件和当前已有的索引文件(metainfo,保存存储数据分区中元数据索引文件列表的文件)进行合并,得到新的索引文件,指定服务然后可以通知所有的数据存储分区重新加载新的索引文件夹,并通知当前协议处理分区日志文件已经同步完成。在同步完成后,当前协议处理分区可以回收日志空间。
81.以下结合图2,对上述日志文件同步的过程进行示例性说明:
82.b1、将log序列化为cpt,然后提交到coordinator;
83.b2、coordinator将cpt和当前metainfo合并,获得新的metainfo;
84.b3、coordinator通知所有kv partition重新加载新的metainfo;
85.b4、coordinator通知protocol partition log同步完成;
86.b5、protocol partition接收到同步完成消息,回收log空间,同步结束。
87.由于cpt的同步操作是幂等的,因此步骤b1至步骤b 4中任何一步失败就直接退出本轮同步过程即可,退避一段时间后重试即可。
88.步骤102,根据针对元数据的访问情况,对当前协议处理分区进行分裂,以将访问请求分发至分裂后的多个协议处理分区中进行服务处理。
89.在实际应用中,可以检测pds等服务中针对元数据的访问情况,然后可以根据针对
元数据的访问情况,对当前协议处理分区进行分裂,如在突发流量和热点访问等高并发访问场景下对当前协议处理分区进行快速分裂,提升了系统应对突增流量的自适应能力。
90.在对当前协议处理分区进行分裂后,可以有效地将访问流量分流到更多的实例上(即分裂后的协议处理分区),提升系统的整体能力。
91.由于应用在较短的时间内一般不会访问很多的文件,在将当前协议处理分区进行分裂时,同步的数据量一般都很少,因此在较短时间内就可以分裂完成,从而保证协议处理分区具备了应对突发流量的能力。
92.在本发明一实施例中,对当前协议处理分区进行分裂,包括:
93.将当前协议处理分区的日志文件切分为多个子日志文件;分别在多个新的协议处理分区中加载其中一个子日志文件;其中,多个新的协议处理分区用于作为分裂后的协议处理分区提供服务。
94.在对当前协议处理分区进行分裂的过程中,可以将当前协议处理分区的日志文件切分为多个子日志文件,然后可以选取多个新的协议处理分区作为分裂后的协议处理分区,在每个新的协议处理分区中加载其中一个子日志文件,进而将切换得到的多个子日志文件全部迁移至多个新的协议处理分区中。
95.具体的,当前协议处理分区可以将日志文件切分为多个子日志文件,然后可以通知指定服务其自身需要进行分裂,如coordinator,指定服务进而可以为其分配多个新的协议处理分区,并从多个子日志文件中指定每个新的协议处理分区初始的日志文件。
96.在每个新的协议处理分区加载子日志文件完成后,可以通知指定服务,指定服务进而可以通知当前协议处理分区其分裂后的协议处理分区为哪几个。
97.在本发明一实施例中,还包括:
98.记录新增的目标元数据;将新增的目标元数据同步至多个新的协议处理分区;其中,新增的目标元数据为当前协议处理分区在对日志文件切分后且在设置为禁止服务状态前新增的目标元数据。
99.在当前协议处理分区对日志文件进行切分后,且在设置为禁止服务状态前,即当前协议处理分区已经准备将日志文件切分给新的协议处理分区,但其自身还在提供服务,则可以记录在这期间新增的目标元数据,即新增的脏的数据。
100.在新的协议处理分区加载子日志文件后,当前协议处理分区获知其分裂后的协议处理分区是哪几个,进而可以将新增的目标元数据同步至新的协议处理分区,如当前协议处理分区p0存储中有100条新增的目标元数据,则可以采用二均分的方法,给新的协议处理分区p1和p2分别同步50条新增的目标元数据。
101.在本发明一实施例中,在将新增的目标元数据同步至多个新的协议处理分区之后,还包括:
102.通过二阶段提交的方式,向多个新的协议处理分区发送分裂完成消息,以由多个新的协议处理分区开始作为分裂后的协议处理分区提供服务。
103.在新的协议处理分区同步新增的目标元数据后,可以通过二阶段提交的方式,向多个新的协议处理分区发送分裂完成消息,保证每个新的协议处理分区都能够获知分裂完成,新的协议处理分区在获知分裂完成后,进而可以开始提供服务。
104.在本发明一实施例中,还包括:
105.将当前协议处理分区设置为禁止服务状态。
106.在分裂完成后,可以将当前协议处理分区设置为禁止服务状态,并可以通知指定服务,指定服务进而可以对当前协议处理分区进行回收,分裂过程结束。
107.在一示例中,在当前协议处理分区的分裂过程中,可以通过指定服务周期性的检测分裂的进度状态,若发生失败或者超时,指定服务可以强制回滚分裂状态,让当前协议处理分区继续提供服务,并将新的协议处理分区抛弃掉。
108.以下结合图2,对上述分裂的过程进行示例性说明:
109.假定protocol partition一分为二,p0为待分裂分区(即当前协议处理分区),p1和p2分别为分裂后的子分区(即新的协议处理分区),具体如下:
110.c1、p0按分裂规则将log(即日志文件)切分为log1和log2(即子日志文件),同时记录新增的脏数据(即新增的目标元数据),然后通知coordinator自身需要分裂;
111.c2、coordinator分配两个新的分区p1和p2,然后指定p1和p2的初始log分别为log1和log2;
112.c3、p1和p2分别加载log1和log2,当加载结束后通知coordinator;
113.c4、coordinator通知p0分裂后的子分区分别为p1和p2;
114.c5、p0开始将新增脏数据分别同步到p1和p2,当同步完成后,通过两阶段提交的方式保证p1和p2都能够得知分裂完成,p1和p2得到消息后开始服务;
115.c6、p0自身设置为禁止服务状态,通知coordinator分裂完成;
116.c7、coordinator回收p0,分裂过程完成。
117.在本发明一实施例中,还包括:
118.根据针对元数据的访问情况,配置数据存储分区的副本数量。
119.在实际应用中,由于数据存储分区管理了只读的元数据,当某些元数据变为热点数据时,可以通过增加服务这些热点数据的数据存储分区的副本数量。
120.在本发明实施例中,通过在数据存储系统中,创建与数据存储分区分离的协议处理分区,数据存储分区用于存储元数据,协议处理分区用于处理针对元数据的访问调度,然后根据针对元数据的访问情况,对当前协议处理分区进行分裂,以将访问请求分发至分裂后的多个协议处理分区中进行服务处理,实现了将元数据的协议处理层与存储层分离,并借助于协议处理分区的轻量、快速的分裂能力来对访问请求进行分流,进而能够应对突发流量和热点访问等高并发访问场景,提升服务的整体扩展性。
121.相较于基于分布式共享块存储的方式管理目录树元数据,具有以下优点:
122.1、在基于分布式共享块存储的方式中,协议层不具备log能力,io路径更长,延时更高,而在本发明实施例中,协议处理分区通过临时的log机制,将最近的访问数据进行缓存,缩短了io路径,延时更低,提升写入性能。
123.2、在基于分布式共享块存储的方式中,一致性依赖共享块的能力,一般实现比较复杂,failover时间较长,而在本发明实施例中,当协议处理分区发生failover重新加载时,可以通过重放log加载最近访问的元数据,failover对访问影响会更小。
124.3、在基于分布式共享块存储的方式中,对热点数据无法提供多副本的能力,应对热点和突发流量的能力有限,而在本发明实施例中,通过动态灵活地配置数据存储分区的副本数,能够提升元数据的查询能力,进而提升元数据读性能。
125.参照图3,示出了本发明一实施例提供的另一种数据处理方法的步骤流程图,具体可以包括如下步骤:
126.步骤301,在数据存储系统中,创建与数据存储分区分离的协议处理分区;其中,协议处理分区用于处理针对元数据的访问调度。
127.步骤302,在当前协议处理分区处理针对元数据的访问请求的过程中,将本地缓存中目标元数据写入日志文件,并将日志文件同步至数据存储分区;其中,目标元数据为基于访问请求存在更新的元数据。
128.在创建协议处理分区后,应用的访问请求都由协议处理分区处理,数据存储分区中的元数据都是只读的不会修改,所有的修改在协议处理分区侧完成。
129.在当前协议处理分区处理针对元数据的访问请求的过程中,当前协议处理分区的本地缓存中可以缓存最近被访问的元数据,可以确定本地缓存中目标元数据,目标元数据为基于访问请求存在更新的元数据,即脏数据。
130.具体的,元数据可以由多个属性组成,如果任意一个属性的值被更改了,则该元数据就是脏数据,即目标元数据。例如,当应用访问文件时,会更新最后访问时间(atime)这个属性,即atime属性的值因为应用访问发生了变化,则访问的这个文件的元数据就称之为脏数据,即目标元数据。
131.在确定目标元数据后,可以将目标元数据写入日志(log)文件中,通过将协议处理层中存在更新的元数据同步至数据存储层的交互过程,协议处理层与数据存储层相互分离,使二者可以相互独立地进行分区的伸缩。而且,通过将最近修改的文件的元数据存储到当前协议处理分区独有日志文件,这样即使当前协议处理分区发生宕机或者发生failover(失效转移),能够通过这些日志加载恢复元数据,从而对外提供服务。
132.在一示例中,如果无法将目标元数据写入日志文件,则判定请求处理失败,结束处理,并可以向应用反馈处理失败的结果。
133.在将目标元数据写入日志文件后,可以将日志文件同步至数据存储分区,通过将携带存在更新的元数据的日志文件同步数据存储分区,一方面可以通过数据存储分区让最新的元数据对其他的协议处理分区可见,另一方面,当日志文件同步到数据存储分区之后,当前协议处理分区就可以不再维护这些日志文件,压缩当前协议处理分区独有日志存储的数量,保证分裂时切分的数据量可控。
134.步骤303,根据针对元数据的访问情况,对当前协议处理分区进行分裂,以将访问请求分发至分裂后的多个协议处理分区中进行服务处理。
135.参照图4,示出了本发明一实施例提供的另一种数据处理方法的步骤流程图,具体可以包括如下步骤:
136.步骤401,在数据存储系统中,创建与数据存储分区分离的协议处理分区;其中,协议处理分区用于处理针对元数据的访问调度。
137.步骤402,在当前协议处理分区处理针对元数据的访问请求的过程中,从数据存储分区读取所需的元数据,并存储至本地缓存。
138.对于访问请求,可以确定其所需要访问的元数据,然后可以优先在当前协议处理分区的本地缓存中进行查找,如果本地缓存中存储有所需的元数据,则可以直接进行元数据的访问,如果本地缓存中未存储有所需的元数据,则可以从数据存储分区读取所需的元
数据,然后可以将所需的元数据更新至当前协议处理分区的本地缓存中。
139.其中,协议处理分区和数据存储分区可以部署在同一个集群中,但它们可能会由不同的服务器加载,则可以通过rpc(remote produce call,远程过程调用)进行通信,协议处理分区可以通过rpc从数据存储分区中读取元数据。
140.在一示例中,如果无法从数据存储分区读取所需的元数据,则判定请求处理失败,结束处理,并可以向应用反馈处理失败的结果。
141.步骤403,将本地缓存中目标元数据写入日志文件;其中,目标元数据为基于访问请求存在更新的元数据。
142.步骤404,判断日志文件中写入的元数据数量是否大于预设数量阈值,并在元数据数量大于预设数量阈值的情况下,将日志文件同步至数据存储分区。
143.在具体实现中,可以设置预设数量阈值,如10mb,可以检查日志文件中写入的元数据数量是否大于预设数量阈值,如果没有大于预设数量阈值,则可以继续写入元数据,如果大于预设数量阈值,则可以触发后台操作将日志文件同步至数据存储分区。
144.以下结合图2,对上述协议处理分区处理读写流程进行示例性说明:
145.a1、检查访问的元数据是否在本地缓存,若在,则处理访问请求,否则跳转到步骤a5;
146.a2、将处理请求过程中脏数据(即目标元数据)写入log(即日志文件),若写失败,则请求处理失败,跳转到步骤a 4;
147.a3、检查log中脏数据的数量是否超过某个阈值(即预设数量阈值),若超过,则触发后台操作将log同步到kv partition;
148.a4、结束处理,将结果返回给应用;
149.a5、通过rpc从kv partition中读取元数据,若成功,则更新本地缓存,然后跳转到步骤a1,否则请求处理失败,结束处理,将结果返回给应用。
150.步骤405,根据针对元数据的访问情况,对当前协议处理分区进行分裂,以将访问请求分发至分裂后的多个协议处理分区中进行服务处理。
151.参照图5,示出了本发明一实施例提供的另一种数据处理方法的步骤流程图,具体可以包括如下步骤:
152.步骤501,在数据存储系统中,创建与数据存储分区分离的协议处理分区;其中,协议处理分区用于处理针对元数据的访问调度。
153.步骤502,在当前协议处理分区处理针对元数据的访问请求的过程中,将本地缓存中目标元数据写入日志文件;其中,目标元数据为基于访问请求存在更新的元数据。
154.步骤503,根据日志文件,对数据存储分区的索引文件进行更新,并通知所有数据存储分区重新加载更新后的索引文件。
155.在实际应用中,可以根据携带目标元数据的日志文件,对数据存储分区中已有的索引文件进行更新,即将其合并在已有的索引文件中,得到更新后的所有文件,然后可以通知所有数据存储分区重新加载更新后的索引文件,即同步完成。
156.具体的,可以将日志文件序列化为指定存储格式的存储文件,指定存储格式的存储文件为协议处理分区向数据存储分区同步目标元数据时使用的存储文件,如将日志文件序列化为cpt(checkpoint,检查点)文件,然后提交至指定服务,指定服务是用于处理协议
处理分区中日志文件同步至数据存储分区的服务,如coordinator。
157.对于指定服务,其可以将指定存储格式的存储文件和当前已有的索引文件(metainfo,保存存储数据分区中索引文件列表的文件)进行合并,得到新的索引文件,指定服务然后可以通知所有的数据存储分区重新加载新的索引文件夹,并通知当前协议处理分区日志文件已经同步完成。在同步完成后,当前协议处理分区可以回收日志空间。
158.以下结合图2,对上述日志文件同步的过程进行示例性说明:
159.b1、将log序列化为cpt,然后提交到coordinator;
160.b2、coordinator将cpt和当前metainfo合并,获得新的metainfo;
161.b3、coordinator通知所有kv partition重新加载新的metainfo;
162.b4、coordinator通知protocol partition log同步完成;
163.b5、protocol partition接收到同步完成消息,回收log空间,同步结束。
164.由于cpt的同步操作是幂等的,因此步骤b1至步骤b 4中任何一步失败就直接退出本轮同步过程即可,退避一段时间后重试即可。
165.步骤504,根据针对元数据的访问情况,对当前协议处理分区进行分裂,以将访问请求分发至分裂后的多个协议处理分区中进行服务处理。
166.参照图6,示出了本发明一实施例提供的另一种数据处理方法的步骤流程图,具体可以包括如下步骤:
167.步骤601,在数据存储系统中,创建与数据存储分区分离的协议处理分区;其中,协议处理分区用于处理针对元数据的访问调度。
168.步骤602,在当前协议处理分区处理针对元数据的访问请求的过程中,将本地缓存中目标元数据写入日志文件,并将日志文件同步至数据存储分区;其中,目标元数据为基于访问请求存在更新的元数据。
169.步骤603,将当前协议处理分区的日志文件切分为多个子日志文件,并分别在多个新的协议处理分区中加载其中一个子日志文件;其中,多个新的协议处理分区用于作为分裂后的协议处理分区提供服务。
170.在对当前协议处理分区进行分裂的过程中,可以将当前协议处理分区的日志文件切分为多个子日志文件,然后可以选取多个新的协议处理分区作为分裂后的协议处理分区,在每个新的协议处理分区中加载其中一个子日志文件,进而将切换得到的多个子日志文件全部迁移至多个新的协议处理分区中。
171.具体的,当前协议处理分区可以将日志文件切分为多个子日志文件,然后可以通知指定服务其自身需要进行分裂,如coordinator,指定服务进而可以为其分配多个新的协议处理分区,并从多个子日志文件中指定每个新的协议处理分区初始的日志文件。
172.在每个新的协议处理分区加载子日志文件完成后,可以通知指定服务,指定服务进而可以通知当前协议处理分区其分裂后的协议处理分区为哪几个。
173.步骤604,记录新增的目标元数据,并将新增的目标元数据同步至多个新的协议处理分区;其中,新增的目标元数据为当前协议处理分区在对日志文件切分后且在设置为禁止服务状态前新增的目标元数据。
174.在当前协议处理分区对日志文件进行切分后,且在设置为禁止服务状态前,即当前协议处理分区已经准备将日志文件切分给新的协议处理分区,但其自身还在提供服务,
则可以记录在这期间新增的目标元数据,即新增的脏的数据。
175.在新的协议处理分区加载子日志文件后,当前协议处理分区获知其分裂后的协议处理分区是哪几个,进而可以将新增的目标元数据同步至新的协议处理分区,如当前协议处理分区p0存储中有100条新增的目标元数据,则可以采用二均分的方法,给新的协议处理分区p1和p2分别同步50条新增的目标元数据。
176.步骤605,通过二阶段提交的方式,向多个新的协议处理分区发送分裂完成消息,以由多个新的协议处理分区开始作为分裂后的协议处理分区提供服务。
177.在新的协议处理分区同步新增的目标元数据后,可以通过二阶段提交的方式,向多个新的协议处理分区发送分裂完成消息,保证每个新的协议处理分区都能够获知分裂完成,新的协议处理分区在获知分裂完成后,进而可以开始提供服务。
178.步骤606,将当前协议处理分区设置为禁止服务状态。
179.在分裂完成后,可以将当前协议处理分区设置为禁止服务状态,并可以通知指定服务,指定服务进而可以对当前协议处理分区进行回收,分裂过程结束。
180.在一示例中,在当前协议处理分区的分裂过程中,可以通过指定服务周期性的检测分裂的进度状态,若发生失败或者超时,指定服务可以强制回滚分裂状态,让当前协议处理分区继续提供服务,并将新的协议处理分区抛弃掉。
181.以下结合图2,对上述分裂的过程进行示例性说明:
182.假定protocol partition一分为二,p0为待分裂分区(即当前协议处理分区),p1和p2分别为分裂后的子分区(即新的协议处理分区),具体如下:
183.c1、p0按分裂规则将log(即日志文件)切分为log1和log2(即子日志文件),同时记录新增的脏数据(即新增的目标元数据),然后通知coordinator自身需要分裂;
184.c2、coordinator分配两个新的分区p1和p2,然后指定p1和p2的初始log分别为log1和log2;
185.c3、p1和p2分别加载log1和log2,当加载结束后通知coordinator;
186.c4、coordinator通知p0分裂后的子分区分别为p1和p2;
187.c5、p0开始将新增脏数据分别同步到p1和p2,当同步完成后,通过两阶段提交的方式保证p1和p2都能够得知分裂完成,p1和p2得到消息后开始服务;
188.c6、p0自身设置为禁止服务状态,通知coordinator分裂完成;
189.c7、coordinator回收p0,分裂过程完成。
190.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
191.本发明一实施例还提供了一种数据存储系统,数据存储系统配置有用于存储元数据的数据存储分区以及用于在数据存储系统中执行的计算机程序,计算机程序被处理器执行时实现如上数据处理方法。
192.本发明一实施例还提供了一种电子设备,包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上数据处理方
法。
193.本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上数据处理方法。
194.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
195.需要说明的是,本发明实施例中涉及到用户的相关数据都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
196.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
197.本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
198.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
199.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
200.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
201.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
202.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
203.以上对所提供的一种数据处理方法和数据存储系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

技术特征:
1.一种数据处理方法,其特征在于,数据存储系统配置有用于存储元数据的数据存储分区,所述方法包括:在所述数据存储系统中,创建与所述数据存储分区的协议处理分区;其中,所述协议处理分区用于处理针对元数据的访问调度;根据针对元数据的访问情况,对当前协议处理分区进行分裂,以将访问请求分发至分裂后的多个协议处理分区中进行服务处理。2.根据权利要求1所述的方法,其特征在于,还包括:在所述当前协议处理分区处理针对元数据的访问请求的过程中,将本地缓存中目标元数据写入日志文件,并将所述日志文件同步至所述数据存储分区;其中,所述目标元数据为基于所述访问请求存在更新的元数据。3.根据权利要求2所述的方法,其特征在于,在所述将本地缓存中目标元数据写入日志文件之前,还包括:从所述数据存储分区读取所需的元数据,并存储至本地缓存。4.根据权利要求2所述的方法,其特征在于,在所述将所述日志文件同步至所述数据存储分区之前,还包括:判断所述日志文件中写入的元数据数量是否大于预设数量阈值,并在所述元数据数量大于预设数量阈值的情况下,执行所述将所述日志文件同步至所述数据存储分区。5.根据权利要求2所述的方法,其特征在于,所述将所述日志文件同步至所述数据存储分区,包括:根据所述日志文件,对所述数据存储分区的索引文件进行更新,并通知所有数据存储分区重新加载更新后的索引文件。6.根据权利要求2至5任一项所述的方法,其特征在于,所述对当前协议处理分区进行分裂,包括:将所述当前协议处理分区的日志文件切分为多个子日志文件;分别在多个新的协议处理分区中加载其中一个子日志文件;其中,所述多个新的协议处理分区用于作为分裂后的协议处理分区提供服务。7.根据权利要求6所述的方法,其特征在于,还包括:记录新增的目标元数据;其中,所述新增的目标元数据为所述当前协议处理分区在对所述日志文件切分后且在设置为禁止服务状态前新增的目标元数据;将所述新增的目标元数据同步至所述多个新的协议处理分区。8.根据权利要求7所述的方法,其特征在于,在所述将所述新增的目标元数据同步至所述多个新的协议处理分区之后,还包括:通过二阶段提交的方式,向所述多个新的协议处理分区发送分裂完成消息,以由所述多个新的协议处理分区开始作为分裂后的协议处理分区提供服务。9.根据权利要求8所述的方法,其特征在于,还包括:将所述当前协议处理分区设置为禁止服务状态。10.根据权利要求1所述的方法,其特征在于,还包括:根据针对元数据的访问情况,配置所述数据存储分区的副本数量。11.根据权利要求1所述的方法,其特征在于,所述数据存储系统中数据存储分区和协
议处理分区采用分布式架构,所述数据存储分区采用键值对形式存储元数据。12.一种数据存储系统,其特征在于,所述数据存储系统配置有用于存储元数据的数据存储分区以及用于在所述数据存储系统中执行的计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11中任一项所述的数据处理方法。13.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至11中任一项所述的数据处理方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11中任一项所述的数据处理方法。

技术总结
本发明实施例提供了一种数据处理方法和数据存储系统,所述数据存储系统配置有用于存储元数据的数据存储分区,所述方法包括:在所述数据存储系统中,创建与所述数据存储分区分离的协议处理分区;其中,所述协议处理分区用于处理针对元数据的访问调度;根据针对元数据的访问情况,对当前协议处理分区进行分裂,以将访问请求分发至分裂后的多个协议处理分区中进行服务处理。通过本发明实施例,实现了将元数据的协议处理层与存储层分离,并借助于协议处理分区的轻量、快速的分裂能力来对访问请求进行分流,进而能够应对突发流量和热点访问等高并发访问场景,提升服务的整体扩展性。提升服务的整体扩展性。提升服务的整体扩展性。


技术研发人员:裴晓辉 李文兆 龚晓峰 邹勇波 熊杉杉 陈亮 汪先登 石兆斌
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2023.03.03
技术公布日:2023/7/12
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐