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

用于分布式存储系统的控制方法及系统与流程

2022-06-08 16:12:39 来源:中国专利 TAG:


1.本技术涉及存储领域,尤其涉及一种用于分布式存储系统的控制方法及系统。


背景技术:

2.分布式存储系统是指将数据分散存储在多台存储设备上、为大规模的存储应用提供的存储服务。它采用可扩展的系统结构,通过多台存储服务器分担存储负荷,并利用位置服务器定位存储信息,可提高系统的可靠性、存储效率和可扩展性。分布式存储系统在高性能计算、大数据分析等场景有着广泛的应用。
3.分布式存储系统中包括元数据节点、多个客户端和多个数据节点。其中,客户端可通过网络向数据节点写入或读取数据,而元数据节点作为中心化的元信息存储节点,对分布式存储系统进行管理和调度。为了保障数据可靠性,客户端写入的数据会以多个副本的形式存入到一个数据节点组中,当写到一定长度或者写失败时,元数据节点会分配一个新的数据节点组用于写入。
4.在仅追加(appendonly)的、单写者多读者的分布式存储系统中,在写入字节流时,仅允许一个写者以追加写的形式写入数据,该系统需保持强一致性,即读者看到的数据不能发生状态回退。当客户端向元数据节点请求获取最新数据版本时,由于各数据节点存储的版本长度可能不一致,元数据节点需要使用seal操作向当前写入的数据节点组问询当前的数据版本,从中选取最短版本作为最新数据版本,并禁止在该数据节点组继续写入。考虑到各个字节流在数据节点中的版本不对齐现象是常见的,若频繁使用seal操作,将增加元数据节点的开销。并且使用seal操作之后不可继续在原数据节点组写入数据,而是重新分配新的数据节点组,这容易导致记录字节流的存储位置的索引表很大,而占用资源。
5.因此,业界亟需一种分布式存储系统的读写控制方案,在满足强一致性的前提下,减少元数据节点的数据开销和资源占用,并提高管理效率。


技术实现要素:

6.本技术实施例提供了一种用于分布式存储系统的控制方法及系统,能够减少元数据节点的数据开销和资源占用,并提高管理效率。
7.第一方面,本技术提供一种用于分布式存储系统的控制方法,包括:客户端从第一数据节点组获取第一字节流的多个未同步数据版本,所述第一数据节点组用于存储所述第一字节流的当前写入的数据,所述第一数据节点组中包括多个数据节点,所述未同步数据版本为所述第一数据节点组存储的未同步的数据版本;所述元数据节点从所述客户端接收所述多个未同步数据版本;所述元数据节点根据预设规则,从所述多个未同步数据版本中选择目标未同步数据版本;所述元数据节点确定最新未同步数据版本,所述最新未同步数据版本是所述目标未同步数据版本和所述元数据节点当前维护的未同步数据版本中写入长度更长的版本。
8.在一种可能的实现方式中,所述方法还包括:所述客户端从所述元数据节点接收
所述最新未同步数据版本;所述客户端从所述元数据节点接收当前维护的所述第一字节流的已同步数据版本;所述客户端确定所述第一字节流的最新数据版本,所述第一字节流的最新数据版本包括所述已同步数据版本和所述最新未同步数据版本。
9.在一种可能的实现方式中,所述客户端确定所述第一字节流的最新数据版本,包括:所述客户端在所述最新未同步数据版本不会导致所述客户端本地保存的未同步版本产生回退的情况下,确定获取所述第一字节流的最新数据版本成功;所述方法还包括:所述客户端在所述最新未同步数据版本将导致所述客户端本地保存的未同步版本产生回退的情况下,确定重新获取所述第一字节流的最新数据版本,或者确定获取所述第一字节流的最新数据版本失败。
10.在一种可能的实现方式中,所述方法还包括:所述客户端向所述元数据节点发送请求信息,所述请求信息用于请求获取所述第一字节流的最新数据版本或者请求同步所述第一字节流的数据;所述客户端从所述元数据节点接收指示信息,所述指示信息用于指示所述第一数据节点组的位置。
11.在一种可能的实现方式中,所述方法还包括:所述元数据节点将所述最新未同步数据版本同步为已同步版本;所述元数据节点为所述第一字节流分配第二数据节点组,所述第二数据节点组用于继续存储所述第一字节流的写入的数据。
12.第二方面,本技术提供一种分布式存储系统,包括:第一数据节点组,包括多个数据节点,用于存储第一字节流的当前写入的数据;客户端,用于从所述第一数据节点组获取所述第一字节流的多个未同步数据版本,所述未同步数据版本为所述第一数据节点组存储的未同步的数据版本;元数据节点,用于根据预设规则,从所述多个未同步数据版本中选择目标未同步数据版本;以及确定最新未同步数据版本,所述最新未同步数据版本是所述目标未同步数据版本和所述元数据节点当前维护的未同步数据版本中写入长度更长的版本。
13.第三方面,提供了一种元数据节点,包括处理器,该处理器用于从存储器调用计算机程序,当所述计算机程序被执行时,该处理器用于执行上述第一方面或第一方面中任意可能的实现方式中由元数据节点执行的方法。
14.第四方面,提供了一种数据节点,包括处理器,该处理器用于从存储器调用计算机程序,当所述计算机程序被执行时,该处理器用于执行上述第一方面或第一方面中任意可能的实现方式中由数据节点执行的方法。
15.第五方面,提供了一种客户端,包括处理器,该处理器用于从存储器调用计算机程序,当所述计算机程序被执行时,该处理器用于执行上述第一方面或第一方面中任意可能的实现方式中由客户端执行的方法。
16.第六方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于执行上述第一方面或第一方面的任意可能的实现方式中由元数据节点执行的方法的代码。
17.第七方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于执行上述第一方面或第一方面的任意可能的实现方式中由数据节点执行的方法的代码。
18.第八方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于执行上述第一方面或第一方面的任意可能的实现方式中由客户端执行的方法的
代码。
19.在本技术实施例中,由客户端驱动各数据节点获取当前写入的数据流的未同步数据版本,并发送至元数据节点,避免了元数据节点发送大量请求到数据节点,从而减轻了元数据节点的信令开销和负担。通过客户端协同获取数据版本,中心化的元数据节点决策最新未同步数据版本的方案,能够改善各客户端提供的未同步数据版本出现版本分歧和版本回退的问题,保证了系统的强一致性,提高了系统的管理效率。
附图说明
20.图1是本技术一实施例的分布式存储系统的架构示意图;
21.图2是本技术一实施例的用于分布式存储系统的控制方法的流程示意图;
22.图3是本技术一实施例的用于分布式存储的控制方法的交互示意图;
23.图4是本技术一实施例的用于分布式存储的控制方法的具体流程图;
24.图5是本技术一实施例的用于分布式存储的控制方法的具体流程图;
25.图6是本技术一实施例的一种元数据节点600的结构示意图;
26.图7是本技术一实施例的一种数据节点700的结构示意图;
27.图8是本技术一实施例的一种客户端800的结构示意图。
具体实施方式
28.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
29.为了便于理解,首先对本技术所涉及的名词进行解释。
30.分布式存储系统:是指将数据分散存储在多台独立的存储服务器的存储架构,可通过多台存储服务器分担存储负荷,并使用位置服务器定位存储信息。分布式存储系统不仅可靠性高,还易于扩展。分布式存储系统有多种分类方法,其中一种分类方法是根据是否包括中心管理节点进行划分。本技术实施例适用于有中心管理节点的分布式存储管理系统。
31.根据存储单元的块的大小划分,存储块可分为块(block)、组块(chunk)两种类型。其中,block指kb(kilobyte,kb)级别的计量单元,例如,block的大小可以为4kb~1兆字节(megabyte,mb)。chunk指mb级别的计量单元。例如,chunk的大小可以为64mb~1吉字节(gigabyte,gb)。
32.仅追加文件(append only file,aof):是指在执行存储进程时,将存储系统执行的每一条写命令追加到磁盘文件中,只允许追加文件但不可改写文件。在本技术实施例中,使用aof方式存储文件的系统也称为appendonly系统。
33.追加写:是指只允许在已写入部分的后面进行写入,不允许修改、覆盖之前写入的部分的一种写操作方式。
34.字节流:是指由字符组成的连续的队列。根据数据的传输方向不同,可分为字节输入流和字节输出流。
35.seal操作:是指一种使数据节点组对字节流不可写的原子操作。
36.图1是本技术一实施例的分布式存储系统的架构示意图。如图1所示,分布式存储系统包括多个客户端(client)、多个数据节点(datanode)以及元数据节点(metanode)。客户端可通过网络与数据节点、元数据节点之间进行通信。下面依次介绍各组成部分的功能。
37.元数据节点:是中心化的元信息存储节点,用于存储数据节点信息和文件状态信息。例如,元数据节点需要保存系统集群的全局视图,并监听系统中的数据节点和磁盘状态,例如,数据节点的上下线等。
38.元数据节点还可以制定和执行文件读写的调度策略。例如,元数据节点可根据客户端读写文件的大小、备份数等参数以及当前各数据节点的状态和权重,为读写文件选择合适的数据节点和备份。元数据节点还可以获取各数据节点的容量、负荷等状态,以便于策略性地分配可写的资源。
39.数据节点:用于存储数据块,通常负责数据块副本的写入,存储,读取,删除等操作。分布式存储系统中通常包括大量的数据节点,这些数据节点构成一个集群。数据节点集群可以根据实际需要进行扩展,以增加承载能力。对于每个字节流,数据节点可以被分成若干个组,每个组中的数据节点均用于保存该字节流写入的一段数据。对于该字节流来说,每个数据节点组存储的数据相同。数据节点组中包含的数据节点的个数可配置。例如,一个数据节点组可包括5~10000个数据节点。在一些示例中,可以将数据节点组的一个数据节点作为主节点,其余数据节点作为备用节点。在一些示例中,为了增加部署上的灵活性,在进行读写操作时,只有主节点提供写服务,并将数据同步到所有备用节点上,备用节点和主节点均可以提供读服务。
40.客户端:是分布式存储系统的接入层,是为客户提供的进行元数据操作和数据读写的组件。客户端可通过网络与元数据节点、数据节点之间进行通信。本技术实施例对上述网络不作限定,只要其能实现通信功能即可,例如,网络可以是局域网或者广域网。
41.在具体实现上,对于写操作,客户端用于接收用户输入的数据流,将数据写入数据节点。对于读操作,客户端用于从多副本中随机选择副本读取。
42.需要说明的是,在本技术实施例中,为了便于区分,可以将正在写入数据的客户端称为写者,正在读取数据的客户端称为读者。
43.本技术实施例的方案适用于append only的、单写者多读者的分布式存储系统。这类系统在写入时,仅允许一个写者以追加写的形式写入。为保障数据可靠,客户端在写入时数据会以多个副本的形式写到一个数据节点组中,当写到预定长度或者写失败时,可以向元数据节点申请一个新的数据节点组继续写入数据。每一段连续在一个数据节点组输入的数据称为数据块。
44.分布式存储系统期望于提供强一致性,即当写者写入成功时,落盘数据需要保证对读者实时可见,并且读者看到的数据不能发生状态回退。在写者发生故障而失去写者锁之后,若产生后续写者,则需要保证前一写者不可再写,后续写者在前一写者写成功后开始写入。因此,分布式存储系统需要对每一个正在写入的字节流确定最新的数据状态。其中,对于appendonly系统,确定最新的数据状态即是指确定最新的写入长度。
45.另外,为了保证用户体验,分布式存储系统读写也需要提供近乎于硬件能力的性能,字节流的读写打开操作也需要保证高可用性。
46.本技术实施例提供了一种适用于分布式存储系统的控制方法,通过分布式的客户端协调各部件以及处于中心的元数据节点进行决策的方式确定数据状态。由于采用了客户端进行协助,因此数据读写不需要向元数据节点同步元数据,并且能够保证在对字节流进行读写操作时不会发生状态回退。该方法避免了确定数据状态时需元数据节点查询所有在写的数据节点作决策,也通过中心化决策避免了不同版本的客户端的行为不同导致数据状态确定错误。
47.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
48.图2是本技术一实施例的用于分布式存储系统的控制方法的流程示意图。该方法适用于图1所示的分布式存储系统。如图2所示,该方法包括以下内容。
49.s201、客户端从第一数据节点组获取第一字节流的多个未同步数据版本,第一数据节点组用于存储第一字节流的当前写入的数据,第一数据节点组中包括多个数据节点,未同步数据版本为第一数据节点组存储的未同步的数据版本。
50.应理解,在本技术实施例中,分布式存储系统中存储的数据分为两种类型,即已同步数据和未同步数据。已同步数据是指存储该数据的数据节点组已无法继续追加数据,必须从一个新的数据节点组进行写入。未同步数据是指存储该数据的数据节点组还可以继续写入数据。元数据节点中可以维护上述已同步数据版本和未同步数据版本。
51.第一数据节点组可以指正在存储当前写入数据的数据节点组,即该数据节点组中存储的数据为未同步数据。上述第一字节流可以指由一个客户端组进行读写的文件所对应的字节流。一个客户端组可包括一个或多个客户端,在同一时间内,只允许一个客户端执行写操作,而所有的客户端可以执行读操作。s201中的客户端可以为上述客户端组中的任一客户端。
52.数据节点组中的每个数据节点用于存储客户端写入的数据版本。其中,由于网络延时等非理想问题,每个数据节点存储的数据版本之间可能存在不同步的情况。
53.上述客户端从第一数据节点组获取多个未同步数据版本,可以指客户端从分别从第一数据节点组中的多个数据节点获取未同步数据版本。在一些示例中,客户端可以向元数据节点发送请求信息,该请求信息用于请求获取第一字节流的最新数据版本,或者请求同步第一字节流的数据。在接收到该请求信息之后,元数据节点可以向客户端发送指示信息,该指示信息用于指示第一数据节点组的位置信息。或者说,该指示信息用于指示存储第一字节流的未同步数据版本的数据节点组的位置信息。或者说,该指示信息用于指示存储第一字节流的当前写入数据的数据节点组的位置信息。客户端可以根据该指示信息,向第一数据节点组中的数据节点发送获取未同步数据版本的请求,以获取未同步数据版本。
54.可以理解为,在本技术实施例中,可以由客户端主动发起获取最新数据版本或者同步数据的请求。例如,客户端在进行读写打开操作时,便存在获取第一字节流的最新数据版本或者同步数据的需求。
55.还需说明的是,上述最新数据版本包括两部分内容,一部分为第一字节流的已同步数据版本,另一部分为最新维护的未同步数据版本。其中,已同步数据版本由元数据节点维护,可以通过元数据节点获取。而最新维护的未同步数据版本则需要元数据节点对各数
据节点存储的未同步数据版本之间进行决策。
56.s202、元数据节点从客户端接收多个未同步数据版本。
57.客户端在从第一数据节点组获取上述未同步数据版本之后,可以向元数据节点发送未同步数据版本,以便于元数据节点从中进行决策,选择最新的未同步数据版本。
58.在本技术实施例中,由客户端驱动各数据节点获取当前写入的数据流的未同步数据版本,并发送至元数据节点进行决策,从而减轻了元数据节点的信令开销和负担。
59.s203、元数据节点根据预设规则,从多个未同步数据版本中选择目标未同步数据版本。
60.其中,本技术实施例对选择目标未同步数据版本的预设规则不作具体限定。上述预设规则可以通过系统设置或者预先规定。在一些示例中,上述预设规则可以根据第一字节流的配置相关。
61.可选地,可以对多个未同步数据版本的写入长度进行比较,从中选择目标未同步数据版本。例如,可以选择写入长度最短的版本为目标未同步数据版本。或者,也可以根据预设的排序名次选择目标未同步数据版本,例如,也可以选择写入长度第k 1短的版本为目标未同步数据版本,k为整数,且0≤k≤n-1,n为第一数据节点中的数据节点的数目。其中,未同步数据版本的写入的数据块的长度越短,则版本越低;写入的数据块长度越长,则版本越高。
62.在一些示例中,对于每一个写入的字节流,可以分配一个配置参数k。这个配置表示写入多副本时允许存在k个副本未返回成功的情况下,允许返回用户成功。由于元数据节点决策的目标未同步数据版本不能比写入成功的版本低,决策目标未同步数据版本时应该跳过这k个副本,所以可以从第一数据节点组中得到的未同步版本中选择写入长度为第(k 1)短的版本。
63.例如,对于一个字节流,若只允许所有副本写成功才能返回用户成功,即k=0,则决策目标未同步数据版本时从多个未同步版本中选择最低的版本。
64.再例如,对于一个字节流,若允许有1个副本没返回成功就能返回用户成功,即k=1,则决策目标未同步版本时从未同步版本中选择第二低的版本。
65.s204、元数据节点确定最新未同步数据版本,最新未同步数据版本是目标未同步数据版本和元数据节点当前维护的未同步数据版本中写入长度更长的版本。
66.应理解,为了避免出现版本回退的现象,元数据节点需要将目标未同步数据版本和当前维护的未同步数据版本中选择更高的版本作为最新未同步数据版本,从而可以保证元数据节点决策出的最新未同步数据版本不会出现回退。
67.例如,元数据可以在多个未同步数据版本中选择最低版本,并将该最低版本与元数据节点维护的未同步数据版本进行比较,从两者之中选择更低的版本作为最新未同步数据版本,并将最新未同步数据版本作为最新的未同步数据版本进行维护。
68.在一些示例中可能存在元数据节点尚未存储当前维护的未同步数据版本的情况,此时,可以将该目标未同步数据版本确定为最新未同步数据版本。
69.可选地,若客户端仅请求获取最新数据版本,元数据节点可以将最新未同步数据版本作为最新维护的未同步数据版本,并向客户端发送该最新数据版本。
70.可选地,在需要同步第一字节流的数据的情况下,元数据节点可以将最新未同步
数据版本同步到已同步版本中。
71.在一些示例中,若客户端发出的请求信息为请求获取第一字节流的最新数据版本,则元数据节点可以向客户端发送最新未同步数据版本以及元数据节点当前维护的第一字节流的已同步数据版本。相应地,客户端接收该最新未同步数据版本以及已同步数据版本。客户端确定第一字节流的最新数据版本,第一字节流的最新数据版本包括已同步数据版本和最新未同步数据版本。
72.可选地,若最新未同步数据版本不会导致客户端本地保存的未同步版本产生回退,则客户端确定获取第一字节流的最新数据版本成功。若最新未同步数据版本将导致客户端本地保存的未同步版本产生回退,则客户端将重新获取第一字节流的最新数据版本,或者确定获取第一字节流的最新数据版本失败。上述方案可以使得客户端读取的数据版本不会回退,从而保证了系统的强一致性。
73.在另一些示例中,若客户端发出的请求信息用于请求同步第一字节流的数据,则元数据节点可以将最新未同步数据版本同步为已同步版本,并为第一字节流分配第二数据节点组,第二数据节点组用于继续存储第一字节流的写入的数据。
74.在本技术实施例中,由客户端驱动各数据节点获取当前写入的数据流的未同步数据版本,并发送至元数据节点,避免了元数据节点发送大量请求到数据节点,从而减轻了元数据节点的信令开销和负担。通过客户端协同获取数据版本,中心化的元数据节点决策最新未同步数据版本的方案,能够改善各客户端提供的未同步数据版本出现版本分歧和版本回退的问题,保证了系统的强一致性,提高了系统的管理效率。
75.另外,通过客户端从元数据节点获取未同步数据版本的流程中,数据块可以继续在同一数据节点组中写入,无需重新分配数据节点组,从而避免了大量小数据块出现,以及字节流到数据块映射复杂的问题,能够减少资源占用和管理复杂度。
76.图3是本技术一实施例的用于分布式存储的控制方法的交互示意图。其中展示了系统中的各模块存放的数据和获取版本时的交互。图3中以第一数据节点组包括数据节点1~数据节点3,客户端组包括客户端1和客户端2为例进行说明。其中,客户端2可以是正在写入数据的客户端,客户端1可以是具有获取最新数据版本或者同步数据需求的客户端。客户端1可以从各数据节点获取未同步数据版本,并将多个未同步数据版本发送至元数据节点。
77.继续参见图3,元数据节点将一个字节流的数据分为未同步数据和已同步数据。已同步数据对应的数据块均不可再写入,在需要继续写入第一字节流时,元数据节点可以为之分配一组新的数据节点组。新的数据节点组中写入的数据为未同步数据。元数据节点可以同时维护已同步数据版本和未同步数据版本。其中,未同步数据版本是通过客户端上报各数据节点的未同步数据版本得到的。
78.在一些示例中,在客户端需要获取字节流的最新状态并且不需要同步时,可以查询各数据节点中的未同步数据版本,并将多个未同步数据版本上传至元数据节点中,由元数据节点决策最新的未同步数据版本。
79.在一些示例中,在客户端需要同步字节流状态时,也可以查询各数据节点的未同步数据版本并上传至元数据节点中,元数据节点决策最新的未同步数据版本之后,将其加入到已同步数据版本,并为字节流分配新的数据节点组。
80.图4是本技术一实施例的用于分布式存储的控制方法的具体流程图。其描述了客
户端获取最新数据版本的过程。如图4所示,该方法包括以下内容。
81.s401、客户端向元数据节点发送请求信息,该请求信息用于请求获取第一字节流的最新数据版本。
82.其中,上述客户端可以是客户端组中的任一客户端。客户端组可以指对第一字节流具有读写权限的多个客户端的集合。
83.s402、元数据节点向客户端发送指示信息,该指示信息用于指示存储第一字节流的未同步数据版本的第一数据节点组的位置信息。
84.s403、元数据节点向客户端发送当前维护的第一字节流的已同步数据版本。
85.s404、客户端根据第一数据节点组的位置信息,分别通过第一数据节点组中的多个数据节点获取第一字节流的多个未同步数据版本。
86.例如,客户端可以向各个数据节点发送问询信息,以请求获取第一字节流的未同步数据版本。
87.s405、客户端向元数据节点发送上述多个未同步数据版本.
88.s406、元数据节点根据预设规则,从多个未同步数据版本中选择目标未同步数据版本。
89.其中,关于预设规则的内容,可参考前文中的描述,此处不再赘述。
90.s407、元数据节点确定最新未同步数据版本,最新未同步数据版本是目标未同步数据版本和元数据节点当前维护的未同步数据版本中写入长度更长的版本。
91.s408、元数据节点向客户端发送最新未同步数据版本。
92.s409、客户端确定最新数据版本,最新数据版本包括最新未同步数据版本和已同步数据版本。
93.在一些示例中,客户端确定最新未同步数据版本是否会导致客户端的版本回退,若不会导致版本回退,则接受该最新未同步数据版本,若会导致版本回退,则请求重试或确定获取最新数据版本失败。
94.图5是本技术一实施例的用于分布式存储的控制方法的具体流程图。其描述了同步字节流数据的过程。其中,为了简洁,图5的方案中与图4相同或相似的内容,此处不再赘述。如图5所示,该方法包括以下内容。
95.s501、客户端向元数据节点发送请求信息,该请求信息用于请求同步第一字节流的数据。
96.s502、元数据节点向客户端发送指示信息,该指示信息用于指示存储第一字节流的未同步数据版本的第一数据节点组的位置信息。
97.s503、客户端根据第一数据节点组的位置信息,分别通过第一数据节点组中的多个数据节点获取第一字节流的多个未同步数据版本。
98.s504、客户端向元数据节点发送上述多个未同步数据版本.
99.s505、元数据节点根据预设规则,从多个未同步数据版本中选择目标未同步数据版本。
100.s506、元数据节点确定最新未同步数据版本,最新未同步数据版本是目标未同步数据版本和元数据节点当前维护的未同步数据版本中写入长度更长的版本。
101.s507、元数据节点将该最新未同步数据版本同步为已同步版本。
102.s508、元数据节点为第一字节流分配第二数据节点组,第二数据节点组用于继续存储第一字节流的写入的数据。
103.以上描述了本技术实施例涉及的分布式存储系统的控制方法,接下来将结合附图,描述本技术实施例中涉及的装置。
104.图6是本技术一实施例的一种元数据节点600的结构示意图。元数据节点600用于执行上文中由元数据节点执行的方法。
105.元数据节点600包括处理器610,处理器610用于执行存储器620存储的计算机程序或指令,或读取存储器620存储的数据,以执行上文各方法实施例中的方法。可选地,处理器610为一个或多个。
106.可选地,如图6所示,该元数据节点600还包括存储器620,存储器620用于存储计算机程序或指令和/或数据。该存储器620可以与处理器610集成在一起,或者也可以分离设置。可选地,存储器620为一个或多个。
107.可选地,如图6所示,该元数据节点600还包括通信接口630,通信接口630用于信号的接收和/或发送。例如,处理器610用于控制通信接口630进行信号的接收和/或发送。
108.可选地,该元数据节点600用于实现上文各个方法实施例中由元数据节点执行的操作。
109.例如,处理器610用于执行存储器620存储的计算机程序或指令,以实现以下步骤:从客户端接收第一字节流的多个未同步数据版本,上述未同步数据版本是第一数据节点组存储的第一字节流的未同步的数据版本,第一数据节点组中包括多个数据节点;根据预设规则,从多个未同步数据版本中选择目标未同步数据版本;确定最新未同步数据版本,最新未同步数据版本是目标未同步数据版本和元数据节点当前维护的未同步数据版本中写入长度更长的版本。
110.在一些示例中,处理器610还用于:向客户端发送最新未同步数据版本;以及向客户端发送当前维护的第一字节流的已同步数据版本。
111.在一些示例中,处理器610还用于:从客户端接收请求信息,请求信息用于请求获取第一字节流的最新数据版本或者请求同步第一字节流的数据;以及向客户端发送指示信息,指示信息用于指示第一数据节点组的位置。
112.在一些示例中,处理器610还用于:将最新未同步数据版本同步为已同步版本;为第一字节流分配第二数据节点组,第二数据节点组用于继续存储第一字节流的写入的数据。
113.图7是本技术一实施例的一种数据节点700的结构示意图。数据节点700用于执行上文中由数据节点执行的方法。
114.数据节点700包括处理器710,处理器710用于执行存储器720存储的计算机程序或指令,或读取存储器720存储的数据,以执行上文各方法实施例中的方法。可选地,处理器710为一个或多个。
115.可选地,如图7所示,该数据节点700还包括存储器720,存储器720用于存储计算机程序或指令和/或数据。该存储器720可以与处理器710集成在一起,或者也可以分离设置。可选地,存储器720为一个或多个。
116.可选地,如图7所示,该数据节点700还包括通信接口730,通信接口730用于信号的
接收和/或发送。例如,处理器710用于控制通信接口730进行信号的接收和/或发送。
117.可选地,该数据节点700用于实现上文各个方法实施例中由数据节点执行的操作。
118.例如,处理器710用于执行存储器720存储的计算机程序或指令,以实现以下步骤:接收客户端发送的问询信息,问询信息用于请求获取第一字节流的未同步数据版本;向客户端发送第一字节流的未同步数据版本,其中,该数据节点700属于第一数据节点组,第一数据节点组用于存储第一字节流的当前写入的数据,第一数据节点组中包括多个数据节点,未同步数据版本为第一数据节点组存储的未同步的数据版本。
119.图8是本技术一实施例的一种客户端800的结构示意图。客户端800用于执行上文中由客户端执行的方法。
120.客户端800包括处理器810,处理器810用于执行存储器820存储的计算机程序或指令,或读取存储器820存储的数据,以执行上文各方法实施例中的方法。可选地,处理器810为一个或多个。
121.可选地,如图8所示,该客户端800还包括存储器820,存储器820用于存储计算机程序或指令和/或数据。该存储器820可以与处理器810集成在一起,或者也可以分离设置。可选地,存储器820为一个或多个。
122.可选地,如图8所示,该客户端800还包括通信接口830,通信接口830用于信号的接收和/或发送。例如,处理器810用于控制通信接口830进行信号的接收和/或发送。
123.可选地,该客户端800用于实现上文各个方法实施例中由客户端执行的操作。
124.例如,处理器810用于执行存储器820存储的计算机程序或指令,以实现以下步骤:从第一数据节点组获取第一字节流的多个未同步数据版本,第一数据节点组用于存储第一字节流的当前写入的数据,第一数据节点组中包括多个数据节点,未同步数据版本为第一数据节点组存储的未同步的数据版本;向元数据节点发送多个未同步数据版本。
125.在一些示例中,处理器810还用于从元数据节点接收最新未同步数据版本;从元数据节点接收当前维护的第一字节流的已同步数据版本;确定第一字节流的最新数据版本,第一字节流的最新数据版本包括已同步数据版本和最新未同步数据版本。
126.在一些示例中,处理器810具体用于:在确定第一字节流的最新数据版本方面,在最新未同步数据版本不会导致客户端本地保存的未同步版本产生回退的情况下,确定获取第一字节流的最新数据版本成功。
127.在一些示例中,处理器810还用于:在最新未同步数据版本将导致客户端本地保存的未同步版本产生回退的情况下,确定重新获取第一字节流的最新数据版本,或者确定获取第一字节流的最新数据版本失败。
128.在一些示例中,处理器810还用于:向元数据节点发送请求信息,请求信息用于请求获取第一字节流的最新数据版本或者请求同步第一字节流的数据;以及从元数据节点接收指示信息,指示信息用于指示第一数据节点组的位置。
129.在本技术实施例中,处理器是一种具有信号的处理能力的电路,在一种实现中,处理器可以是具有指令读取与运行能力的电路,例如cpu、微处理器、gpu(可以理解为一种微处理器)、或dsp等;在另一种实现中,处理器可以通过硬件电路的逻辑关系实现一定功能,该硬件电路的逻辑关系是固定的或可以重构的,例如处理器为asic或pld实现的硬件电路,例如fpga。在可重构的硬件电路中,处理器加载配置文档,实现硬件电路配置的过程,可以
理解为处理器加载指令,以实现以上部分或全部单元的功能的过程。此外,还可以是针对人工智能设计的硬件电路,其可以理解为一种asic,例如npu、tpu、dpu等。
130.可见,以上装置中的各单元可以是被配置成实施以上方法的一个或多个处理器(或处理电路),例如:cpu、gpu、npu、tpu、dpu、微处理器、dsp、asic、fpga,或这些处理器形式中至少两种的组合。
131.此外,以上装置中的各单元可以全部或部分可以集成在一起,或者可以独立实现。在一种实现中,这些单元集成在一起,以片上系统(system-on-a-chip,soc)的形式实现。该soc中可以包括至少一个处理器,用于实现以上任一种方法或实现该装置各单元的功能,该至少一个处理器的种类可以不同,例如包括cpu和fpga,cpu和人工智能处理器,cpu和gpu等。
132.相应地,本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序/指令被处理器执行时,致使处理器实现图2至图5中元数据节点所执行的方法中的步骤。
133.相应地,本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序/指令被处理器执行时,致使处理器实现图2至图5中数据节点所执行的方法中的步骤。
134.相应地,本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序/指令被处理器执行时,致使处理器实现图2至图5中客户端所执行的方法中的步骤。
135.相应地,本技术实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器实现图2至图5中元数据节点所执行的方法中的步骤。
136.相应地,本技术实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器实现图2至图5中数据节点所执行的方法中的步骤。
137.相应地,本技术实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器实现图2至图5中客户端所执行的方法中的步骤。
138.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
139.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
140.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
141.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
142.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
143.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
144.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
145.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
146.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

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

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

相关文献