CN116266842A - 一种数据系统、数据访问方法及设备 - Google Patents
一种数据系统、数据访问方法及设备 Download PDFInfo
- Publication number
- CN116266842A CN116266842A CN202210142866.0A CN202210142866A CN116266842A CN 116266842 A CN116266842 A CN 116266842A CN 202210142866 A CN202210142866 A CN 202210142866A CN 116266842 A CN116266842 A CN 116266842A
- Authority
- CN
- China
- Prior art keywords
- state
- metadata
- address
- data
- target data
- 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
- 238000000034 method Methods 0.000 title claims description 67
- 230000004044 response Effects 0.000 claims abstract description 85
- 230000003993 interaction Effects 0.000 abstract description 14
- 230000006870 function Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 239000012634 fragment Substances 0.000 description 10
- 230000008859 change Effects 0.000 description 7
- 230000005012 migration Effects 0.000 description 6
- 238000013508 migration Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000002146 bilateral effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据系统、数据访问方法及设备,本申请中,客户端访问服务端中数据时,向服务端发送数据请求,数据请求包括序列,序列包括元数据状态的地址、元数据的地址以及元数据状态的地址。服务端根据序列获取多个数据,该多个数据包括元数据、获取元数据之前的第一状态、获取元数据之后的第二状态。服务端在获取该多个数据之后,向客户端发送数据响应,数据响应包括元数据、第一状态、以及第二状态。客户端在向服务端请求元数据时,客户端通过数据请求从服务端获取多个数据,能够有效提升服务端与客户端之间的交互效率。客户端获取了第一状态和第二状态之后,通过该第一状态和第二状态确定元数据的完整性,保证客户端能够准确的访问服务端中的数据。
Description
相关申请的交叉引用:
本申请要求在2021年12月16日提交中华人民共和国知识产权局、申请号为202111542089.0、发明名称为“一种数据处理方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及存储技术领域,尤其涉及一种数据系统、数据访问方法及设备。
背景技术
远程直接内存访问(remote direct memory access,RDMA),尤其是单边RDMA,能够绕过远程主机中的处理器,直接通过远程主机的网卡访问远程主机中数据。由于RDMA绕过了处理器,能够大量节约处理器资源,能够有效提升数据交互效率。
但对于采用分布式架构的存储系统,该种存储系统中包括多个节点,节点状态的变化(如节点扩充、节点故障、节点间的数据迁移等)会影响存储系统中数据的存储位置。当客户端通过单边RDMA访问分布式存储系统中节点存储的数据时,由于绕过了节点的处理器,无法感知分布式存储系统中节点状态的变化,会导致数据访问失败。
发明内容
本申请提供一种数据系统、数据访问系统及设备,用以保证准确地读取服务端中的数据。
第一方面,本申请实施例提供了一种数据系统,该数据系统包括客户端以及服务端。当客户端需要从服务端读取数据时,可以向服务端发送数据请求,数据请求包括序列,序列包括:第一状态的地址、元数据的地址以及第二状态的地址,其中,第一状态和第二状态为元数据的状态,该第一状态和第二状态用于描述元数据是否发生变化,第二状态的地址与第一状态的地址相同。
服务端在接收到数据请求后,可以根据序列获取多个数据,该多个数据包括元数据、获取元数据之前的第一状态、以及获取元数据之后的第二状态。服务端在获取该多个数据之后,可以向客户端发送数据响应,数据响应包括元数据、第一状态、以及第二状态。
通过上述系统,当客户端需要读取服务端中的数据,客户端在向服务端请求元数据时,可以通过一个数据请求向服务端请求元数据、获取该元数据之前的元数据状态(第一状态)以及获取该元数据之后的元数据状态(第二状态)。也就是说,客户端可以通过数据请求从服务端获取多个数据,能够有效提升服务端与客户端之间的交互效率。另外,客户端在获取了第一状态和第二状态之后,可以通过该第一状态和第二状态确定在获取元数据时该元数据的变化情况,便于确定元数据的完整性以及有效性,以保证客户端能够准确的访问服务端中的数据。
在一种可能的实现方式中,序列包括第一状态的地址、元数据的地址、第二状态的地址以及目标数据的归属状态的地址。也就是说,该序列中在第一状态的地址、元数据的地址、第二状态的地址之后,还包括目标数据的归属状态的地址。目标数据为元数据所描述的数据,服务端向客户端反馈的数据响应还包括目标数据的归属状态,服务端在获取元数据、第一状态、以及第二状态之后,还可以根据归属状态的地址获取目标数据的归属状态。
通过上述系统,服务端可以按照序列中各个地址的顺序依次获取第一状态、元数据、第二状态以及目标数据的归属状态。服务端可以将获取的多个数据携带在数据响应中,并将该数据响应反馈给客户端,以便客户端能够从数据响应中,获取第一状态、元数据、第二状态以及目标数据的归属状态,该客户端能够进一步确定该元数据的完整性,保证后续可以准确访问目标数据。
在一种可能的实现方式中,客户端在接收数据响应后,可以从中获取元数据、第一状态以及第二状态。客户端可以对第一状态和第二状态进行比对,确定第一状态与第二状态是否一致。
通过上述系统,客户端能够利用第一状态与第二状态的比对结果确定元数据的完整性,以便保证客户端基于完整的元数据能够准确的获取目标数据。
在一种可能的实现方式中,元数据中记录了目标数据的归属状态,客户端在接收到数据响应后,可从中获取第一状态、元数据、第二状态、以及目标数据的归属状态。客户端除了对第一状态和第二状态进行比对,还可以对目标数据的归属状态与元数据中记录的目标数据的归属状态进行比对,确定目标数据的归属状态与元数据中记录的目标数据的归属状态是否一致。
通过上述系统,客户端能够利用第一状态与第二状态的比对结果、以及目标数据的归属状态与元数据中记录的目标数据的归属状态的比对结果确定元数据的完整性,以便保证客户端基于完整的元数据能够准确的获取目标数据。
在一种可能的实现方式中,若数据响应中携带第一状态、第二状态以及元数据,客户端在确定第一状态与第二状态一致的情况下,根据元数据从服务端获取目标数据。
若数据响应中携带第一状态、第二状态、元数据以及目标数据的归属状态,客户端在确定第一状态与第二状态一致、以及目标数据的归属状态与元数据中记录的目标数据的归属状态一致情况下,根据元数据从服务端获取目标数据。
若数据响应中携带第一状态、第二状态、元数据以及目标数据的归属状态,客户端在确定第一状态与第二状态不一致、或目标数据的归属状态与元数据中记录的目标数据的归属状态不一致情况下,客户端可以确定该元数据无效,客户端可以再次向服务端请求该元数据,或与服务端交互确定该目标数据归属的服务端。
通过上述系统,客户端能够根据数据响应中携带的数据确定元数据的完整性,以便后续能够准确的从服务端读取目标数据。
在一种可能的实现方式中,序列包括第一状态的地址、元数据的地址、第二状态的地址、目标数据的归属状态的地址和目标数据的地址。也即在该序列中,第一状态的地址、元数据的地址、第二状态的地址之后还包括归属状态的地址、目标数据的地址,目标数据为元数据所描述的数据;该数据响应中包括目标数据的归属状态和目标数据;服务端在获取元数据、第一状态、以及第二状态之后,还可以根据目标数据的归属状态的地址获取目标数据的归属状态,根据目标数据的地址获取目标数据。该目标数据的地址是客户端预先保存的,如该客户端之前利用目标数据的地址访问该目标数据时,可以保存该目标数据的元数据,目标数据的元数据中包括该目标数据的地址,当然,客户端也可以仅保存该目标数据的地址。
通过上述系统,当客户端需要读取服务端中的数据,客户端在向服务端请求元数据时,可以通过一个数据请求向服务端请求元数据、第一状态、第二状态、以及该目标数据。客户端通过一个数据请求可以请求多个数据,能够有效减少客户端与服务端的交互次数,提升服务端与客户端之间的交互效率。
在一种可能的实现方式中,客户端本地可以保存有元数据,客户端在确定本地保存的元数据与从服务端获取的元数据不一致的情况下,根据从服务端获取的元数据从服务端获取目标数据。
通过上述系统,客户端可以直接比较元数据的一致性,确定元数据是否发送变化,在确定不一致的情况下,在利用从服务端获取的元数据读取目标数据,能够保证最终获取的目标数据的准确性。
在一种可能的实现方式中,客户端在发送数据请求时,可以基于RDMA向服务端的网卡发送数据请求。
通过上述系统,客户端基于RDMA向服务端的网卡发送数据请求,可以绕过服务端的处理器,能够减少对服务端的处理器的占用。
在一种可能的实现方式中,服务端内在处理该数据请求时,可以由该服务端中的网卡处理该数据请求,该网卡可以根据序列分别获取元数据、获取元数据之前的第一状态、以及获取元数据之后的第二状态;向客户端发送数据响应。
通过上述系统,该服务端中的网卡可以更加高效的处理该数据请求,另外也可以减少对服务端中处理器的资源的占用。
第二方面,本申请实施例提供了一种数据访问方法,该方法可以由服务端执行,有益效果可以参见第一方面的相关说明。在该方法中,服务端可以接收来自客户端的数据请求,数据请求包括序列,序列包括:第一状态的地址、元数据的地址以及第二状态的地址,其中,第一状态和第二状态用于描述元数据是否发生变化,第二状态的地址与第一状态的地址相同;服务端在接收到该数据请求后,可以根据序列分别获取元数据、获取元数据之前的第一状态、以及获取元数据之后的第二状态;并向客户端发送数据响应,数据响应包括元数据、第一状态、以及第二状态。
在一种可能的实现方式中,序列还包括目标数据的归属状态的地址,目标数据的归属状态的地址位于第二状态的地址之后,目标数据为元数据所描述的数据,数据响应还包括目标数据的归属状态,服务端在获取元数据、第一状态、以及第二状态之后,可以根据目标数据的归属状态的地址获取归属状态。
在一种可能的实现方式中,序列还包括目标数据的归属状态的地址和目标数据的地址,目标数据的归属状态的地址位于第二状态的地址之后,目标数据的地址位于目标数据的归属状态的地址之后,目标数据为元数据所描述的数据;数据响应还包括目标数据的归属状态以及目标数据。服务端在获取元数据、第一状态、以及第二状态之后,还可以根据归属状态的地址获取归属状态,根据目标数据的地址获取目标数据。
在一种可能的实现方式中,服务端内部在处理该数据请求时,可以由服务端的网卡处理该数据请求,并反馈数据响应。也就是说,服务端的网卡可以根据序列分别获取元数据、获取元数据之前的第一状态、以及获取元数据之后的第二状态;并向客户端发送数据响应。
第三方面,本申请实施例提供了一种数据访问方法,该方法可以由客户端执行,有益效果可以参见第一方面的相关说明,此处不再赘述。该方法中,客户端可以向服务端发送数据请求,数据请求包括序列,序列包括:第一状态的地址、元数据的地址以及第二状态的地址,其中,第一状态和第二状态用于描述元数据是否发生变化,第二状态的地址与第一状态的地址相同。之后,客户端可以接收服务端发送的数据响应,数据响应包括元数据、第一状态、以及第二状态。
在一种可能的实现方式中,序列还包括目标数据的归属状态的地址,目标数据的归属状态的地址位于第二状态的地址之后,目标数据为元数据所描述的数据,数据响应还包括目标数据的归属状态。
在一种可能的实现方式中,客户端在接收到数据访问响应之后,可以对第一状态和第二状态进行比对,确定第一状态与第二状态是否一致。
在一种可能的实现方式中,元数据中记录了目标数据的归属状态,客户端在接收到数据访问响应之后,客户端可以对目标数据的归属状态以及该元数据中记录的目标数据的归属状态进行比对,确定目标数据的归属状态与元数据中记录的目标数据的归属状态是否一致。
在一种可能的实现方式中,客户端在确定元数据的完整性时,若数据响应中携带第一状态、第二状态以及元数据,客户端在确定第一状态与第二状态一致的情况下,根据元数据从服务端获取目标数据。
若数据响应中携带第一状态、第二状态、元数据以及目标数据的归属状态,客户端在确定第一状态与第二状态一致、以及目标数据的归属状态与元数据中记录的目标数据的归属状态一致情况下,根据元数据从服务端获取目标数据。
若数据响应中携带第一状态、第二状态、元数据以及目标数据的归属状态,客户端在确定第一状态与第二状态不一致、或目标数据的归属状态与元数据中记录的目标数据的归属状态不一致情况下,客户端可以确定该元数据无效,客户端可以再次向服务端请求该元数据,或与服务端交互确定该目标数据归属的服务端。
在一种可能的实现方式中,序列还包括目标数据的归属状态的地址和目标数据的地址,目标数据的归属状态的地址位于第二状态的地址之后,目标数据的地址位于目标数据的归属状态的地址之后,目标数据为元数据所描述的数据;数据响应中包括目标数据的归属状态和目标数据。
在一种可能的实现方式中,客户端向客户端发送数据请求时,可以基于RDMA向服务端的网卡发送数据请求。
第四方面,本申请实施例还提供了一种数据访问装置,该数据访问装置具有实现上述第二方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的单元。在一个可能的设计中,装置的结构中包括接收单元、获取单元以及发送单元,这些单元可以执行上述第二方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第五方面,本申请实施例还提供了一种数据访问装置,该数据访问装置具有实现上述第三方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的单元。在一个可能的设计中,装置的结构中包括接收单元、以及发送单元,可选的,还包括确定单元,这些单元可以执行上述第三方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第六方面,本申请实施例还提供了一种计算设备,该计算设备包括处理器、网卡以及存储器。
在一种可能的实施方式中,该网卡具有实现上述第二方面以及第二方面的各个可能的实现方式中的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。
在另一种可能的实施方式中,存储器中存储计算机程序指令,处理器与存储器耦合,处理器可调用该存储器中存储的计算机执行指令,执行上述第三方面以及第三方面的各个可能的实现方式中的方法。
第七方面,本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第二方面以及第二方面的各个可能的实现方式中的方法。当其在计算机上运行时,使得计算机执行上述第三方面以及第三方面的各个可能的实现方式中的方法。
第八方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面以及第二方面的各个可能的实现方式中的方法。当其在计算机上运行时,使得计算机执行上述第三方面以及第三方面的各个可能的实现方式中的方法。
第九方面,本申请还提供一种计算机芯片,芯片与存储器相连,芯片用于读取并执行存储器中存储的软件程序,执行上述第二方面以及第二方面的各个可能的实现方式中的方法或执行上述第三方面以及第三方面的各个可能的实现方式中的方法。
附图说明
图1为本申请提供的一种系统的架构示意图;
图2为本申请提供的一种数据访问方法示意图;
图3~图4为本申请提供的一种数据访问装置的结构示意图。
具体实施方式
在对本申请所提供的数据处理方法进行说明之前,先对本申请涉及的概念进行说明:
1、元数据(metadata)。
又称中介数据、中继数据。元数据为描述数据的数据(data about data),元数据可以指示数据的属性,如元数据可以记录数据的存储地址、数据的归属状态等。
其中,该存储地址通常为该数据在存储系统中的物理地址,数据的归属状态描述的是存储系统中该元数据所描述的数据所在的节点。
本申请实施例并不限定元数据记录数据的归属状态的方式,下面介绍一种记录数据的归属状态的方式。
在存储系统中,数据是以分片为单位进行存储的,存储系统中节点之间的数据的迁移也可以以分片为单位进行。一个分片包括多个数据。对于任一分片,在存储系统中的节点之间每迁移一次,该分片的版本号会发生更新。例如,该分片从节点A迁移到节点B,节点A中记录的分片的分片版本号将保持不变,节点B上该分片的版本号会加一。另外,该分片中数据的元数据中可以包括分片的版本号。仍以分片从节点A迁移到节点B为例,在分片迁移之前,该分片中数据的元数据中分片的版本号与节点A记录的分片版本号一致,在分片迁移之后,向该分片写入新的数据时,新的数据的元数据中分片的版本号与节点B记录的分片版本号一致。需要说明的是,本申请实施例并不限定存储系统的类型,可以为分布式存储系统,也可以为集中式存储系统。
2、元数据状态。
元数据本身也可以看做一种数据。对于任一元数据,存在元数据的描述头,该描述头可以记录该元数据状态。当元数据发生更新时,该元数据状态也会相应更新。
本申请实施例并不限定记录该元数据状态的方式。例如,元数据状态可以利用一个可变的数值表征,每当元数据发生一次变化,该数值会加一。
3、远程直接内存访问(remote direct memory access,RDMA)。
RDMA是一种绕过远程设备(如存储系统中的节点)操作系统内核访问其内存中数据的技术,由于不经过操作系统,不仅节省了大量处理器资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟,尤其适合在大规模并行计算机集群中有广泛应用。
RDMA有几大特点,(1)数据通过网络与远程设备间进行数据传输;(2)没有操作系统内核的参与,有关发送传输的所有内容都卸载到网卡上;(3)在用户空间虚拟内存与网卡之间直接进行数据传输不涉及操作系统内核,没有额外的数据移动和复制。
4、单边RDMA和双边RDMA。
在这里将需要交互信息的两端分别称为客户端设备(简称客户端)和服务端。客户端部署在用户侧,用户可以通过客户端向服务端发起请求。服务端可以部署在远端,服务端泛指存储系统,具体可以理解为存储系统中的节点。
单边RDMA包括RDMA读(READ)操作以及RDMA写(WRITE)操作。
以单边RDMA中的RDMA读操作为例,RDMA读操作用于客户端读取服务端的存储空间中的数据。
在客户端进行RDMA读操作之前,服务端首先允许客户端预先获取需要读取的数据的地址,即将RDMA读操作要读取的数据的地址、长度等信息发送给客户端。在本申请实施例中,数据的地址包括下列的部分或全部元数据的地址、元数据状态的地址、数据归属状态的地址、目标数据的地址等。客户端在获取需要读取的数据的地址后,可以直接通过服务器端的网卡从服务端的存储空间中读取数据,整个过程不需要处理器参与。
在本申请实施例中客户端设备可以采用单边RDMA的方式发送数据请求,从服务端中读取该数据请求所请求的数据。
双边RDMA包括RDMA发送(SEND)操作以及RDMA接收(RECEIVE)操作,该操作需要服务端的处理器参与。
如图1所示,为本申请实施例提供的一种数据系统的结构示意图,该数据系统包括客户端120和服务端110,该服务端110可以为存储系统中的节点,本申请实施例并不限定存储系统的类型,可以为分布式存储系统,也可以为集中式存储系统。
用户通过应用程序来存取数据。运行这些应用程序的计算机被称为“客户端设备”,也可以简称为客户端120。客户端120可以是物理机,也可以是虚拟机。物理机包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。
用户可以通过客户端120访问服务端110中的数据,如在服务端110中写入数据、或从服务端110中读取数据。
当客户端120检测到用户对应用程序的操作,确定用户需要访问服务端110中的数据,客户端120可以与服务端110进行交互,访问服务端110中的数据。
客户端120在与服务端110交互访问服务端110中的数据时,客户端120可以先获取该数据的元数据,根据该数据的元数据获取该数据。
在获取该数据的元数据时,客户端120可以通过一个数据请求向服务端110请求数据的元数据、以及服务端110在读取该元数据之前以及之后的状态。客户端120在获取数据的元数据、以及服务端110在读取该元数据之前以及之后的状态后,可以通过比对服务端110在读取该元数据之前以及之后的状态,确定数据的元数据的完整性,进一步可以确定利用该元数据所获取的数据的有效性。这样能够避免在读取元数据过程中,元数据发生变化,使得根据元数据所获取的数据无效的情况。另外,通过一个数据请求就可以向服务端110请求多种数据,能够有效减少服务端110与客户端120之间的交互次数,提高数据访问效率。
在获取该数据的元数据时,客户端120也可以通过一个数据请求向服务端110请求数据的元数据、服务端110在读取该元数据之前以及之后的状态、以及数据的归属状态。客户端120在获取数据的元数据、服务端110在读取该元数据之前以及之后的状态、以及数据的归属状态后,可以通过比对服务端110在读取该元数据之前以及之后的状态、或比对获取的数据的归属状态以及元数据中记录的数据的归属状态,确定数据的元数据的完整性,进一步确定利用元数据所获取的数据的有效性。这样能够避免在读取元数据过程中,元数据发生变化或数据的归属状态发生变化,使得根据元数据所获取的数据无效的情况。另外,通过一个数据请求就可以向服务端110请求多种数据,能够有效减少服务端110与客户端120之间的交互次数,提高数据访问效率。
客户端120在与服务端110交互访问服务端110中的数据时,客户端120可以在获取该数据的元数据的同时,利用之前保存的该数据的数据地址获取该数据。客户端120在获取该数据的元数据时,客户端120可以通过一个数据请求向服务端110请求数据的元数据、服务端110在读取该元数据之前以及之后的状态、以及该数据(该数据请求中携带有数据地址)。客户端120在获取数据的元数据、以及服务端110在读取该元数据之前以及之后的状态后,可以通过比对服务端110在读取该元数据之前以及之后的状态,确定数据的元数据的完整性,进一步确定利用之前保存的该数据的数据地址获取该数据的有效性。这样能够避免在读取元数据过程中,元数据发生变化,使得根据元数据所获取的数据无效的情况。在确定元数据完整的情况下,获得的数据也有效,也就无需再利用元数据获取该数据,能够减少服务端110与客户端120的交互次数。另外,通过一个数据请求就可以向服务端110请求多种数据,能够有效减少服务端110与客户端120之间的交互次数,提高数据访问效率。
具体到服务端110的结构,参见图3,该服务端110包括总线111、处理器112、内存113、网卡114以及硬盘115。
需要说明的是,在本申请实施例中以硬盘作为服务端110的持久化存储器为例进行说明,但对机械硬盘或者其他类型的硬盘也同样适用于本申请实施例。
处理器112可以为中央处理器(central processing unit,CPU),该处理器112还可以是其他通用处理器或具备计算功能的模块等。
内存113可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)、动态随机存取存储器(dynamic random access memory,DRAM)等。也可以为非易失性存储器(non-volatile memory),例如存储级存储器(storage-class memory,SCM)等,或者易失性存储器与非易失性存储器的组合等。
该服务端110中还可以包括一个或多个硬盘115。这硬盘115可以用于永久地存储数据。具体到硬盘115内部,硬盘115中也可以包括硬盘缓存以及持久化存储介质。
网卡114用于与客户端120通信,接收客户端120发送的数据请求。
当客户端120向服务端110发送数据请求(例如客户端120采用单边RDMA与服务端110交互)时,在服务端110内部,网卡可以处理该数据请求,根据该数据请求向客户端120反馈该数据请求所请求的数据。例如,网卡114可以通过调用内存113中存储的计算机执行指令,处理该数据访问请求,也即执行本申请实施例提供的数据访问方法。又例如,网卡114也可以调用网卡114内部存储的计算机执行指令,执行本申请实施例提供的数据访问方法。又例如,网卡114上也可以烧写有计算机存储指令,网卡114可以执行本申请实施例提供的数据访问方法。
具体到客户端120的结构,参见图3,该客户端120包括总线121、处理器122、内存123、网卡124。关于总线121、处理器122、内存123、网卡124的功能和作用与总线111、处理器112、内存113、网卡114以及硬盘115类似,具体可以参见前述说明,此处不再赘述。
当客户端120与服务端110交互时,在客户端120内部,处理器122可以调用内存123存储的计算机执行指令,执行本申请实施例提供的数据访问方法。
下面结合如图2,对本申请实施例提供的数据访问方法进行说明,为了方便说明,将该元数据所描述的数据称为目标数据。该方法包括:
步骤201:客户端120在需要访问目标数据时,向服务端110发送数据请求。该数据请求用于向服务端110请求数据,该数据请求中携带有地址序列(地址序列也可以简称为序列),该地址序列包括多个地址。该多个地址为需要向服务端110请求的数据的地址。
用户可以通过操作运行在客户端120上的应用程序,触发客户端120访问存储在服务器中的目标数据。
客户端120在访问目标数据时,需要先获取该目标数据的元数据,根据该元数据确定该目标数据的数据地址,进而客户端120可以根据该目标数据的元数据向服务端110请求该目标数据。
也就是说,客户端120需要先获取元数据,该数据请求所请求的数据包括元数据,另外为了保证元数据的完整性,该数据请求所请求的数据还可以包括其他数据,下面对数据请求所中地址序列包括的地址类型以及该数据请求所请求的数据进行说明:
第一种、地址序列中按序包括元数据状态的地址、元数据的地址、元数据状态的地址。该数据请求用于请求的数据为元数据、读取该元数据之前元数据状态以及读取该元数据状态之后元数据状态。为了方便区分,读取该元数据之前的元数据状态以及读取该元数据状态之后的元数据状态,在本申请实施例中,将读取该元数据之前的元数据状态称为第一状态。将读取该元数据之后的元数据状态称为第二状态。这里的元数据的地址是指目标数据的元数据的地址。元数据状态的地址是指该目标数据的元数据状态的地址。例如,该元数据状态的地址可以为该目标数据的元数据的描述头的地址。
第二种、地址序列中按序包括第一状态的地址、元数据的地址、第二状态的地址、目标数据的归属状态的地址。该数据请求用于请求的数据为元数据、第一状态以及第二状态。这里的数据归属状态的地址是指该目标数据的归属状态的地址。例如,该数据归属状态可以为服务端110中该目标数据所属的分片的版本号,该数据归属状态的地址即为该服务端110中记录该分配的版本号的地址。
第三种、地址序列中按序包括第一状态的地址、元数据的地址、第二状态的地址、目标数据的归属状态的地址、目标数据的地址。该数据请求用于请求的数据为元数据、第一状态、第二状态、目标数据的归属状态以及目标数据。目标数据的地址为客户端120在之前读取该目标数据时所使用的地址,如客户端120之前也读取过目标数据,客户端120在之前读取目标数据时,可以在本地保存该目标数据的元数据或该目标数据的地址。
第四种、地址序列中按序包括第一状态的地址、元数据的地址、第二状态的地址、目标数据的地址。该数据请求用于请求的数据为元数据、第一状态、第二状态、以及目标数据。
值得注意的是,上述地址序列中可能包括的地址为客户端120可以预先获取的,本申请实施例并限定客户端120预先获取该地址序列中包括的地址的方式。例如,对于元数据地址,服务端110可以将各个元数据集中存储在内存中,服务端110可以预先向客户端120提供内存中元数据的起始地址,客户端120设备基于预设的算法计算对于元数据的起始地址进行处理,获得该目标数据的元数据的地址。又例如,对于元数据状态地址,服务端110在存储各个元数据状态时,可以建立元数据状态的地址与相应元数据的地址的关联关系。该关联关系可以是服务端110预先通知给客户端120的,也可以是服务端110与客户端120之间预先预定的。客户端120在确定了元数据的地址之后,可以基于该关联关系和元数据的地址确定该元数据状态的地址。又例如,对于目标数据的归属状态的地址,服务端110可以预先将记录各个分片的版本号的地址通知给客户端120,当客户端120需要确定该目标数据的归属状态时,可以先确定该目标数据所属的分片,之后再进一步确定记录该分片的版本的地址。
步骤202:服务端110接收该数据请求,根据该数据请求获取该数据所请求的数据。
服务端110在接收到该数据请求后,可以获取该数据请求中的地址序列;服务端110按照该地址序列中多个地址的顺序,依次根据各个地址获取该地址上存储的数据。下面对服务端110处理不同地址序列的方式进行说明:
第一种、地址序列中按序包括元数据状态的地址、元数据的地址、元数据状态的地址。
服务端110先根据元数据状态的地址读取第一状态,之后再根据元数据的地址读取元数据,再获取元数据之后,再根据元数据状态的地址读取第二状态。
可见,服务端110在处理该地址序列时,在读取元数据之前以及读取元数据之后,分别读取一次元数据状态,读取的元数据状态分别为第一状态、以及第二状态。
对于服务端110,服务端110自身对数据的处理或服务端110之间的交互,会使得该数据的元数据发生变化。例如,服务端110在服务端110内部对数据进行迁移(元数据记录的数据地址会变化)、修改、删除(该数据的元数据可能会被删除)。服务端110对数据进行处理,可能会导致该数据的元数据的变化,也即服务端110可能会对数据的元数据进行更新,导致元数据状态发生变化。若客户端120发送数据请求以获取元数据的同时,服务端110对该元数据进行了更新,那么可能会导致客户端120从服务器获取的元数据是不完整的。在本申请实施例中,为了避免客户端120在从服务端110获取元数据(也可以理解为,服务端110在客户端120的请求下读取元数据)同时,元数据在更新。数据请求中所携带的地址序列中在元数据的地址之前以及之后还放置有元数据状态的地址。这样,客户端120除了从服务端110获取元数据,还可以从服务器获取读取该元数据之前以及读取该元数据之后的元数据的状态。
第二种、地址序列中按序包括元数据状态的地址、元数据的地址、元数据状态的地址、目标数据的归属状态的地址。
服务端110先根据元数据状态的地址读取第一状态,之后再根据元数据的地址读取元数据,再获取元数据之后,再根据元数据状态的地址读取第二状态,之后再根据目标数据的归属状态的地址读取目标数据的归属状态。
可见,服务端110在处理该地址序列时,除了读取元数据、第一状态、以及第二状态,还读取目标数据的归属状态。
关于获取第一状态以及第二状态的原因可以参见前述说明,此处不再赘述。
对于服务端110,服务端110自身对数据的处理或服务端110之间的交互,会使得该数据的所在服务端110发生变化,如该目标数据所属的分片从该服务端110迁移到其他服务端110,也即该数据归属状态发生变化。例如,服务端110与其他服务端110之间可以进行数据迁移,会导致数据的归属从该服务端110变为另一个服务端110,服务端110自身可以进行数据删除,会导致数据不存在所归属的服务端110。若客户端120发送数据请求以获取数据请求的同时,该目标数据的归属状态发生了变化,那么可能会导致客户端120从服务器获取的元数据是不完整的。在本申请实施例中,为了避免客户端120在从服务端110获取元数据(也可以理解为,服务端110在客户端120的请求下读取元数据)同时,该目标数据的归属状态在变化。数据请求中所携带的地址序列还包括了数据归属状态的地址。这样,客户端120除了从服务端110获取元数据,还可以从服务器获取读取该目标数据的归属状态。
第三种、地址序列中按序包括第一状态的地址、元数据的地址、第二状态的地址、目标数据的归属状态的地址、目标数据的地址。该数据请求用于请求的数据为元数据、第一状态、第二状态、目标数据的归属状态以及目标数据。
服务端110先根据元数据状态的地址读取第一状态,之后再根据元数据的地址读取元数据,再获取元数据之后,再根据元数据状态的地址读取第二状态,之后再根据数据归属状态读取数据归属状态,之后在根据目标数据的地址读取目标数据。
可见,服务端110在处理该地址序列时,除了读取元数据、第一状态、第二状态,以及数据归属状态,还会读取目标数据。
关于读取第一状态、第二状态以及数据归属状态的原因可以参见前述说明,此处不再赘述。
该地址序列中还携带有目标数据的地址,该目标数据的地址为客户端120在此之前从服务端110访问目标数据时所采用的地址。客户端120可以在之前访问该目标数据时,保存该目标数据的地址。由于该地址序列中携带了目标数据的地址,也即是说,服务端110也会读取该目标数据,并反馈给客户端120设备,当客户端120在确定了元数据的完整性后,也就确定了服务端110反馈的目标数据的有效性,在该目标数据有效的情况下,客户端120也就无需再根据元数据从服务端110获取目标数据,而直接获取此次服务端110反馈的目标数据即可。
第四种、地址序列中按序包括第一状态的地址、元数据的地址、第二状态的地址、目标数据的地址。该数据请求用于请求的数据为元数据、第一状态、第二状态、以及目标数据。
服务端110先根据元数据状态的地址读取第一状态,之后再根据元数据的地址读取元数据,再获取元数据之后,再根据元数据状态的地址读取第二状态,之后再根据目标数据的地址读取目标数据。
可见,服务端110在处理该地址序列时,除了读取元数据、第一状态、第二状态,还会读取目标数据。
关于读取第一状态、第二状态以及目标数据的原因可以参见前述说明,此处不再赘述。
步骤203:服务端110向客户端120反馈数据响应,该数据响应中携带有该服务端110读取的数据。
服务端110在按照地址序列读取了数据之后,可以向客户端120反馈携带有所读取的数据。
当地址序列中按序包括第一状态的地址、元数据的地址、第二状态的地址。该数据响应中包括第一状态、元数据、第二状态。
当地址序列中按序包括第一状态的地址、元数据的地址、第二状态的地址、目标数据的归属状态的地址。该数据响应中包括第一状态、元数据以及第二状态、目标数据的归属状态。
当地址序列中按序包括第一状态的地址、元数据的地址、第二状态的地址、目标数据的归属状态的地址、目标数据的地址。该数据响应包括第一状态、元数据、第二状态、目标数据的归属状态以及目标数据。
当地址序列中按序包括第一状态的地址、元数据的地址、第二状态的地址、目标数据的地址。该数据响应包括第一状态、元数据、第二状态、以及目标数据。
步骤204:客户端120接收该数据响应,根据该数据响应校验元数据的完整性。
客户端120在接收到该数据响应后,可以解析该数据响应中携带的数据,以确定元数据的完整性。
当该数据响应中包括第一状态、元数据、第二状态。
客户端120可以对第一状态和第二状态进行比对,当确定第一状态以及第二状态一致,说明元数据在读取之前以及读取之后未发生变化,数据响应中携带的元数据完整,客户端120可以基于该元数据向服务端110请求读取目标数据。当确定第一状态以及第二状态不一致,说明元数据在读取之前以及读取之后发生了变化,数据响应中携带的元数据不完整,客户端120可以再次向服务端110请求元数据,客户端120也可以采用双边RDMA与服务端110交互获取该目标数据。
当该数据响应中包括第一状态、元数据以及第二状态、目标数据的归属状态。
客户端120可以对第一状态和第二状态进行比对,对元数据中记录的目标数据的归属状态以及数据响应中携带的目标数据的归属状态比对。当上述两种比对的结果均指示一致,说明此次获取的元数据完整,且目标数据的归属状态未发生变化,客户端120可以基于该元数据向服务端110请求读取目标数据。当上述两种比对中至少存在一个结果指示不一致,说明此次获取的元数据不完整。之后,客户端120可以再次向服务端110请求元数据,客户端120也可以采用双边RDMA与服务端110交互获取该目标数据。当目标数据的归属状态不一致,客户端120可以与服务端110交互确定该目标数据所归属的服务端110,之后,客户端120可以与该目标数据所归属的服务端110交互获取该目标数据。
当该数据响应包括第一状态、元数据、第二状态、目标数据的归属状态以及目标数据。
客户端120可以对第一状态和第二状态进行比对,对元数据中记录的数据归属状态以及数据响应中携带的数据归属状态比对。当上述两种比对的结果均指示一致,说明此次获取的元数据完整,且数据的归属状态未发生变化,数据响应中携带的目标数据是有效的,客户端120可以直接从数据响应中读取目标数据。当上述两种比对中至少存在一个结果指示不一致,说明此次获取的元数据不完整。之后,客户端120可以再次向服务端110请求元数据,客户端120也可以采用双边RDMA与服务端110交互获取该目标数据。当目标数据的归属状态不一致,客户端120可以与服务端110交互确定该目标数据所归属的服务端110,之后,客户端120可以与该目标数据所归属的服务端110交互获取该目标数据。
需要说明的是,若客户端120之前本地保存过目标数据的元数据,客户端120除了对第一状态和第二状态进行比对,对元数据中记录的数据归属状态以及数据响应中携带的数据归属状态比对,还可以对本地保存的目标数据的元数据以及此次获取的元数据进行比对。也即这种情况下需要进行三种比对,当这三种比对的结果均指示一致,说明此次获取的元数据完整,客户端120可以直接从数据响应中读取目标数据。当这三种比对中至少一个结果指示不一致,说明此次读取的目标数据无效,客户端120不能直接使用数据响应中的目标数据,客户端120可以根据数据响应中的元数据从服务端110重新获取目标数据(如三种比对中只有本地保存的目标数据的元数据与此次获取的元数据的比对的结果指示不一致),客户端120也可以按照前述方式获取目标数据。
当该数据响应包括第一状态、元数据、第二状态、以及目标数据。
客户端120可以对第一状态和第二状态进行比对。当比对的结果指示一致,说明此次获取的元数据完整,数据响应中携带的目标数据是有效的,客户端120可以直接从数据响应中读取目标数据。当比对的结果指示不一致,说明此次获取的元数据不完整,之后,客户端120可以再次向服务端110请求元数据。客户端120也可以采用双边RDMA与服务端110交互获取该目标数据。
需要说明的是,若客户端120之前本地保存过目标数据的元数据,客户端120除了对第一状态和第二状态进行比对,还可以对本地保存的目标数据的元数据以及此次获取的元数据进行比对。也即这种情况下需要进行两种比对,当这两种比对的结果均指示一致,说明此次获取的元数据完整,客户端120可以直接从数据响应中读取目标数据。当这两种比对中至少一个结果指示不一致,说明此次读取的目标数据无效,客户端120不能直接使用数据响应中的目标数据,客户端120可以根据数据响应中的元数据从服务端110重新获取目标数据(如两种比对中只有本地保存的目标数据的元数据与此次获取的元数据的比对的结果指示不一致),客户端120也可以按照前述方式获取目标数据。
需要说明的是,在本申请实施例中,在步骤201以及步骤203中客户端120与服务端110之间的交互可以是基于单边RDMA进行的。在实际应用中,本申请实施例并不限定该服务端110与客户端120交互的方式,凡是可以绕过服务端110的处理器,客户端120与服务端110的网卡直接交互的方式均适用于本申请实施例。
基于与方法实施例同一发明构思,本申请实施例还提供了一种数据访问装置,该数据访问装置用于执行上述如图2所示的方法实施例中服务端执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图3所示,数据访问装置300包括接收单元301、获取单元302以及发送单元303;
接收单元301,用于接收来自客户端的数据请求,数据请求包括序列,序列包括:第一状态的地址、元数据的地址以及第二状态的地址,其中,第一状态和第二状态用于描述元数据是否发生变化,第二状态的地址与第一状态的地址相同;接收单元301可以执行如图2所示的步骤201中服务端执行的方法。
获取单元302,用于根据序列分别获取元数据、获取元数据之前的第一状态、以及获取元数据之后的第二状态。获取单元302可以执行如图2所示的步骤202。
发送单元303,用于向客户端发送数据响应,数据响应包括元数据、第一状态、以及第二状态。发送单元303可以执行如图2所示的步骤203。
在一种可能的实施方式中,序列还包括目标数据的归属状态的地址,目标数据的归属状态的地址位于第二状态的地址之后,目标数据为元数据所描述的数据,数据响应还包括目标数据的归属状态,获取单元302在获取元数据、第一状态、以及第二状态之后,还可以根据目标数据的归属状态的地址获取目标数据的归属状态。
在一种可能的实施方式中,序列还包括目标数据的归属状态的地址和目标数据的地址,目标数据的归属状态的地址位于第二状态的地址之后,目标数据的地址位于目标数据的归属状态的地址之后,目标数据为元数据所描述的数据;获取单元302在获取元数据、第一状态、以及第二状态之后,还可以根据目标数据的归属状态的地址获取目标数据的归属状态,根据目标数据的地址获取目标数据。
在一种可能的实施方式中,获取单元302部署在服务端的网卡上。
基于与方法实施例同一发明构思,本申请实施例还提供了一种数据访问装置,该数据访问装置用于执行上述如图2所示的方法实施例中客户端执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图4所示,数据访问装置400包括接收单元401以及发送单元403。可选的,还可以包括确定单元402。
发送单元403,用于向服务端发送数据请求,数据请求包括序列,序列包括:第一状态的地址、元数据的地址以及第二状态的地址,其中,第一状态和第二状态用于描述元数据是否发生变化,第二状态的地址与第一状态的地址相同。发送单元403可以执行如图2所示的步骤201。
接收单元401,用于接收服务端发送的数据响应,数据响应包括元数据、第一状态、以及第二状态。接收单元401可以执行如图2所示的步骤203。
在一种可能的实施方式中,序列还包括目标数据的归属状态的地址,目标数据的归属状态的地址位于第二状态的地址之后,目标数据为元数据所描述的数据,数据响应还包括目标数据的归属状态。
在一种可能的实施方式中,确定单元402可以接收数据访问响应,确定获取第一状态与第二状态是否一致。
在一种可能的实施方式中,元数据中记录了目标数据的归属状态,确定单元402还可以确定目标数据的归属状态与元数据中记录的目标数据的归属状态是否一致。
在一种可能的实施方式中,若数据响应中携带第一状态、第二状态以及元数据,确定单元402在确定第一状态与第二状态一致的情况下,根据元数据从服务端获取目标数据。
若数据响应中携带第一状态、第二状态、元数据以及目标数据的归属状态,确定单元402在确定第一状态与第二状态一致、以及目标数据的归属状态与元数据中记录的目标数据的归属状态一致情况下,根据元数据从服务端获取目标数据。
若数据响应中携带第一状态、第二状态、元数据以及目标数据的归属状态,确定单元402在确定第一状态与第二状态不一致、或目标数据的归属状态与元数据中记录的目标数据的归属状态不一致情况下,客户端可以确定该元数据无效,客户端可以再次向服务端请求该元数据,或与服务端交互确定该目标数据归属的服务端。
在一种可能的实施方式中,序列还包括目标数据的归属状态的地址和目标数据的地址,目标数据的归属状态的地址位于第二状态的地址之后,目标数据的地址位于目标数据的归属状态的地址之后,目标数据为元数据所描述的数据;数据响应中包括目标数据的归属状态和目标数据。
在一种可能的实施方式中,客户端本地保存的元数据,确定单元402在确定本地保存的元数据与元数据不一致的情况下,根据元数据从服务端获取目标数据。
在一种可能的实施方式中,发送单元403向所述客户端发送数据请求时,可以基于RDMA向所述服务端的网卡发送所述数据请求。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变形在内。
Claims (19)
1.一种数据系统,其特征在于,所述数据系统包括客户端以及服务端;
所述客户端,用于向所述服务端发送数据请求,所述数据请求包括序列,所述序列包括:第一状态的地址、元数据的地址以及所述第二状态的地址,其中,所述第一状态和所述第二状态用于描述所述元数据是否发生变化,所述第二状态的地址与所述第一状态的地址相同;
所述服务端,用于接收所述数据请求,根据所述序列分别获取所述元数据、获取所述元数据之前的所述第一状态、以及获取所述元数据之后的所述第二状态;向所述客户端发送数据响应,所述数据响应包括所述元数据、所述第一状态、以及所述第二状态。
2.如权利要求1所述的系统,其特征在于,所述序列还包括目标数据的归属状态的地址,所述归属状态的地址位于所述第二状态的地址之后,所述目标数据为所述元数据所描述的数据,所述数据响应还包括所述归属状态,所述服务端在获取所述元数据、所述第一状态、以及所述第二状态之后,还用于:
根据所述归属状态的地址获取所述归属状态。
3.如权利要求1或2所述的系统,其特征在于,所述客户端,用于接收所述数据访问响应,确定所述第一状态与所述第二状态是否一致。
4.如权利要求3所述的系统,其特征在于,所述元数据中记录了所述目标数据的归属状态,所述客户端,还用于:
确定所述归属状态与所述元数据中记录的所述目标数据的归属状态是否一致。
5.如权利要求4所述的系统,其特征在于,所述客户端,用于:在所述第一状态与所述第二状态一致、且所述归属状态与所述元数据中记录所述目标数据的归属状态一致的情况下,根据所述元数据从所述服务端获取所述目标数据。
6.如权利要求1所述的系统,其特征在于,所述序列还包括目标数据的归属状态的地址和所述目标数据的地址,所述归属状态的地址位于所述第二状态的地址之后,所述目标数据的地址位于所述归属状态的地址之后,所述目标数据为所述元数据所描述的数据;所述数据响应还包括所述归属状态的地址和所述目标数据;所述服务端在获取所述元数据、所述第一状态、以及所述第二状态之后,还用于:
根据所述归属状态的地址获取所述归属状态,根据所述目标数据的地址获取所述目标数据。
7.如权利要求6所述的系统,其特征在于,所述客户端,还用于:在确定本地保存的元数据与从所述元数据不一致的情况下,根据所述元数据从所述服务端获取所述目标数据。
8.如权利要求1~7任一项所述的系统,其特征在于,所述客户端,具体用于:
基于远程直接内存访问RDMA向所述服务端的网卡发送所述数据请求。
9.如权利要求8所述的系统,其特征在于,所述服务端,具体用于:
所述网卡根据所述序列分别获取所述元数据、获取所述元数据之前的所述第一状态、以及获取所述元数据之后的所述第二状态;向所述客户端发送所述数据响应。
10.一种数据访问方法,其特征在于,所方法包括:
服务端接收来自客户端的数据请求,所述数据请求包括序列,所述序列包括:第一状态的地址、元数据的地址以及所述第二状态的地址,其中,所述第一状态和所述第二状态用于描述所述元数据是否发生变化,所述第二状态的地址与所述第一状态的地址相同;
所述服务端根据所述序列分别获取所述元数据、获取所述元数据之前的所述第一状态、以及获取所述元数据之后的所述第二状态;
所述服务端向所述客户端发送数据响应,所述数据响应包括所述元数据、所述第一状态、以及所述第二状态。
11.如权利要求10所述的方法,其特征在于,所述序列还包括目标数据的归属状态的地址,所述归属状态的地址位于所述第二状态的地址之后,所述目标数据为所述元数据所描述的数据,所述数据响应还包括所述归属状态,所述服务端在获取所述元数据、所述第一状态、以及所述第二状态之后,还包括:
所述服务端根据所述归属状态的地址获取所述归属状态。
12.如权利要求10所述的方法,其特征在于,所述序列还包括目标数据的归属状态的地址和目标数据的地址,所述归属状态的地址位于所述第二状态的地址之后,所述目标数据的地址位于所述归属状态的地址之后,所述目标数据为所述元数据所描述的数据;所述数据响应还包括所述归属状态的地址和所述目标数据;所述服务端在获取所述元数据、所述第一状态、以及所述第二状态之后,还包括:
根据所述归属状态的地址获取所述归属状态,根据所述目标数据的地址获取所述目标数据。
13.如权利要求10~12任一项所述的方法,其特征在于,所述服务端根据所述序列分别获取所述元数据、获取所述元数据之前的所述第一状态,包括:
所述服务端的网卡根据所述序列分别获取所述元数据、获取所述元数据之前的所述第一状态、以及获取所述元数据之后的所述第二状态。
14.一种数据访问装置,其特征在于,所装置包括接收单元、获取单元以及发送单元:
所述接收单元,用于接收来自客户端的数据请求,所述数据请求包括序列,所述序列包括:第一状态的地址、元数据的地址以及所述第二状态的地址,其中,所述第一状态和所述第二状态用于描述所述元数据是否发生变化,所述第二状态的地址与所述第一状态的地址相同;
所述获取单元,用于根据所述序列分别获取所述元数据、获取所述元数据之前的所述第一状态、以及获取所述元数据之后的所述第二状态;
所述发送单元,用于向所述客户端发送数据响应,所述数据响应包括所述元数据、所述第一状态、以及所述第二状态。
15.如权利要求14所述的装置,其特征在于,所述序列还包括目标数据的归属状态的地址,所述归属状态的地址位于所述第二状态的地址之后,所述目标数据为所述元数据所描述的数据,所述数据响应还包括所述归属状态,所述获取单元在获取所述元数据、所述第一状态、以及所述第二状态之后,还用于:
根据所述归属状态的地址获取所述归属状态。
16.如权利要求14所述的装置,其特征在于,所述序列还包括目标数据的归属状态的地址和所述目标数据的地址,所述归属状态的地址位于所述第二状态的地址之后,所述目标数据的地址位于所述归属状态的地址之后,所述目标数据为所述元数据所描述的数据;所述数据响应还包括所述目标数据的归属状态和所述目标数据;所述获取单元在获取所述元数据、所述第一状态、以及所述第二状态之后,还用于:
根据所述归属状态的地址获取所述归属状态,根据所述目标数据的地址获取所述目标数据。
17.如权利要求14~16任一项所述的装置,其特征在于,所述获取单元部署在网卡上。
18.一种计算机存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求10至13任一项所述的方法。
19.一种计算设备,其特征在于,所述计算设备包括网卡,所述网卡执行计算指令用于使计算机执行权利要求10至13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2022/139000 WO2023109864A1 (zh) | 2021-12-16 | 2022-12-14 | 一种数据系统、数据访问方法及设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111542089 | 2021-12-16 | ||
CN2021115420890 | 2021-12-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116266842A true CN116266842A (zh) | 2023-06-20 |
Family
ID=86744080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210142866.0A Pending CN116266842A (zh) | 2021-12-16 | 2022-02-16 | 一种数据系统、数据访问方法及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116266842A (zh) |
WO (1) | WO2023109864A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104754021B (zh) * | 2013-12-31 | 2018-04-13 | 伊姆西公司 | 用于促进对分布式存储系统中的数据的访问的装置和方法 |
CN104618482B (zh) * | 2015-02-02 | 2019-07-16 | 浙江宇视科技有限公司 | 访问云数据的方法、服务器、传统存储设备、系统 |
CN110888889B (zh) * | 2018-08-17 | 2023-08-15 | 阿里巴巴集团控股有限公司 | 一种数据信息更新方法、装置及设备 |
CN110191194B (zh) * | 2019-06-13 | 2020-07-03 | 华中科技大学 | 一种基于rdma网络的分布式文件系统数据传输方法和系统 |
CN111708734A (zh) * | 2020-05-29 | 2020-09-25 | 苏州浪潮智能科技有限公司 | 一种分布式系统的元数据访问方法、系统、设备以及介质 |
-
2022
- 2022-02-16 CN CN202210142866.0A patent/CN116266842A/zh active Pending
- 2022-12-14 WO PCT/CN2022/139000 patent/WO2023109864A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023109864A1 (zh) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108810041B (zh) | 一种分布式缓存系统的数据写入及扩容方法、装置 | |
US8788628B1 (en) | Pre-fetching data for a distributed filesystem | |
US11296940B2 (en) | Centralized configuration data in a distributed file system | |
US10374792B1 (en) | Layout-independent cryptographic stamp of a distributed dataset | |
US9424204B2 (en) | Caching method for distributed storage system, a lock server node, and a lock client node | |
CN104239575A (zh) | 一种虚拟机镜像文件存储、分发方法及装置 | |
US11314454B2 (en) | Method and apparatus for managing storage device in storage system | |
CN107391033B (zh) | 数据迁移方法及装置、计算设备、计算机存储介质 | |
CN115599747B (zh) | 一种分布式存储系统的元数据同步方法、系统及设备 | |
WO2015118865A1 (ja) | 情報処理装置、情報処理システム及びデータアクセス方法 | |
US11157456B2 (en) | Replication of data in a distributed file system using an arbiter | |
CN109947667B (zh) | 数据访问预测方法和装置 | |
CN116560562A (zh) | 一种读、写数据方法及装置 | |
CN110018879B (zh) | 应用于分布式系统的延迟加载方法及装置 | |
CN111796772B (zh) | 缓存的管理方法、缓存节点及分布式存储系统 | |
WO2016206070A1 (zh) | 一种文件更新方法及存储设备 | |
CN113853778A (zh) | 一种文件系统的克隆方法及装置 | |
WO2016090985A1 (zh) | 缓存的读取、读取处理方法及装置 | |
CN116266842A (zh) | 一种数据系统、数据访问方法及设备 | |
CN116868173A (zh) | 降低在恢复操作期间网络延时的影响 | |
CN111221857B (zh) | 从分布式系统中读数据记录的方法和装置 | |
CN113867626A (zh) | 一种存储系统性能优化方法、系统、设备和存储介质 | |
CN115904795A (zh) | 存储系统中的数据存储方法及装置 | |
US10936502B2 (en) | Shadow address space for sharing storage | |
US20240037029A1 (en) | Client allocation of memory across memory servers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |