CN115981547A - 一种数据系统、数据访问方法、装置及数据处理单元 - Google Patents
一种数据系统、数据访问方法、装置及数据处理单元 Download PDFInfo
- Publication number
- CN115981547A CN115981547A CN202111586023.1A CN202111586023A CN115981547A CN 115981547 A CN115981547 A CN 115981547A CN 202111586023 A CN202111586023 A CN 202111586023A CN 115981547 A CN115981547 A CN 115981547A
- Authority
- CN
- China
- Prior art keywords
- data
- dpu
- storage device
- lock
- request
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 78
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000003860 storage Methods 0.000 claims abstract description 275
- 238000004891 communication Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000013475 authorization Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据系统、数据访问方法、装置及数据处理单元,本申请中。第一计算节点向第一DPU发送第一数据访问请求,该第一数据访问请求用于访问存储设备中的第一数据。第一DPU接收该第一数据访问请求后,先定第一DPU的缓存中是否缓存有第一数据。若第一DPU的缓存中缓存有第一数据后,第一DPU将该缓存的第一数据发送给第一计算节点。若第一DPU的缓存中未缓存有第一数据,第一DPU从存储设备获取该第一数据,将该第一数据发送给第一计算节点。当第一计算节点需要访问存储设备中的第一数据时,第一DPU可以直接向第一计算节点反馈已缓存的第一数据,能够缩短第一数据的访问路径,减少数据访问的时延,提升数据访问效率。
Description
相关申请的交叉引用
本申请要求于2021年10月14日提交中国专利局、申请号为202111196002.9、申请名称为“一种数据访问方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及存储技术领域,尤其涉及一种数据系统、数据访问方法、装置及数据处理单元。
背景技术
目前,当需要访问存储系统中的数据时,用户可以通过部署在用户侧的客户端软件触发该客户端软件所在的计算节点生成数据访问请求,该计算节点上的网卡将该数据访问节点通过网络或光纤将数据访问请求发送至存储系统中的节点。存储系统中的节点在接收到数据访问请求后,可以根据该数据访问请求访问所存储的数据。
从上述过程可知,数据访问路径需要通过网络或光纤延伸到存储系统,数据访问路径较长,时延高。
发明内容
本申请提供一种数据系统、数据访问方法、装置及数据处理单元,用以缩短数据访问路径,减少时延。
第一方面,本申请实施例提供了一种数据系统,该数据系统包括第一计算节点、存储设备以及第一DPU,所述第一DPU分别连接所述第一计算节点和存储设备。
第一计算节点可以向第一DPU发送第一数据访问请求(对应于本申请实施例中的第一数据读取请求),该第一数据访问请求用于访问存储设备中的第一数据。第一DPU接收该第一数据访问请求后,可以先确定第一DPU的缓存中是否缓存有第一数据。第一DPU在确定第一DPU的缓存中缓存有第一数据后,将该缓存中的第一数据发送给第一计算节点。若第一DPU的缓存中未缓存有第一数据,第一DPU可以从存储设备获取该第一数据,将该第一数据发送给第一计算节点。
通过上述系统,当第一计算节点需要访问存储设备中的第一数据时,第一DPU可以直接向第一计算节点反馈已缓存的第一数据,能够在一定程度缩短第一数据的访问路径,有效地减少了数据访问的时延,提升了数据访问效率。
在一种可能的实现方式中,第一DPU在接收第一数据访问请求之前,第一DPU可以先缓存该第一数据。本申请实施例并不限定该第一DPU缓存该第一数据的方式以及场景。例如,第一计算节点可以向第二DPU发送第二数据访问请求,第二数据访问请求用于访问存储设备中的第一数据。第二DPU在接收到该第二数据访问请求后,若确定缓存中未缓存该第一数据,可以根据第二数据访问请求从存储设备获取第一数据,并将获取的第一数据缓存在第一DPU的缓存中,还可以将第一数据反馈给第一计算节点。
通过上述系统,第一DPU可以缓存该第一数据,便于后续第一计算节点再次访问该第一数据时,第一DPU可以直接将该第一数据反馈给第一计算节点。
在一种可能的实现方式中,第一DPU还可以向存储设备发送第一锁请求(对应于本申请实施例中的读锁授权请求),第一锁请求用于请求第一分布式锁,第一分布式锁用于表征第一DPU具备对第一数据的缓存权限,该第一分布式锁对应于本申请实施例中的读锁。
存储设备在接收到该第一锁请求后,响应第一锁请求,向第一DPU授权第一分布式锁。如存储设备可以向第一DPU发送读锁授权消息,以通知第一DPU统一授权该第一分布式锁。
第一DPU在获得存储设备授权的第一分布式锁后,可以将第一数据缓存在第一DPU的缓存中。
通过上述系统,第一DPU通过申请第一分布式锁的方式可以保证第一数据的一致性,确保第一数据与存储设备所存储的数据一致。
在一种可能的实现方式中,数据系统还可以包括第二计算节点、以及第二DPU,第二DPU分别连接第二计算节点和存储设备。在该数据系统中,第二DPU可以通知存储设备更新第一数据。具体方式如下:
第二计算节点可以向第二DPU发送第三数据访问请求(对应于本申请实施例中的数据写入请求),第三数据访问请求用于更新第一数据。第二DPU在接收到第三数据访问请求后,可以基于第三数据访问请求,请求该存储设备更新该第一数据,如第二DPU可以将该第三数据访问请求发送给存储设备。
存储设备可以召回除第二DPU之外的其他DPU中针对第一数据的分布式锁,也即召回存在冲突的针对第一数据的分布式锁,如可以召回第一DPU的第一分布式锁。在召回了存在冲突的针对第一数据的分布式锁后,存储设备可以再根据第二DPU的请求更新第一数据。
通过上述系统,存储设备在更新第一数据时,需要召回存在冲突的针对第一数据的分布式锁,在召回完成后,才会更新第一数据。若未召回其他DPU中针对第一数据的分布式锁,就对第一数据进行更新,会导致其他DPU会将第一数据作为更新后的数据反馈给计算节点,由此可见,分布式锁的部署能够有效保证第一数据的一致性,以保证数据能够准确有效的反馈给计算节点。
在一种可能的实现方式中,数据系统还可以包括第二计算节点、以及第二DPU,第二DPU分别连接第二计算节点和存储设备。在该数据系统中,第二DPU也可以自行更新第一数据。具体方式如下:
第二DPU可以向存储设备发送第二锁请求(对应于本申请实施例中写锁授权请求),第二锁请求用于请求第二分布式锁,第二分布式锁用于表征第二DPU具备对第一数据的更新权限,该第二分布式锁为写锁。
存储设备在接收到第二锁请求后,可以响应第二锁请求,向第二DPU授权第二分布式锁。如向第二DPU发送写锁授权消息,以通知第二DPU同意授权写锁。
第二DPU在存储设备授权第二分布式锁后,若第二计算节点向第二DPU发送第四数据访问请求,第四数据访问请求用于更新第一数据,第二DPU在接收到第四数据访问请求后,可以根据第四数据访问请求更新第一数据,例如,第二DPU可以获取该第一数据,更新该第一数据。
需要说明的是,这里仅是以第二DPU为例进行说明,事实上,第二DPU的操作可以由数据系统中的其他DPU执行,如第一DPU。
通过上述系统,第二DPU通过申请写锁,可以及时更新本地缓存的第一数据,由于及时更新了第一数据,也可以保证第二计算节点后续再次访问更新后的第一数据时,第二DPU可以准确的反馈该更新后的第一数据。
在一种可能的实现方式中,数据系统还包括第三计算节点以及第三DPU,第三DPU分别连接第三计算节点和存储设备。
第三计算节点可以向第二DPU发送第五数据访问请求(对应于本申请实施例中第二数据读取请求),第五数据访问请求用于访问存储设备中的第一数据。第三DPU接收到第五数据访问请求后,可以先确定第一数据的缓存位置,如第三DPU可以通过存储设备确定第一数据存储在第一DPU的缓存中,或通过与第一DPU之间的交互确定第一数据存储在第一DPU的缓存中。第三DPU在确定第一数据存储在第一DPU的缓存中后,可以从第一DPU获取第一数据。
通过上述系统,与不同计算节点连接的DPU之间可以形成全局缓存,以保证DPU之间可以传输各种缓存的数据,进一步,可以缩短数据访问路径,减少数据访问时延。
第二方面,本申请实施例提供了一种数据访问方法,方法可以由DPU执行,有益效果可以参见第一方面的相关说明,此处不再赘述。DPU连接计算节点和存储设备;该方法中,DPU可以接收计算节点发送的第一数据访问请求,该第一数据访问请求用于访问存储设备中的第一数据。DPU在接收到第一数据访问请求后,可以先确定该DPU的缓存中是否缓存有该第一数据。DPU在确定DPU的缓存中缓存有第一数据的情况下,将缓存中的第一数据发送给计算节点。DPU在确定DPU的缓存中未缓存有第一数据的情况下,从存储设备获取该第一数据,将获得的第一数据反馈给计算节点。
在一种可能的实现方式中,DPU在接收第一数据访问请求之前,DPU可以先缓存该第一数据,本申请并不限定DPU缓存该第一数据的方式以及场景。例如,计算节点可以在发送第一数据访问请求之前,发送第二数据访问请求,第二数据访问请求用于访问存储设备中的第一数据。DPU在接收到该第二数据访问请求之后,可以根据第二数据访问请求从存储设备获取第一数据;将第一数据缓存在DPU的缓存中,并将第一数据反馈给计算节点。
在一种可能的实现方式中,DPU还可以向存储设备发送第一锁请求,第一锁请求用于请求第一分布式锁,第一分布式锁用于表征DPU具备对第一数据的缓存权限。DPU在从存储设备获得第一分布式锁后,可以将第一数据缓存在DPU的缓存中。
在一种可能的实现方式中,DPU还可以接收来自计算节点的第三数据访问请求,第三数据访问请求用于更新第一数据;DPU可以基于第三数据访问请求,请求存储设备更新第一数据。
在一种可能的实现方式中,存储设备可以召回DPU中的第一分布式锁,如存储设备可以向DPU发送指示(该指示对应于本申请实施例中的读锁召回请求),DPU还可以在存储设备的指示下可以删除第一分布式锁,删除缓存的第一数据。
在一种可能的实现方式中,DPU还可以向存储设备发送第二锁请求,第二锁请求用于请求第二分布式锁,第二分布式锁用于表征DPU具备对第一数据的更新权限;DPU还可以在从存储设备获取第二分布式锁后,若DPU接收来自计算节点的第四数据访问请求,第四数据访问请求用于更新第一数据;DPU可以根据第四数据访问请求更新第一数据。
在一种可能的实现方式中,DPU之间可以相互交互,互相请求数据。如该DPU可以在其他DPU的请求下,向其他DPU发送第一数据。
第三方面,本申请实施例还提供了一种数据处理装置,该数据处理装置可以部署在数据处理单元上,具有实现上述第二方面的方法实例中数据处理单元行为的功能,有益效果可以参见第二方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述装置的结构中包括接收模块、处理模块、发送模块,这些模块可以执行上述第二方面方法示例中处理器的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第四方面,本申请实施例还提供了一种数据处理单元,该数据处理单元具有实现上述第二方面的方法实例中行为的功能,有益效果可以参见第二方面的描述此处不再赘述。
在一种可能的实现方式中,所述数据处理单元的结构中可以包括处理组件和存储器,所述数据处理单元被配置为支持所述数据处理单元执行上述第一方面或第二方面中数据处理单元相应的功能。所述存储器与所述处理组件耦合,其保存所述数据处理单元必要的程序指令和数据。该数据处理单元中还可以包括接口,用于与其他设备通信,例如,接收第一数据访问请求、发送第一数据等。
在另一种可能的实现方式中,所述数据处理单元的结构中也可以包括处理组件和通信接口,所述处理组件被配置为支持所述数据处理单元执行上述第一方面或第二方面中数据处理单元相应的功能。该处理组件还可以通过所述通信接口传输数据,例如,接收第一数据访问请求、发送第一数据等。
第五方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第二方面以及第二方面的各个可能的实施方式中所述的方法。
第六方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面以及第二方面的各个可能的实施方式中所述的方法。
第七方面,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述第二方面以及第二方面的各个可能的实施方式中所述的方法。
附图说明
图1为本申请提供的一种系统的架构示意图;
图2为本申请提供的一种数据访问方法示意图;
图3为本申请提供的一种数据划分示意图;
图4为本申请提供的另一种数据访问方法意图;
图5为本申请提供的一种数据处理装置结构示意图;
图6为本申请提供的一种数据处理单元结构示意图。
具体实施方式
如图1所示为本申请实施例提供的一种数据系统的架构示意图,该数据系统可以包括存储设备100、至少一个计算节点(如计算节点210、计算节点220、以及计算节点230)以及至少一个数据处理单元(data processing unit,DPU),一个DPU连接一个计算节点和存储设备100。也即每个计算节点与存储设备100之间均存在一个DPU,该DPU用于在该计算节点与存储设备100之间建立连接。本申请实施例并不限定DPU与计算节点的连接方式、以及DPU与存储设备100的连接方式。例如,DPU可以通过高速串行计算机扩展总线标准(peripheral component interconnect express,PCIe)与计算节点连接。DPU可以通过以太网、或光纤总线(fibre channel,FC)与存储设备100连接,如DPU可以通过光纤总线与存储设备100中的网卡连接。
计算节点可以部署在用户侧。计算节点上可以安装应用程序,如客户端软件。用户通过操作计算节点上的客户端软件触发计算节点产生用于访问存储设备100中数据的数据访问请求。
DPU作为计算节点与存储设备100的连接中介。DPU能够接收计算节点产生的数据访问请求,处理该数据访问请求。在本申请实施例中,数据访问请求分为两种,一种为用于读取数据的数据访问请求,一种为用于写入数据的数据访问请求。为方便说明,在本申请实施例中将用于读取数据的数据访问请求称为数据读取请求(如第一数据读取请求、第二数据读取请求)。将用于写入数据的数据访问请求称为数据写入请求(如数据写入请求)。
DPU内部设置有缓存,该缓存能够缓存从存储设备100中获取的数据。DPU在处理数据读取请求时,若DPU确定内部的缓存中缓存有需要读取的数据,DPU可以直接将需要读取的数据发送给计算节点。若DPU确定内部的缓存中未缓存有需要读取的数据,DPU可以从存储设备100获取需要读取的数据,将获取的数据发送给计算节点,还可以将获取的数据保存在缓存中。
DPU在处理数据写入请求时,可以根据数据写入请求向存储设备100发起请求,该请求用于请求存储设备100写入数据,如DPU可以将该请求通过存储设备100的网卡发送给存储设备100。
本申请实施例并不限定计算节点以及DPU的数量。该至少一个计算节点可以是计算节点集群中的节点,图1中仅示例性的绘制出了三个计算节点以及三个DPU。该三个计算节点分别为计算节点210、计算节点220以及计算节点230。该三个DPU分别为DPU211、DPU221、以及DPU231。DPU211连接计算节点210和存储设备100。该DPU211中包括有缓存212。DPU221连接计算节点220和存储设备100,该DPU221中包括有缓存222。DPU231连接计算节点230和存储设备100。该DPU231中包括有缓存232。
在本申请实施例中,存储设备100用于存储数据。本申请实施例并不限定该存储设备100的具体类型。例如,该存储设备100可以为包括多个硬盘的硬盘框。又例如,该存储设备100可以为集中式存储系统中的节点,还可以为分布式存储系统中的节点。凡是能够用于存储数据的设备均可以作为存储设备100。
在本申请实施例中,计算节点能够向与该计算节点连接的DPU发送数据访问请求,该数据访问请求用于请求访问存储设备100中的数据。该DPU在接收到该数据访问请求后,DPU在确定DPU内部的缓存中缓存有该数据后,可以从该缓存中读取数据,将该数据发送给计算节点。这样,在处理计算节点产生的数据访问请求时,不再需要从存储设备100读取数据。DPU能够直接将缓存在内部缓存中的数据反馈给计算节点,有效的缩短了数据的访问路径,提高了数据访问请求的处理效率。
下面以图1所示的系统架构为基础,结合图2对本申请实施例提高的数据处理方法进行说明,该方法包括:
步骤201:计算节点210向DPU211发送第一数据读取请求,该第一数据读取请求用于请求读取存储设备100中的第一数据。
若该第一数据为块级别的数据,该第一数据读取请求可以包括存储设备100中该第一数据的存储地址。该存储地址可以为第一数据的逻辑地址,该逻辑地址可以为逻辑单元号(logical unit number,LUN)、逻辑区块地址(logical block address,LBA)以及数据长度。
若该第一数据为文件级别的数据,该第一数据读取请求可以包括存储设备100中该第一数据的文件名或文件标识。该第一数据读取请求还可以携带数据偏移以及数据长度,该数据偏移用于指示第一数据在该文件中的起始位置,数据长度用于指示第一数据的数据大小。
若该第一数据为对象级别的数据,该第一数据读取请求可以包括存储设备100中该第一数据的对象标识。
步骤202:DPU211接收第一数据读取请求,确定DPU211的缓存212中是否缓存有该第一数据。若DPU211的缓存212中缓存有第一数据,执行步骤203。若DPU211的缓存中未缓存有第一数据,执行步骤204。
若缓存212中缓存的数据为块级别的数据,DPU211的缓存212在缓存存储设备100中的数据时,可以保存该存储设备100中该数据的存储地址以及该数据。当DPU211在确定需要缓存212中是否缓存有该第一数据时,DPU211可以确定缓存212是否保存有该第一数据的存储地址,在确定缓存212中保存有该第一数据的存储地址时,可以确定缓存212中缓存有该第一数据。DPU211在缓存212中根据该第一数据的存储地址找到该第一数据。执行步骤203。在确定缓存212中未保存有该第一数据的存储地址时,可以确定缓存212中未缓存该第一数据,执行步骤204。
若缓存212中缓存的数据为文件级别的数据,DPU211的缓存212在缓存存储设备100中的数据时,可以保存该存储设备100中该数据的文件名(或文件标识)以及该数据,可选的,还可以包括该数据的数据偏移以及数据长度。当DPU211在确定缓存212中是否缓存有该第一数据时,DPU211可以确定缓存212是否保存有该第一数据的文件名(或文件标识),可选的,还可以确定是否保存有该第一数据的数据偏移以及数据长度,在确定缓存212中保存有该第一数据的文件名(以及第一数据的数据偏移以及数据长度)时,可以确定缓存212中缓存有该第一数据。DPU211在缓存212中根据该第一数据的文件名(以及第一数据的数据偏移以及数据长度)找到该第一数据。执行步骤203。在确定缓存212中未保存有该第一数据的文件名时,可以确定缓存212中未缓存该第一数据,执行步骤204。
若缓存212中缓存的数据为对象级别的数据,DPU211的缓存212在缓存存储设备100中的数据时,可以保存该存储设备100中该数据的对象标识以及该数据。当DPU211在确定需要缓存212中是否缓存有该第一数据时,DPU211可以在缓存212是否保存有该第一数据的对象标识,在确定缓存212中保存有该第一数据的对象标识时,可以确定缓存212中缓存有该第一数据。DPU211在缓存212中根据该第一数据的对象标识找到该第一数据。执行步骤203。在确定缓存212中未保存有该第一数据的对象标识时,可以确定缓存212中未缓存该第一数据,执行步骤204。
步骤203:DPU211将缓存212中的第一数据发送给计算节点210。计算节点210可以直接获取该第一数据。
在本申请实施例中,DPU211能够确定计算节点210可能访问的数据,并缓存该数据。DPU211确定计算节点210可能访问的数据的方式有很多种,例如,DPU210可以根据该计算节点210对数据的访问频率,确定计算节点210可能访问的数据。在具体实施中,DPU210可以将访问频率大于阈值的数据作为计算节点210可能访问的数据作为计算节点可能访问的数据,将该数据缓存在DPU211内部的缓存212中。又例如,DPU211可以将计算节点210之前访问过的数据均作为计算节点210可能访问的数据,将该数据保存缓存212中。在具体实施中,当计算节点210首次访问某一数据时,DPU211在接收到访问该数据的数据访问请求后,可以从存储设备100获取该数据,将该数据反馈给计算节点210,并在缓存212中保存该数据。又例如,计算节点210可能访问的数据可以是由用户配置的,用户可以预先指示该DPU211将数据存储在缓存212中。将上述方式仅是举例,凡是能够使得DPU211确定计算节点210可能访问的数据的方式均适用于本申请实施例。
在本申请实施例,对于数据系统中的任一计算节点,允许与该计算节点连接的DPU提前将该计算节点可能访问的数据(如本申请实施例中的第一数据)缓存在DPU的缓存中。这样,当该计算节点需要访问该数据时,DPU可以直接将缓存在DPU内部的缓存中的数据反馈给该计算节点。可见,计算节点210访问第一数据的访问路径为从计算节点210到DPU211,访问路径中并不需要延伸至存储设备100,访问路径有效减少,能够在一定程度上减少计算节点访问数据的时延,提高数据访问效率。
但若DPU211的缓存212中未缓存有该第一数据,DPU211可以执行步骤204。
步骤204:DPU211从存储设备100获取该第一数据。
DPU211可以将第一数据读取请求发送至存储设备100,存储设备100在接收到该第一数据读取请求后,可以根据第一数据读取请求中携带的信息读取第一数据,将该第一数据反馈至DPU211。
步骤205:DPU211将该第一数据反馈至计算节点210。
本申请实施例中,由于数据系统中与计算节点连接的DPU可以预先将数据缓存在DPU内部的缓存中。这样会导致数据系统中多个DPU缓存同一个数据的情况。这里以多个DPU缓存的相同数据为块级别的数据A为例,若数据系统中计算节点需要对数据A进行修改,与该计算节点所连接的DPU可以与存储设备100交互,对存储设备100中所存储的数据A进行修改,如将数据A修改为数据B。那么,在这种情况下,该多个DPU所缓存的数据A为修改前的数据,会成为无效数据,或错误数据。若与该多个DPU中任一DPU所连接的计算节点需要读取数据A修改后的数据B,会发送携带有数据B的存储地址的数据读取请求(实际上数据B的存储地址与数据A的存储地址是相同的)。由于该DPU中已经存储有数据A,该DPU在接收到所连接的计算节点发送的数据读取请求后,该DPU会直接根据该数据B的存储地址将数据A反馈给该计算节点。计算节点并未能够准确的获取修改后的数据B。可见,当数据A发生修改时,会导致该多个DPU已缓存的数据A与存储设备100中修改后形成的数据B不一致的情况。这将导致数据A发生修改后,计算节点可能无法准确读取修改后形成的数据B。
为了能够有效减少上述情况,保证计算节点访问数据的准确性。在本申请实施例中,与计算节点连接的DPU可以向存储设备100申请授权分布式锁,以保证数据的一致性。
在本申请实施例中,存储设备100授权后的分布式锁可以配置在DPU中,配置在DPU中的分布式锁用于表征该DPU针对特定存储位置上的数据所具备的权限。对于块级别的数据,这里的存储位置可以是存储地址所指示的位置。对于文件级别的数据,该存储位置可以是文件名(或文件标识)、数据偏移以及数据长度所指示的位置。对于对象级别的数据,该存储位置可以是对象标识所指示的位置。
从权限角度,分布式锁可以分为两种,一种为用于表征该DPU针对特定存储位置上的数据具备缓存权限的分布式锁,配置有该种分布式锁的DPU可以将存储设备100中该存储位置上的数据缓存在DPU内部的缓存中。为方便说明,该种分布式锁可以称为读锁。一种为用于表征该DPU针对特定存储位置上的数据具备写入权限的分布式锁,配置有该种分布式锁的DPU可以在该存储设备100中的存储位置上写入数据。为方便说明,该种分布式锁可以称为写锁。需要说明的是,当存储设备100的存储位置上已存储有数据,那么如果仍需要在存储位置上写入数据,实质是对该存储位置上已存储的数据进行更新,故而,在本申请实施例中,写锁所表征的权限也可以理解为更新权限,也即针对特定存储位置上的数据具备更新权限。
下面以DPU211申请授权针对该第一数据的读锁为例,对数据系统中DPU主动申请授权读锁的方式进行说明,具体过程可参见步骤206~步骤210。
步骤206:DPU211确定针对第一数据的读锁是否已授权,该读锁用于表征DPU211针对该第一数据具备缓存权限。若已授权,执行步骤207。若未授权,执行步骤208。
DPU211可以记录配置在DPU211中的分布式锁(也即已授权的分布式锁)的信息,该信息包括下列的部分或全部:
数据的资源标识、数据的存储地址、数据的所有者(也即DPU211)的标识、以及分布式锁的类型(如读锁或写锁)。
本申请并不限定该计算节点访问数据的具体形式,例如该数据可以是块级别的数据、文件级别的数据、或对象级别的数据。数据的形式不同,分布式锁记录的信息可以不同。
(1)、数据的资源标识、数据的存储地址。
对于块级别的数据,该数据的资源标识可以是为数据预先配置的标识,数据的存储地址可以为该数据的逻辑地址。由于对于块级别的数据主要利用该数据的逻辑地址访问该数据,分布式锁也可以不记录该数据的资源标识。
对于文件级别的数据,该数据的资源标识可以包括数据的文件名(或文件标识)、数据偏移以及数据长度。由于对于文件级别的数据主要可以利用该数据的文件名、数据偏移以及数据长度访问该数据,分布式锁也可以不记录该数据的存储地址,或将数据的存储地址的字段配置为默认值。
对于对象级别的数据,该数据的资源标识可以为数据的对象标识。由于对象级别的数据主要可以利用该数据的对象标识访问该数据,分布式锁也可以不记录该数据的存储地址,或将数据的存储地址的字段配置为默认值。
(2)、数据的所有者的标识。
数据的所有者的标识可以为该分布式锁所在的DPU的标识或与该DPU所连接的计算节点的标识。凡是能够在数据系统中唯一能够标识该DPU或与该DPU所连接的计算节点的信息均可以作为数据的所有者的标识。
(3)、分布式锁的类型。
在本申请实施例中分布式锁的类型可以分为读锁和写锁,读锁的类型可以用读(read)标识,写锁可以用写(write)标识。
DPU211在确定针对该第一数据的读锁是否已授权时,可以在已记录的分布式锁的信息中查找第一数据的存储地址(对应第一数据为块级别的数据的场景)、第一数据的文件名(对应第一数据为文件级别的数据的场景)或第一数据的对象标识(对应第一数据为对象级别的数据的场景),以确定是否记录针对该第一数据的读锁。若DPU211在所记录的分布式锁的信息中查找到针对该第一数据的读锁,则可以执行步骤207,若DPU211在所记录的分布式锁的信息中未查找到针对该第一数据的读锁,说明针对该第一数据的读锁未授权,则可以执行步骤208。
步骤207:DPU211将从存储设备100读取的第一数据,缓存在DPU211内部的缓存212中。
步骤208:DPU211向存储设备100发送读锁授权请求,该读锁授权请求用于请求授权读锁。该读锁授权请求中携带有该读锁的信息,关于读锁的信息可以参见前述说明,此处不再赘述。
步骤209:存储设备100在接收到该读锁授权请求后,存储设备100在确定同意授权读锁之后,向DPU211发送读锁授权消息。读锁授权消息中携带指示信息,该指示信息指示同意授权读锁。
步骤210:DPU211接收到读锁授权消息,可以记录该读锁的信息。
存储设备100在接收到读锁授权请求后,需要先确定是否能够授权该读锁。存储设备100可以根据数据系统中计算节点对于存储设备100中不同数据的访问情况,如计算节点对存储设备100中不同数据的修改次数(对存储设备100中不同数据的修改次数可以理解为对存储设备100中不同存储位置上的数据写入次数),确定是否能够授权该针对该第一数据的读锁。
针对该存储设备100所存储的任一数据,存储设备100可以统计在一定时间段内,数据系统中计算节点对该数据的读次数以及写次数。例如,存储设备100可以利用计数布隆过滤器(Counting Bloom Filter,CBF)来统计数据系统中计算节点对该数据的读次数以及写次数。
如图3所示,为存储设备100统计读次数以及写次数的示意图,在图3中示例性的绘制处理存储设备100中多份数据。存储设备100可以根据该多份数据中读次数以及写次数对该多份数据进行划分,这里仅以分为四种为例。
第一种、读次数大于读阈值、写次数等于零或接近于零的数据。这种数据经常被读取,几乎很少被修改。写次数接近于零是指写次数小于下限阈值。
第二种、写次数大于写阈值、读次数等于零或接近于零的数据。这种数据经常被修改,几乎很少被读取。读次数接近于零是指读次数小于下限阈值。
第三种、读次数大于读阈值、写次数大于写阈值的数据。这种数据经常被修改,也经常被读取。
第四种、冷数据。这种数据几乎不会被读取,也不会被修改(也即写次数小于第一阈值,读次数小于第二阈值)。
对于前三种数据,也可以进一步区分出只被某一个计算节点访问或修改的独占数据。也对于这种数据,只有特定的一个计算节点会对这种数据进行读取或写入。
对于第一种数据,由于较少被修改,若将该种数据缓存在DPU中的缓存中时,可以有效减少计算节点对该种数据的访问路径,存储设备100可以同意授权针对第一种数据的读锁。故而存储设备100可以在确定DPU211申请授权的读锁所针对的第一数据属于该第一种数据时,可以同意授权该读锁。
可选的,存储设备100在确定该第一数据属于第一种数据时,若确定存储地址与该第一数据相邻的数据(在本申请实施例中可以简称为相邻数据)也属于第一种数据,存储设备100还可以扩展该读锁所针对的数据范围,也即将第一数据扩展为包括第一数据以及同属于第一种数据的相邻数据。如可以将读锁的信息中数据的存储地址更新为该第一数据的存储地址以及相邻数据的存储地址,又如也可以将读锁信息中数据偏移以及数据长度扩展至该第一数据的存储地址以及相邻数据。
存储设备100在确定是否扩展该读锁所针对的数据范围,或哪些相邻数据可以扩展在该数据范围内时,还可以配置不同的扩展策略,该扩展策略可以是根据数据的读写次数所配置的。例如,扩展策略可以指示数据被写入一次,则该数据不可被扩展在数据范围内。又例如,扩展策略可以指示数据被写入两次,则该数据不可被扩展在数据范围内。又例如,扩展策略可以指示当数据被写入一次但被读取了十次,则该数据可被扩展在数据范围内。又例如,扩展策略可以指示当数据被写入一次但被读取了五次,则该数据可被扩展在数据范围内。又例如,扩展策略可以指示当数据被写入一次但被读取了三次,则该数据可被扩展在数据范围内。
若需要扩展读锁所针对的数据范围,存储设备100向DPU211发送的读锁授权消息中可以携带扩展了数据范围的读锁的信息。
对于第二种数据,由于经常被修改,若将该种数据缓存在DPU中的缓存中时,容易造成数据不一致的情况。故而存储设备100可以在确定DPU211申请授权的读锁所针对的第一数据属于该第二种数据时,可以拒绝授权该读锁。
对于第三种数据,由于既存在被读取,又存在被修改的情况,存储设备100为了避免数据不一致的情况,可以直接拒绝针对该第三种数据的读锁的读锁授权请求。存储设备100也可以进一步对该第三种数据进行细化,区分出第三种数据中读次数大于写次数的数据(为方便说明,该种数据称为读热写少数据),以及写次数大于读次数的数据(为方便说明,该种数据称为写热读少数据)。
存储设备100可以通过设置相应的阈值来区分出读热写少数据以及写热读少数据。例如,存储设备100可以将读次数大于第三阈值、写次数小于第四阈值(第三阈值大于第四阈值)的数据作为读热写少数据,存储设备100可以将写次数大于第三阈值、读次数小于第四阈值(第三阈值大于第四阈值)的数据作为写热读少数据。这里仅是举例,本申请实施例并不限定存储设备100区分出读热写少数据以及写热读少数据的方式。
对于读热写少数据,存储设备100可以同意授权针对读热写少数据的读锁。对于写热读少数据,存储设备100可以拒绝授权针对写热读少数据的读锁。
存储设备100在确定了同意授权读锁后,可以记录保存该读锁的信息,向DPU211发送读锁授权消息。存储设备100在确定无法授权读锁后,可以向DPU211发送读锁拒绝消息,用以通知DPU211无法授权读锁。
另外,对于只被计算节点210访问或修改的独占数据,若该第一数据属于该独占数据,存储设备100可以同意授权针对第一种数据的读锁。若该第一数据的相邻数据也属于独占数据,存储设备100还可以扩展该读锁的数据范围。
需要说明的是,在上述关于描述存储设备100确定是否同意授权针对第一数据的读锁的方式中,存储设备100仅是根据存储设备100中不同存储位置上的数据的访问情况确定是否同意授权针对第一数据的读锁。除此之外,存储设备100还可以确定是否存在与针对第一数据的读锁冲突的写锁,也即存储设备100可以确定是否存在数据范围包括全部第一数据或部分第一数据的写锁。该写锁即为与针对第一数据的读锁冲突的写锁。在确定存在该写锁的情况下,存储设备100可以不同意授权针对第一数据的读锁。
经过步骤206~步骤210,DPU211可以主动地向存储设备100申请授权针对第一数据的读锁。除了针对第一数据,DPU211也可以采用上述类似的方式针对其他数据向存储设备100申请授权读锁。除了DPU211之外,数据系统中的其他DPU,如DPU221、DPU231,也可以采用类似的方式向存储设备100申请授权读锁。在上述步骤中描述了DPU211向存储设备100申请授权分布式锁的一种场景,也即DPU211在从计算节点210接收到数据读取请求时,DPU211确定未向存储设备100申请授权针对第一数据的读锁时,可以主动的向存储设备100发起请求,以请求存储设备100授权读锁。事实上,这仅是数据系统中DPU向存储设备100申请授权读锁的一种场景,所本申请实施例并不限定DPU向存储设备100申请授权读锁的场景。例如,DPU可以统计所连接的计算节点对存储设备100中数据的访问频率,根据对存储设备100中数据的访问频率,确定需要缓存的数据(如数据的访问频率大于阈值的数据),DPU可以针对需要缓存的数据向存储设备100申请读锁。
需要说明的是,本申请实施例中存储设备100也可以主动地向DPU211授权读锁。例如,当DPU211从存储设备100获取第一数据时,存储设备100可以根据第一数据的访问频率,确定该第一数据是否属于第一种数据或属于读多写少数据。存储设备100在确定属于第一种数据或属于读多写少数据后,可以向DPU211发送读锁授权信息,该读锁授权信息中携带的读锁的信息,该读锁所针对的数据范围包括第一数据。进一步的,存储设备100在确定该第一数据是否属于第一种数据或属于读多写少数据时,还可以确定该第一数据的相邻数据是否属于第一种数据或属于读多写少数据。当第一种数据以及该第一数据的相邻数据确定属于第一种数据或属于读多写少数据,存储设备100可以向DPU211发送读锁授权信息,该读锁授权信息中携带的读锁的信息,该读锁所针对的数据为第一数据和第一数据的相邻数据。又例如,存储设备100可以周期性的统计存储设备100中数据的读次数以及写次数。对于存储设备100中的第一种数据或读多写少数据,存储设备100可以向之前读取第一种数据或读多写少数据的DPU授权针对第一种数据或读多写少数据的读锁。特别对于独占数据,由于仅是被一个计算节点读取或写入,存储设备100也可以主动的向与该计算节点所连接的DPU授权针对该独占数据的读锁。
经过步骤206~步骤210,DPU211成功的向存储设备100申请授权了针对了第一数据的读锁。当数据系统中的计算节点需要更新第一数据时,分布式锁(尤其读锁)的设置能够在一定程度上保证数据的一致性,具体实现过程可以参见步骤211~步骤217。在步骤211~步骤217中以计算节点220请求更新第一数据为例进行说明。
步骤211:计算节点220向DPU221发送数据写入请求,该数据写入请求用于请求更新第一数据。在步骤211中,更新第一数据可以理解为在第一数据的存储位置处写入新的数据,该新的数据用以替换第一数据。
若该第一数据为块级别的数据,该数据写入请求可以包括该第一数据的存储地址以及需要写入的数据。该存储地址可以为第一数据的逻辑地址。
若该第一数据为文件级别的数据,该第一数据读取请求可以包括该第一数据的文件名(或文件标识)、数据偏移、数据长度以及需要写入的新的文件。
若该第一数据为对象级别的数据,该第一数据读取请求可以包括该第一数据的对象标识、以及需要写入的新的对象。
步骤212:DPU221在接收到数据写入请求后,可以将该数据写入请求发送至存储设备100,以请求该存储设备100更新该第一数据。
步骤213:存储设备100在接收到该数据写入请求后,确定数据系统中针对该第一数据的读锁的所有者或针对该第一数据的写锁的所有者。在本申请实施例中针对第一数据的读锁的所有者为DPU211,且存储系统中并不存在针对第一数据的写锁。
步骤214:存储设备100可以向存在冲突的、针对第一数据的读锁的所有者(也即DPU211)发送读锁召回请求消息,读锁召回请求消息用于召回读锁。召回读锁是指删除读锁的信息以及删除缓存中该读锁所针对的数据。读锁召回请求中携带有读锁的信息。存在冲突的、针对第一数据的读锁是指除DPU221之外的DPU已授权的针对第一数据的读锁。
步骤215:DPU211在接收到读锁召回请求后,确定需要召回的读锁,删除该读锁,删除缓存212中该读锁所针对的数据(也即第一数据)。
步骤216:DPU211向存储设备100发送读锁召回应答,该读锁召回应答用于指示已删除读锁。
在本申请实施例中,由于针对第一数据的读锁的所有者仅为DPU211,存储设备100仅需要向DPU211发送读锁召回请求即可。若针对第一数据的读锁的所有者除了DPU211之外,还有其他DPU,存储设备100和其他DPU也可以采用如步骤213~步骤216的方式召回读锁。若DPU221中有已授权的针对第一数据的读锁,由于DPU221中针对第一数据的读锁并非是存在冲突的读锁,存储设备100并不需要采用如步骤213~步骤216的方式召回读锁。
另外,虽然在步骤213中存储系统中并不存在针对第一数据的写锁,若在实际应用中,该存储系统中存在针对该第一数据的写锁,且该写锁的所有者是除DPU211之外的其他DPU,那么,该写锁也可以认为是存在冲突的写锁,存储设备100和其他DPU也可以采用类似步骤213~步骤216的方式召回写锁。
步骤217:存储设备100在接收到读锁召回应答后,存储设备100可以继续处理数据写入请求,根据数据写入请求更新第一数据。
若该第一数据为块级别的数据,存储设备100可以在第一数据的存储地址写入需要写入的数据。
若该第一数据为文件级别的数据,存储设备100可以将文件名(或文件标识)、数据长度以及数据偏移所指示的文件更新为需要写入的新的文件。
若该第一数据为对象级别的数据,存储设备100可以将对象标识所指示的对象更新为需要写入的新的对象。
从上述步骤可以看出,当数据系统中的计算节点对第一数据进行修改时,存储设备100可以召回DPU211中已授权的针对该第一数据的读锁,无效DPU211中缓存212中的第一数据。这样能够保证DPU211中已缓存212的数据与存储设备100中的数据保持一致,也即能够有效保证数据的一致性。之后,当与该DPU211所连接的计算节点210再需要读取修改后的数据,DPU211由于缓存212中缓存的第一数据已无效,DPU211不能将缓存212中的数据反馈给计算节点210,而是需要从存储设备100读取修改后的数据。如此,可以保证计算节点210能够准确的读取数据,保证了数据访问的有效性。
前述步骤中描述了DPU211申请授权针对第一数据的读锁。关于分布式锁的说明可知,分布式锁除了读锁,还包括写锁。在本申请实施例中,允许DPU主动的向存储设备100申请授权写锁。下面对授权写锁的方式进行说明。
仍以图2所示的实施例为例,在步骤210中DPU221在接收到数据写入请求后,DPU221也可以向存储设备100发送写锁授权请求。该写锁授权请求用于请求授权写锁。该写锁用于表征DPU221针对第一数据具备更新权限。DPU221针对第一数据具备更新权限也可以理解为DPU221对于存储设备100中该第一数据的存储位置具备写入权限,也就是说,DPU221能够对该第一数据的存储位置进行写入。
存储设备100在接收到写入授权请求后,可以直接同意授权写锁,向DPU221发送写锁授权消息。
DPU221在接收到写锁授权请求后,可以记录该写锁,并在缓存中缓存修改后产生的数据。
DPU221在授权了该针对第一数据的写锁之后,若计算节点220之后还需要对第一数据进行修改(也即对第一数据的存储位置进行再次写入),DPU221由于已授权了该针对第一数据的写锁。DPU221若未获取该第一数据,DPU221可以先获取第一数据,并更新该第一数据。若DPU221已在缓存222中缓存了该第一数据,可以直接更新缓存222中缓存的第一数据,将计算节点220再次发起的数据写入请求发送给存储设备100。DPU221不再需要等待存储设备100召回针对第一数据的读锁,而是可以直接将缓存的第一数据进行修改。
需要说明的是,在上述步骤中描述了DPU221向存储设备100申请授权分布式锁的一种场景,也即DPU221在从计算节点220接收到数据写入请求时,DPU221确定未向存储设备100申请授权针对第一数据的写锁时,可以主动的向存储设备100发起请求,以请求存储设备100授权写锁。事实上,这仅是数据系统中DPU向存储设备100申请授权写锁的一种场景,本申请实施例并不限定DPU向存储设备100申请授权写锁的场景。例如,DPU可以统计所连接的计算节点对存储设备100中数据的更新频率,根据对存储设备100中数据的更新频率,确定需要更新的数据(如数据的更新频率大于阈值的数据),DPU可以针对该数据向存储设备100申请写锁。
在前述内容中,描述了计算节点210访问第一数据的方式、DPU211申请授权针对第一数据的读锁,以及针对第一数据的写锁的授权方式。由前述内容可知,在数据系统中,与计算节点连接的DPU可以缓存数据。这样计算节点需要访问的数据若已缓存在该DPU的缓存中,能够在一定程度上提高计算节点访问该数据的效率。为了能够进一步提升数据系统中数据访问效率,数据系统中DPU的缓存可以构成全局缓存,DPU之间可以进行通信以进行数据交互。下面以DPU231与DPU211交互为例,结合附图4对DPU交互的方式进行说明,该方法包括:
步骤401:计算节点230向DPU231发送第二数据读取请求,该第二数据读取请求用于请求读取存储设备100中的第一数据。第二数据读取请求与第一数据读取请求所携带的信息类似,具体可以参见前述内容,此处不再赘述。
步骤402:DPU231接收第二数据读取请求后,确定DPU231的缓存232中未缓存有该第一数据。
步骤403:DPU231确定第一数据缓存在DPU211中。
DPU231确定第一数据缓存在DPU211的缓存212中的方式有很多种,下面列举其中两种。
方式一、DPU231通过与存储设备100交互确定第一数据缓存在DPU211的缓存212。
DPU231可以向存储设备100发送第二数据读取请求,存储设备100在接收到第二数据读取请求后,查询所记录的读锁的信息,确定针对该第一数据的读锁的所有者为DPU211,也即DPU211可以缓存了该第一数据。存储设备100可以通知DPU231该第一数据缓存在DPU211中,可以通知DPU231从DPU211中获取该第一数据。
方式二、DPU231保存数据缓存布局信息,该数据缓存布局信息用于记录存储设备100中数据所缓存在的位置,也即该数据缓存布局信息用于记录存储设备100中数据所缓存在的DPU。DPU231根据数据布局信息确定第一数据缓存在DPU211的缓存212。
该数据缓存布局信息可以存储设备100发送给各个DPU的。例如,存储设备100可以根据已授权的读锁的信息生成数据缓存布局信息。该数据缓存布局信息可以包括读锁的信息中的部分或全部,例如数据缓存布局信息中可以数据的存储地址、以及数据的所有者。又例如数据缓存布局中可以数据的资源标识、以及数据的所有者。存储设备100可以将该数据缓存布局信息发送给数据系统中的DPU。当然,存储设备100可以在读锁召回,或有新的读锁被授权后,也可以更新数据缓存布局信息。存储设备100可以将更新后的数据缓存布局信息发送给数据系统中的DPU。
该数据缓存布局信息也可以是通过DPU之间的交互形成的。例如,在数据系统中,DPU之间可以互相通知自身已经授权的读锁的信息,这样,对于数据系统中的一个DPU可以获取其他DPU中已授权的读锁的信息,之后,根据其他DPU中已授权的读锁的信息生成数据缓存布局信息。
步骤404:DPU231向DPU211发送数据获取请求,该数据获取请求用于请求获取第一数据的,该数据获取请求中可以携带第一数据的存储地址、第一数据的文件标识(或文件名)、或第一数据的对象标识。
步骤405:DPU211接收到数据获取请求后,可以获取缓存212中缓存的第一数据,将该第一数据反馈给DPU231。
基于与方法实施例同一发明构思,本申请实施例还提供了一种数据处理装置,该数据处理装置可以部署在DPU(如DPU211、DPU221、DPU231)上,用于执行上述如图2、图4所示的方法实施例中所述DPU211、DPU221、DPU231执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图5所示,所述数据处理装置500包括接收模块501、处理模块502以及发送模块503。
接收模块501,用于接收计算节点发送的第一数据访问请求,第一数据访问请求用于访问存储设备中的第一数据。
处理模块502,用于确定DPU的缓存中缓存有第一数据。
发送模块503,用于将缓存中的第一数据发送给计算节点。
在一种可能的实施方式中,数据处理装置500可以在接收第一数据访问请求之前缓存该第一数据。例如,接收模块501在接收到第一数据访问请求之前,还可以接收计算节点发送的第二数据访问请求,第二数据访问请求用于访问存储设备中的第一数据。该接收模块501在接收到该第二数据访问请求之后,处理模块502可以根据第二数据访问请求从存储设备获取第一数据。在获取该第一数据之后,处理模块502可以将第一数据缓存在DPU的缓存中。发送模块503可以将该第一数据发送给计算节点。
在一种可能的实施方式中,发送模块503还可以向存储设备发送第一锁请求,第一锁请求用于请求第一分布式锁,第一分布式锁用于表征DPU具备对第一数据的缓存权限。接收模块501可以从存储设备获得第一分布式锁;处理模块502在接收模块501从存储设备获得第一分布式锁后,可以将第一数据缓存在DPU的缓存中。
在一种可能的实施方式中,计算节点除了访问第一数据,计算节点还可以请求更新该第一数据。计算节点更新第一数据的方式有两种:
第一种:存储设备更新第一数据。
接收模块501可以接收来自计算节点的第三数据访问请求,第三数据访问请求用于更新第一数据;发送模块503可以基于第三数据访问请求,请求向存储设备更新第一数据。
第二种:DPU自行更新第一数据。
发送模块503可以向存储设备发送第二锁请求,第二锁请求用于请求第二分布式锁,第二分布式锁用于表征DPU具备对第一数据的更新权限。接收模块501可以在从存储设备获取第二分布式锁后,接收来自计算节点的第四数据访问请求,第四数据访问请求用于更新第一数据。处理模块502可以根据第四数据访问请求更新第一数据。
在一种可能的实施方式中,处理模块502可以在存储设备的指示下删除第一分布式锁,删除缓存的第一数据。
在一种可能的实施方式中,处理模块502可以在其他DPU的请求下,向其他DPU发送第一数据。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
在一个简单的实施例中,本领域的技术人员可以想到如图2或4所示的实施例中DPU(如DPU211、DPU221、DPU231)可采用图6所示的形式。
如图6所示的数据处理单元600,包括至少一个处理组件601、通信接口602。可选的,还可以包括存储器603。该数据处理组件用于执行上述如图2、图4所示的方法实施例中各个数据处理单元(如DPU211、DPU221、DPU231)执行的方法。
处理组件601可以为专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、人工智能芯片、片上芯片等。通用处理器可以是微处理器或者是任何常规的处理器等。
存储器603可以是易失性存储器,例如随机存取存储器;存储器也可以是非易失性存储器,例如只读存储器,快闪存储器,硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器603是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器603可以是上述存储器的组合。
本申请实施例中不限定上述处理组件601以及存储器603之间的具体连接介质。
当所述数据处理单元采用图6所示的形式时,图6中的处理组件601可以通过调用存储器603中存储的计算机执行指令,使得所述数据处理单元可以执行上述任一方法实施例中的所述DPU执行的方法。图6中的处理组件601也可以通过烧写在其上的计算机执行指令,使得所述数据处理单元可以执行上述任一方法实施例中的所述DPU执行的方法。
具体的,图5的接收模块501、处理模块502、发送模块503的功能/实现过程均可以通过图6中的处理组件601调用存储器603中存储的计算机执行指令来实现或通过运行烧写在自身的计算机执行指令来实现。或者,图5中的处理模块502的功能/实现过程可以通过图6中的处理组件601调用存储器602中存储的计算机执行指令来实现或通过运行烧写在自身的计算机执行指令来实现,图5的接收模块501或发送模块503的功能/实现过程可以通过图6中的通信接口602来实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (22)
1.一种数据系统,其特征在于,所述系统包括第一计算节点、存储设备以及第一数据处理单元DPU,所述第一DPU分别连接所述第一计算节点和存储设备;
所述第一DPU用于:
接收所述第一计算节点发送的第一数据访问请求,所述第一数据访问请求用于访问所述存储设备中的第一数据;
确定所述第一DPU的缓存中缓存有所述第一数据;
将所述缓存中的所述第一数据发送给所述第一计算节点。
2.如权利要求1所述的系统,其特征在于,在接收所述第一数据访问请求之前,所述第一DPU还用于:
接收所述第一计算节点发送的第二数据访问请求,所述第二数据访问请求用于访问所述存储设备中的所述第一数据;
根据所述第二数据访问请求从所述存储设备获取所述第一数据;
将所述第一数据缓存在所述第一DPU的缓存中。
3.如权利要求2所述的系统,其特征在于,所述第一DPU,还用于:
向所述存储设备发送第一锁请求,所述第一锁请求用于请求第一分布式锁,所述第一分布式锁用于表征所述第一DPU具备对所述第一数据的缓存权限;
所述存储设备,用于响应所述第一锁请求,向所述第一DPU授权所述第一分布式锁;
所述第一DPU,用于在获得所述第一分布式锁后,将所述第一数据缓存在所述第一DPU的缓存中。
4.如权利要求3所述的系统,其特征在于,所述数据系统还包括第二计算节点、以及第二DPU,所述第二DPU分别连接所述第二计算节点和所述存储设备;
所述第二DPU,用于接收来自所述第二计算节点的第三数据访问请求,所述第三数据访问请求用于更新所述第一数据;基于所述第三数据访问请求,请求所述存储设备更新所述第一数据;
所述存储设备,还用于召回所述第一DPU的所述第一分布式锁,并根据所述第二DPU的请求更新所述第一数据。
5.如权利要求3所述的系统,其特征在于,所述数据系统还包括第二计算节点、以及第二DPU,所述第二DPU分别连接所述第二计算节点和所述存储设备;
所述第二DPU,还用于:向所述存储设备发送第二锁请求,所述第二锁请求用于请求第二分布式锁,所述第二分布式锁用于表征所述第二DPU具备对所述第一数据的更新权限;
所述存储设备,用于响应所述第二锁请求,向所述第二DPU授权所述第二分布式锁;
所述第二DPU,还用于:
接收来自所述第二计算节点的第四数据访问请求,所述第四数据访问请求用于更新所述第一数据;
基于所述第二分布式锁,从所述存储设备获取所述第一数据,并根据所述第四数据访问请求更新所述第一数据。
6.如权利要求1~5任一项所述的系统,其特征在于,所述数据系统还包括第三计算节点以及第三DPU,所述第三DPU分别连接所述第三计算节点和所述存储设备;
所述第三DPU,用于接收所述第三计算节点发送的第五数据访问请求,所述第五数据访问请求用于访问所述存储设备中的所述第一数据;
在确定所述第一数据存储在所述第一DPU的缓存中后,从所述第一DPU获取所述第一数据。
7.一种数据访问方法,其特征在于,所述方法由数据处理单元DPU执行,所述DPU连接计算节点和存储设备;所述方法包括:
接收所述计算节点发送的第一数据访问请求,所述第一数据访问请求用于访问所述存储设备中的第一数据;
确定所述DPU的缓存中缓存有所述第一数据;
将所述缓存中的所述第一数据发送给所述计算节点。
8.如权利要求7所述的方法,其特征在于,在接收所述第一数据访问请求之前,所述方法还包括:
接收所述计算节点发送的第二数据访问请求,所述第二数据访问请求用于访问所述存储设备中的所述第一数据;
根据所述第二数据访问请求从所述存储设备获取所述第一数据;
将所述第一数据缓存在所述DPU的缓存中。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
向所述存储设备发送第一锁请求,所述第一锁请求用于请求第一分布式锁,所述第一分布式锁用于表征所述DPU具备对所述第一数据的缓存权限;
在从所述存储设备获得所述第一分布式锁后,将所述第一数据缓存在所述DPU的缓存中。
10.如权利要求9所述的方法,其特征在于,所述方法还包括:
接收来自所述计算节点的第三数据访问请求,所述第三数据访问请求用于更新所述第一数据;
基于所述第三数据访问请求,请求所述存储设备更新所述第一数据。
11.如权利要求7或8所述的方法,其特征在于,所述方法还包括:
在所述存储设备的指示下删除所述第一分布式锁,删除缓存的所述第一数据。
12.如权利要求9所述的方法,其特征在于,所述方法还包括:
向所述存储设备发送第二锁请求,所述第二锁请求用于请求第二分布式锁,所述第二分布式锁用于表征所述DPU具备对所述第一数据的更新权限;
在从所述存储设备获取所述第二分布式锁后,接收来自所述计算节点的第四数据访问请求,所述第四数据访问请求用于更新所述第一数据;
根据所述第四数据访问请求更新缓存的所述第一数据。
13.如权利要求7~12任一所述的方法,其特征在于,所述方法还包括:
在其他DPU的请求下,向所述其他DPU发送所述第一数据。
14.一种数据处理装置,其特征在于,所述装置连接计算节点和存储设备;所述装置包括:
接收模块,用于接收所述计算节点发送的第一数据访问请求,所述第一数据访问请求用于访问所述存储设备中的第一数据;
处理模块,用于确定DPU的缓存中缓存有所述第一数据;
发送模块,用于将所述缓存中的所述第一数据发送给所述计算节点。
15.如权利要求14所述的装置,其特征在于,
所述接收模块,还用于接收所述计算节点发送的第二数据访问请求,所述第二数据访问请求用于访问所述存储设备中的所述第一数据;
所述处理模块,还用于根据所述第二数据访问请求从所述存储设备获取所述第一数据,并将所述第一数据缓存在所述DPU的缓存中。
16.如权利要求15所述的装置,其特征在于,
所述发送模块,还用于向所述存储设备发送第一锁请求,所述第一锁请求用于请求第一分布式锁,所述第一分布式锁用于表征所述DPU具备对所述第一数据的缓存权限;
所述接收模块,还用于从所述存储设备获得所述第一分布式锁;
所述处理模块,还用于在所述接收模块从所述存储设备获得所述第一分布式锁后,将所述第一数据缓存在所述DPU的缓存中。
17.如权利要求16所述的装置,其特征在于,
所述接收模块,还用于接收来自所述计算节点的第三数据访问请求,所述第三数据访问请求用于更新所述第一数据;
所述发送模块,还用于基于所述第三数据访问请求,请求所述存储设备更新所述第一数据。
18.如权利要求14或15所述的装置,其特征在于,所述处理模块,还用于在所述存储设备的指示下删除所述第一分布式锁,删除缓存的所述第一数据。
19.如权利要求16所述的装置,其特征在于,
所述发送模块,还用于向所述存储设备发送第二锁请求,所述第二锁请求用于请求第二分布式锁,所述第二分布式锁用于表征所述DPU具备对所述第一数据的更新权限;
所述接收模块,还用于接收来自所述计算节点的第四数据访问请求,所述第四数据访问请求用于更新所述第一数据;
所述处理模块,还用于基于所述第二分布式锁,根据所述第四数据访问请求更新缓存的所述第一数据。
20.如权利要求14~19任一所述的装置,其特征在于,所述处理模块,还用于在其他DPU的请求下,向所述其他DPU发送所述第一数据。
21.一种数据处理单元,其特征在于,所述数据处理单元包括处理组件和通信接口;所述处理组件用于以执行权利要求7~13任一所述的方法,所述通信接口用于在所述处理组件的触发下进行数据传输。
22.一种计算机可读存储介质,其特征在于,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求7~13任一所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP22879834.4A EP4407430A1 (en) | 2021-10-14 | 2022-05-10 | Data system, data access method and apparatus, and data processing unit |
PCT/CN2022/091991 WO2023060884A1 (zh) | 2021-10-14 | 2022-05-10 | 一种数据系统、数据访问方法、装置及数据处理单元 |
US18/633,836 US20240256696A1 (en) | 2021-10-14 | 2024-04-12 | Data System, Data Access Method and Apparatus, and Data Processing Unit |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2021111960029 | 2021-10-14 | ||
CN202111196002 | 2021-10-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115981547A true CN115981547A (zh) | 2023-04-18 |
Family
ID=85964834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111586023.1A Pending CN115981547A (zh) | 2021-10-14 | 2021-12-21 | 一种数据系统、数据访问方法、装置及数据处理单元 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240256696A1 (zh) |
EP (1) | EP4407430A1 (zh) |
CN (1) | CN115981547A (zh) |
WO (1) | WO2023060884A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107038174B (zh) * | 2016-02-04 | 2020-11-24 | 北京京东尚科信息技术有限公司 | 用于数据系统的数据同步方法和装置 |
CN110750507B (zh) * | 2019-09-30 | 2022-09-20 | 华中科技大学 | 面向dfs的全局命名空间下的持久客户端缓存方法及系统 |
CN112748854B (zh) * | 2019-10-30 | 2024-04-26 | 伊姆西Ip控股有限责任公司 | 对快速存储设备的优化访问 |
CN112052291A (zh) * | 2020-09-03 | 2020-12-08 | 苏宁云计算有限公司 | 一种用户态访问分布式块存储系统的方法及系统 |
CN112076464B (zh) * | 2020-09-04 | 2022-06-21 | 腾讯科技(深圳)有限公司 | 一种数据请求处理方法、装置、计算机设备及存储介质 |
-
2021
- 2021-12-21 CN CN202111586023.1A patent/CN115981547A/zh active Pending
-
2022
- 2022-05-10 EP EP22879834.4A patent/EP4407430A1/en active Pending
- 2022-05-10 WO PCT/CN2022/091991 patent/WO2023060884A1/zh active Application Filing
-
2024
- 2024-04-12 US US18/633,836 patent/US20240256696A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023060884A1 (zh) | 2023-04-20 |
EP4407430A1 (en) | 2024-07-31 |
US20240256696A1 (en) | 2024-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103744799B (zh) | 一种内存数据访问方法、装置和系统 | |
US9201794B2 (en) | Dynamic hierarchical memory cache awareness within a storage system | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
JPWO2004104838A1 (ja) | データアクセス応答システム、ストレージシステム、クライアント装置、キャッシュ装置、およびデータアクセス応答システムへのアクセス方法 | |
EP3848814B1 (en) | Data storage method, metadata server, and client | |
CN107341114B (zh) | 一种目录管理的方法、节点控制器和系统 | |
WO2015118865A1 (ja) | 情報処理装置、情報処理システム及びデータアクセス方法 | |
CN104573112A (zh) | Oltp集群数据库中页面查询方法及数据处理节点 | |
CN110018879B (zh) | 应用于分布式系统的延迟加载方法及装置 | |
CN109960662B (zh) | 一种内存回收方法及设备 | |
CN113342507A (zh) | 一种分布式锁服务实现方法、装置及计算机设备 | |
CN107562648B (zh) | 无锁ftl访问方法与装置 | |
US7613786B2 (en) | Distributed file system | |
CN114356215A (zh) | 一种分布式集群及分布式集群锁的控制方法 | |
WO2016127807A1 (zh) | 多副本写入存储设备的方法及存储设备 | |
WO2016206070A1 (zh) | 一种文件更新方法及存储设备 | |
CN111078643B (zh) | 一种批量删除文件的方法、装置及电子设备 | |
WO2023060884A1 (zh) | 一种数据系统、数据访问方法、装置及数据处理单元 | |
CN110554914A (zh) | 资源锁管理方法、装置、服务器及存储介质 | |
US20140365736A1 (en) | Hardware Based Cache Scan with Divert Node Handling | |
WO2021139199A1 (zh) | 数据访问方法、硬盘和存储设备 | |
CN112748854B (zh) | 对快速存储设备的优化访问 | |
US6834281B1 (en) | Method and apparatus to support multi-node direct access to file system data | |
CN115509437A (zh) | 存储系统、网卡、处理器、数据访问方法、装置及系统 | |
KR102134905B1 (ko) | 비휘발성 메모리를 이용한 데이터처리 장치 및 방법 |
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 |