CN116866429A - 一种数据访问方法及相关装置 - Google Patents
一种数据访问方法及相关装置 Download PDFInfo
- Publication number
- CN116866429A CN116866429A CN202210310924.6A CN202210310924A CN116866429A CN 116866429 A CN116866429 A CN 116866429A CN 202210310924 A CN202210310924 A CN 202210310924A CN 116866429 A CN116866429 A CN 116866429A
- Authority
- CN
- China
- Prior art keywords
- data
- request message
- electronic device
- message
- target
- 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 abstract description 110
- 238000012545 processing Methods 0.000 claims abstract description 73
- 230000004044 response Effects 0.000 claims description 261
- 238000013507 mapping Methods 0.000 claims description 47
- 239000000872 buffer Substances 0.000 claims description 15
- 230000005540 biological transmission Effects 0.000 claims description 10
- 230000015654 memory Effects 0.000 claims description 10
- 238000013475 authorization Methods 0.000 abstract description 26
- 230000007246 mechanism Effects 0.000 abstract description 9
- 230000003139 buffering effect Effects 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 49
- 230000003993 interaction Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 15
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/326—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据访问方法,应用于网络文件系统NFS架构中的中间设备。在该方法中,通过在客户端设备和远端服务器之间设置中间设备,由中间设备负责缓存远端服务器上的部分数据。这样,中间设备在获取到来自于各个客户端设备的数据访问请求时,能够基于所缓存的数据快速向客户端设备返回相应的数据,提高数据访问效率。并且,基于一个中间设备来统一缓存数据,不需要引入复杂的委托授权机制,降低了数据处理开销和网络负担。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据访问方法及相关装置。
背景技术
网络文件系统(Network File System,NFS)是一种访问远程文件系统的网络协议。基于NFS,远端服务器中文件系统的目录能够挂载到客户端设备中文件系统的目录上,从而允许客户端设备像访问本地文件一样,访问远端服务器中的文件,实现了文件在不同设备上进行共享。
由于远端服务器通常同时服务多个客户端设备,因此远端服务器需要不断地处理来自于多个客户端设备的数据处理请求,导致远端服务器的数据处理压力较大,进而影响客户端设备的数据访问效率。
为提高客户端设备的数据访问效率,相关技术中分别在各个客户端设备上缓存远端服务器上的部分数据,例如客户端设备频繁访问的数据。在客户端设备需要访问数据时,客户端设备优先在所缓存的数据中查找需要访问的数据,并在客户端设备上不存在需要访问的数据时再从远端服务器获取相应的数据。
在相关技术中,由于多个客户端设备分别在各自的缓存空间中缓存了服务器上的数据的副本,因此当某个客户端设备对本地缓存空间中的数据副本进行修改时,其他客户端设备的缓存空间上所存储的数据副本也需要进行相应的修改。为了保证客户端设备上的数据一致性,服务器通过执行授权、委托以及回收等一系列复杂的缓存管理流程来实现客户端设备上的文件数据的管理。由于相关技术中引入了复杂的委托授权机制,导致文件授权以及文件权限的回收都需要额外的交互,增加了额外的数据处理开销和网络负担。
发明内容
本申请提供了一种数据访问方法,通过在客户端设备和远端服务器之间设置中间设备,由中间设备负责缓存远端服务器上的部分数据。这样,中间设备在获取到来自于各个客户端设备的数据访问请求时,能够基于所缓存的数据快速向客户端设备返回相应的数据,提高数据访问效率。并且,基于一个中间设备来统一缓存数据,不再需要在各个客户端设备上预留存储资源来缓存数据,从而不需要引入复杂的委托授权机制,降低了数据处理开销和网络负担。
本申请第一方面提供一种数据访问方法,该方法应用于NFS架构中的中间设备,所述NFS架构包括多个第一电子设备、所述中间设备和第二电子设备。
该数据访问方法具体包括:中间设备接收目标电子设备发送的第一请求消息,所述第一请求消息用于请求访问所述第二电子设备上的第一数据,所述目标电子设备为所述多个第一电子设备中的任意一个电子设备。然后,中间设备根据所述第一请求消息确定缓存于所述中间设备中的第二数据,其中所述第二数据与所述第一数据相同,所述中间设备上缓存有所述第二电子设备上的部分数据。例如,中间设备上缓存文件数据的元数据、占用空间较小的文件数据或者是第一电子设备访问较为频繁的文件数据等数据。在确定与第一请求消息对应的第二数据之后,中间设备向所述目标电子设备发送第一响应消息,所述第一响应消息包括所述第二数据。
本方案中,通过在第一电子设备和第二电子设备之间设置中间设备,由中间设备负责缓存第二电子设备上的部分数据。这样,中间设备在获取到来自于各个第一电子设备的数据访问请求时,能够基于所缓存的数据快速向第一电子设备返回相应的数据,降低第二电子设备的数据处理压力,提高数据访问效率。并且,基于一个中间设备来统一缓存数据,不再需要在各个第一电子设备上预留存储资源来缓存数据,从而不需要引入复杂的委托授权机制,降低了数据处理开销和网络负担。
在一种可能的实现方式中,所述中间设备接收所述目标电子设备发送的第一请求消息之前,所述方法还包括:所述中间设备接收所述目标电子设备发送的第二请求消息,所述第二请求消息用于请求访问所述第二电子设备上的所述第一数据。在中间设备接收到第二请求消息时,中间设备上还没有缓存有第二请求消息所请求访问的第一数据。
因此,响应于中间设备中不存在所述第二请求消息所请求访问的数据,所述中间设备向所述第二电子设备转发所述第二请求消息。然后,在第二电子设备对第二请求消息进行处理后,所述中间设备接收所述第二电子设备发送的第二响应消息,所述第二响应消息包括所述第一数据。最后,所述中间设备向所述目标电子设备转发所述第二响应消息。
本方案中,在中间设备没有缓存目标电子设备所请求访问的数据时,中间设备则负责转发目标电子设备和第二电子设备之间的交互消息,以使得目标电子设备能够实现访问第二电子设备上的数据,保证数据访问业务的正常进行。
在一种可能的实现方式中,在接收到第二电子设备返回的第二响应消息之后,所述中间设备缓存所述第二响应消息中所携带的数据,以得到所述第二数据。
也就是说,在中间设备获取到第二电子设备向目标电子设备返回的数据时,中间设备可以在本地缓存空间中缓存所获取到的数据,从而保证在目标电子设备再次访问该数据或者其他的电子设备访问该数据时,中间设备能够快速地向目标电子设备或其他的电子设备返回该数据,而不需要再从第二电子设备上获取数据。
在一种可能的实现方式中,所述中间设备向所述目标电子设备发送第一响应消息之后,所述方法还包括:所述中间设备接收所述目标电子设备发送的第三请求消息,所述第三请求消息用于请求访问所述第二电子设备上的数据,所述第三请求消息为传输控制协议(Transmission Control Protocol,TCP)消息。
响应于所述中间设备中不存在所述第三请求消息所请求访问的数据,所述中间设备根据所述第一请求消息和所述第一响应消息更新所述第三请求消息中的序列号(Sequence Number,seq)和确认号(Acknowledgment Number,ack),得到更新后的第三请求消息,并向所述第二电子设备转发所述更新后的第三请求消息。
然后,所述中间设备接收所述第二电子设备发送的第三响应消息,所述第三响应消息包括所述第三请求消息所请求访问的数据。所述中间设备根据所述第一请求消息和所述第一响应消息更新所述第三响应消息中的seq和ack,得到更新后的第三响应消息,并向所述目标电子设备发送所述更新后的第三响应消息。
本方案中,由于中间设备会代替第二电子设备处理来自于目标电子设备的部分TCP消息,即TCP链接信息有一部分会在中间设备上截断,因此中间设备后续可以对目标电子设备与第二电子设备之间的请求消息和响应消息中的部分内容进行修正,以保证目标电子设备和第二电子设备之间的TCP链接保持正常交互。
在一种可能的实现方式中,所述更新后的第三请求消息的seq为所述第三请求消息的seq与所述第一请求消息中有效数据的长度的差值,所述更新后的第三请求消息的ack为所述第三请求消息的ack与所述第一响应消息中有效数据的长度的差值;所述更新后的第三响应消息的seq为所述第三响应消息的seq与所述第一响应消息中有效数据的长度之和,所述更新后的第三响应消息的ack为所述第三响应消息的ack与所述第一请求消息中有效数据的长度之和。
在一种可能的实现方式中,所述中间设备接收所述目标电子设备发送的第一请求消息之前,所述方法还包括:所述中间设备接收第四请求消息,所述第四请求消息用于指示所述中间设备存储第三数据,所述第三数据为所述第二电子设备上的部分数据,所述第三数据包括所述第二数据;所述中间设备根据所述第四请求消息缓存所述第三数据。
在一种可能的实现方式中,所述中间设备根据所述第一请求消息确定缓存于所述中间设备中的第二数据,包括:所述中间设备解析所述第一请求消息,以得到所述第一请求消息的类型和所述第一请求消息中的目标字段,其中,所述第一请求消息用于请求访问与目标数据相关的所述第一数据,所述第一请求消息的类型用于指示所述第一数据的类型,所述目标字段用于指示所述目标数据的标识。所述中间设备根据所述第一请求消息的类型和所述目标字段的内容,查找映射表,得到所述第二数据,所述映射表用于记录消息类型和数据标识与数据之间的映射关系。
本方案中,通过在中间设备上建立映射表,该映射表中建立了请求消息中用于请求访问数据的关键信息和数据本身之间的映射关系,能够使得中间设备在解析请求消息后,通过查询映射表来获取到相应的数据内容,从而实现在中间设备上提供数据访问业务。
在一种可能的实现方式中,与所述目标数据相关的所述第一数据包括所述目标数据的内容、所述目标数据的属性信息以及所述目标数据的权限信息中的一种或多种。
在一种可能的实现方式中,所述方法还包括:所述中间设备接收所述目标电子设备发送的第五请求消息,所述第五请求消息用于请求更新所述第一数据;所述中间设备根据所述第五请求消息更新所述第二数据,并向所述第二电子设备发送所述第五请求消息。
在一种可能的实现方式中,所述方法还包括:所述中间设备接收第六请求消息,其中,所述第六请求消息用于请求访问所述第二电子设备上的数据,所述第六请求消息的类型为目标类型,且不同类型的请求消息用于请求访问不同类型的数据;响应于所述中间设备不支持处理属于所述目标类型的消息,所述中间设备向所述第二电子设备转发所述第六请求消息。
本方案中,在中间设备处理能力或缓存资源受限的情况下,中间设备可以是只缓存部分类型的数据,并且只处理与这部分类型数据相关的消息,从而代替第二电子设备处理部分类型的消息。这样,在兼顾了中间设备能力的情况下,能够提高减轻第二电子设备的处理压力,提高部分类型数据的访问效率,增强了本方案的适用性。
在一种可能的实现方式中,所述中间设备中部署有网络处理器(NetworkProcessor,NP)、可编程芯片、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)以及数据处理器(Data Processing Unit,DPU)中的一个或多个。
本申请第二方面提供一种数据访问装置,所述装置应用于NFS架构中的中间设备,所述NFS架构包括多个第一电子设备、所述中间设备和第二电子设备,所述装置包括:接收模块,用于接收目标电子设备发送的第一请求消息,所述第一请求消息用于请求访问所述第二电子设备上的第一数据,所述目标电子设备为所述多个第一电子设备中的任意一个电子设备;处理模块,用于根据所述第一请求消息确定缓存于所述中间设备中的第二数据,其中所述第二数据与所述第一数据相同,所述中间设备上缓存有所述第二电子设备上的部分数据;发送模块,用于向所述目标电子设备发送第一响应消息,所述第一响应消息包括所述第二数据。
在一种可能的实现方式中,所述接收模块,还用于接收所述目标电子设备发送的第二请求消息,所述第二请求消息用于请求访问所述第二电子设备上的所述第一数据;所述发送模块,还用于响应于所述中间设备中不存在所述第二请求消息所请求访问的数据,向所述第二电子设备转发所述第二请求消息;所述接收模块,还用于接收所述第二电子设备发送的第二响应消息,所述第二响应消息包括所述第一数据;所述发送模块,还用于向所述目标电子设备转发所述第二响应消息。
在一种可能的实现方式中,所述处理模块,还用于缓存所述第二响应消息中所携带的数据,以得到所述第二数据。
在一种可能的实现方式中,所述接收模块,还用于接收所述目标电子设备发送的第三请求消息,所述第三请求消息用于请求访问所述第二电子设备上的数据,所述第三请求消息为传输控制协议TCP消息;所述处理模块,还用于响应于所述中间设备中不存在所述第三请求消息所请求访问的数据,根据所述第一请求消息和所述第一响应消息更新所述第三请求消息中的序列号seq和确认号ack,得到更新后的第三请求消息,并向所述第二电子设备转发所述更新后的第三请求消息;所述接收模块,还用于接收所述第二电子设备发送的第三响应消息,所述第三响应消息包括所述第三请求消息所请求访问的数据;所述处理模块,还用于根据所述第一请求消息和所述第一响应消息更新所述第三响应消息中的seq和ack,得到更新后的第三响应消息,并向所述目标电子设备发送所述更新后的第三响应消息。
在一种可能的实现方式中,所述更新后的第三请求消息的seq为所述第三请求消息的seq与所述第一请求消息中有效数据的长度的差值,所述更新后的第三请求消息的ack为所述第三请求消息的ack与所述第一响应消息中有效数据的长度的差值;所述更新后的第三响应消息的seq为所述第三响应消息的seq与所述第一响应消息中有效数据的长度之和,所述更新后的第三响应消息的ack为所述第三响应消息的ack与所述第一请求消息中有效数据的长度之和。
在一种可能的实现方式中,所述接收模块,还用于接收第四请求消息,所述第四请求消息用于指示所述中间设备存储第三数据,所述第三数据为所述第二电子设备上的部分数据,所述第三数据包括所述第二数据;所述处理模块,还用于根据所述第四请求消息缓存所述第三数据。
在一种可能的实现方式中,所述处理模块,还用于解析所述第一请求消息,以得到所述第一请求消息的类型和所述第一请求消息中的目标字段,其中,所述第一请求消息用于请求访问与目标数据相关的所述第一数据,所述第一请求消息的类型用于指示所述第一数据的类型,所述目标字段用于指示所述目标数据的标识;所述处理模块,还用于根据所述第一请求消息的类型和所述目标字段的内容,查找映射表,得到所述第二数据,所述映射表用于记录消息类型和数据标识与数据之间的映射关系。
在一种可能的实现方式中,与所述目标数据相关的所述第一数据包括所述目标数据的内容、所述目标数据的属性信息以及所述目标数据的权限信息中的一种或多种。
在一种可能的实现方式中,所述接收模块,还用于接收所述目标电子设备发送的第五请求消息,所述第五请求消息用于请求更新所述第一数据;所述处理模块,还用于根据所述第五请求消息更新所述第二数据,并向所述第二电子设备发送所述第五请求消息。
在一种可能的实现方式中,所述接收模块,还用于接收第六请求消息,其中,所述第六请求消息用于请求访问所述第二电子设备上的数据,所述第六请求消息的类型为目标类型,且不同类型的请求消息用于请求访问不同类型的数据;所述发送模块,还用于响应于所述中间设备不支持处理属于所述目标类型的消息,向所述第二电子设备转发所述第六请求消息。
在一种可能的实现方式中,所述中间设备中部署有NP、可编程芯片、FPGA以及DPU中的一个或多个。
本申请第三方面提供了一种数据访问装置,可以包括存储器和处理器,处理器和存储器耦合,存储器存储有数据,处理器用于基于存储器中的数据执行上述第一方面所述的方法。对于处理器执行第一方面的各个可能实现方式中的步骤,具体均可以参阅第一方面,此处不再赘述。
本申请第四方面提供了一种芯片系统,该芯片系统包括处理器,用于支持数据访问装置或网络设备实现上述第一方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存网络设备中必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1为相关技术的一种NFS架构示意图;
图2为相关技术中的缓存管理策略的流程示意图;
图3为本申请实施例提供的一种NFS架构的示意图;
图4为本申请实施例提供的一种数据访问方法的流程示意图;
图5为本申请实施例提供的一种数据访问方法的流程示意图;
图6为本申请实施例提供的一种TCP代理方式的示意图;
图7为本申请实施例提供的另一种TCP代理方式的示意图;
图8为本申请实施例提供的一种TCP消息的格式示意图;
图9为本申请实施例提供的一种目标电子设备、中间设备和第二电子设备进行消息交互的示意图;
图10为本申请实施例提供的一种中间设备的结构示意图;
图11为本申请实施例提供的一种中间设备中的各个模块执行数据访问方法的流程示意图;
图12为本申请实施例提供的一种数据访问装置的结构示意图;
图13为本申请实施例提供的网络设备的一种结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
为了便于理解,以下先介绍本申请实施例涉及的技术术语。
(1)网络文件系统(Network File System,NFS)
NFS是一种网络文件系统传输协议。基于NFS,远端服务器中文件系统的目录能够挂载到客户端设备中文件系统的目录上,从而允许客户端设备像访问本地文件一样,访问远端服务器中的文件,实现了文件在不同设备上进行共享。其中,NFS基于传输控制协议(Transmission Control Protocol,TCP)来实现客户端设备和服务器的交互,即NFS承载在TCP上进行文件传输交互。
(2)TCP
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。
(3)元数据(Metadata)
元数据通常又称中继数据,是一种用于描述数据的数据。具体来说,元数据是指从信息资源中抽取出来的用于说明其特征、内容的结构化的数据。在本申请实施例中,元数据可以是指用于查找客户端设备所请求访问的数据的关键信息。
(4)文件句柄(filehandle)
文件句柄用于唯一地描述一个特定的文件操作所操作的文件或者目录。文件句柄通常包含三个重要部分:卷标识符、索引节点号和生成号。文件句柄中的三个部分共同构成了客户端希望访问的文件或者目录的唯一标识符。
具体来说,卷标识符用于指示数据访问请求指向哪个文件系统;索引节点号用于指示数据访问请求访问的是该分区的哪个文件。此外,当要重用一个索引节点号时,生成号是必要的;当要重用一个索引节点号时,就对生成号递增,从而保证了客户端不能使用一个旧的文件句柄访问新创建的文件。
请参阅图1,图1为相关技术的一种NFS架构示意图。如图1所示,NFS架构中包括服务器和多个客户端设备(即客户端设备1-客户端设备3)。其中,每个客户端设备上都预留有缓存空间,该缓存空间用于缓存服务器上的部分数据。在客户端设备需要访问数据时,客户端设备根据策略来选择是从本地的缓存空间获取数据,还是从远端的服务器拉取数据。由于一个服务器通常是为多个客户端设备服务的,因此相关技术中的NFS架构需要在多个客户端设备上均设置缓存空间来实现数据的缓存,从而导致客户端设备的存储资源浪费严重。
此外,由于各个客户端设备上都采用缓存空间来缓存数据,因此相关技术的NFS架构中还会存在数据一致性问题。简单来说,多个客户端设备分别在各自的缓存空间中缓存了服务器上的数据的副本,当某个客户端设备对本地缓存空间中的数据副本进行修改时,其他客户端设备的缓存空间上所存储的数据副本也需要进行相应的修改。
为解决数据一致性问题,相关技术提出了针对于图1所示的NFS架构的缓存管理策略。具体地,服务器将一些访问不太频繁或者属性为只读的文件数据,通过委托授权的方式缓存在客户端设备上。然后,服务器通过执行授权、委托以及回收等一系列缓存管理策略来实现客户端设备上的文件数据的管理。
请参阅图2,图2为相关技术中的缓存管理策略的流程示意图。如图2所示,服务器执行缓存管理策略的过程包括以下的步骤1-步骤6。
步骤1,客户端设备1向服务器申请文件委托授权。
在客户端设备1需要使用本地缓存空间中的某个文件时,客户端设备1向服务器申请该文件的委托授权。
步骤2,服务器向客户端设备1发放文件授权。
服务器检查发现当前没有向其他客户端设备发放该文件的委托授权时,服务器则向客户端设备1发放该文件的委托授权,以使得客户端设备1能够使用本地缓存空间中的文件。
步骤3,客户端设备2向服务器申请同一个文件的委托授权。
由于客户端设备1和客户端设备2均在本地缓存空间中缓存了同一个文件,因此在客户端设备1使用本地缓存空间中文件时,客户端设备2可能会向服务器申请同一个文件的委托授权。
步骤4,服务器向客户端设备1回收文件授权。
服务器检查发现当前已经向客户端设备1发放了该文件的委托授权时,服务器则向客户端设备1回收文件授权。
步骤5,客户端设备1向服务器提交文件授权期间的修改内容。
在客户端设备1获取到来自于服务器的文件授权回收指示时,客户端设备1则向服务器提交在文件授权期间对文件所进行的修改内容,以释放文件授权权限。
步骤6,服务器向客户端设备2发放文件授权。
服务器接收客户端设备1所提交的修改内容,并对文件进行修改,得到新的文件。然后,服务器向客户端设备2发放该新的文件的委托授权,并向客户端设备2下发新的文件,以使得客户端设备2能够使用本地缓存空间中的新的文件。
由图2所示的交互流程可以看出,相关技术中的NFS缓存机制比较复杂,包括以下的几个缺点。
1,为了解决缓存数据一致性问题,引入复杂的委托授权机制,从而导致文件授权以及文件权限的回收都需要额外的交互,增加了额外的数据处理开销和网络负担。
2,存在安全隐患。比如,在服务器需要回收某个客户端设备的文件权限时,如果客户端设备不响应服务器的回收授权消息,则导致客户端设备的文件权限无法回收,从而使得其他客户端设备一直无法获取文件。
3,多个客户端设备同时请求授权时,需要对客户端设备的授权请求进行仲裁。并且,服务器回收客户端设备的文件授权权限时,还需要向其他客户端设备同步数据。
有鉴于此,为了解决相关技术中基于NFS的数据访问方法会导致客户端设备上存储资源浪费严重且交互流程复杂的问题,本申请实施例提出了一种数据访问方法。通过基于一个中间设备来统一缓存数据,不再需要在各个客户端设备上预留存储资源来缓存数据,从而节省了客户端设备的存储资源。并且,由于不再在各个客户端设备缓存数据,能够不再需要引入复杂的委托授权机制,减少了客户端设备与服务器之间复杂的交互流程。
可以参阅图3,图3为本申请实施例提供的一种NFS架构的示意图。如图3所示,本申请实施例提供的NFS架构包括多个第一电子设备、中间设备和第二电子设备。其中,中间设备部署于多个第一电子设备以及第二电子设备之间,且多个第一电子设备分别与中间设备连接,中间设备还与第二电子设备连接。也就是说,多个第一电子设备可以是通过中间设备来与第二电子设备进行通信。
在图3所示的NFS架构中,中间设备用于负责转发多个第一电子设备与第二电子设备之间的通信消息。并且,中间设备上缓存有第二电子设备上的部分数据,能够实现数据访问请求的处理。当多个第一电子设备请求访问第二电子设备上的数据,且中间设备上缓存有多个第一电子设备所请求访问的数据时,中间设备则对多个第一电子设备的数据访问请求进行处理,并向多个第一电子设备返回相应的数据,而不需要再将数据访问请求发送到第二电子设备上。
在本申请实施例中,中间设备可以是在原有的NFS架构中新增的网络设备。中间设备也可以是对原有NFS架构中的网络设备进行改造后的设备,即在原有的网络设备上新增数据缓存功能以及数据处理功能。
示例性地,中间设备例如部署有网络处理器(Network Processor,NP)、可编程芯片、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)以及数据处理器(Data Processing Unit,DPU)中的一个或多个。其中,可编程芯片例如可以为BAREFOOT可编程网络交换芯片。中间设备例如可以为交换机、网关或路由器等网络转发设备,中间设备也可以为服务器。
多个第一电子设备可以对应于上文所述的客户端设备。多个第一电子设备例如可以为服务器、智能手机、个人电脑、笔记本电脑、平板电脑、工业控制中的无线电子设备、智能电网中的无线电子设备或智慧城市中的无线电子设备等设备。
第二电子设备可以对应于上文所述的服务器。第二电子设备例如可以为服务器、由多个服务器所构成的服务器集群或者是部署于服务器上的虚拟机(virtual machine,VM)。
可以参阅图4,图4为本申请实施例提供的一种数据访问方法的流程示意图。其中,图4所示的数据访问方法可以应用于图3所示的NFS架构中的中间设备。如图4所示,该数据访问方法包括以下的步骤401-403。
步骤401,中间设备接收目标电子设备发送的第一请求消息,所述第一请求消息用于请求访问所述第二电子设备上的第一数据,所述目标电子设备为所述多个第一电子设备中的任意一个电子设备。
本实施例中,由于中间设备部署于多个第一电子设备与第二电子设备之间,因此多个第一电子设备中的目标电子设备向第二电子设备发送的消息会经过中间设备。在目标电子设备需要访问第二电子设备上的第一数据时,目标电子设备可以发送目的地址为第二电子设备的第一请求消息。这样,位于目标电子设备与第二电子设备之间的中间设备可以先于第二电子设备接收到该第一请求消息。
步骤402,中间设备根据所述第一请求消息确定缓存于所述中间设备中的第二数据,其中所述第二数据与所述第一数据相同,所述中间设备上缓存有所述第二电子设备上的部分数据。
在接收到第一请求消息后,中间设备对第一请求消息进行解析,从而确定第一请求消息是用于请求访问第二电子设备上的第一数据。然后,中间设备在本地缓存空间中查找是否缓存有与第二电子设备上的第一数据相同的数据。
在中间设备缓存有与第一数据相同的第二数据的情况下,中间设备可以根据第一请求消息确定并获取到缓存于本地缓存空间中的第二数据。
可选的,在第二电子设备存储大量文件数据的情况下,中间设备上可以存储第二电子设备上的部分数据。例如,中间设备上可以是存储文件数据的元数据、占用空间较小的文件数据或者是第一电子设备访问较为频繁的文件数据等数据。
可选的,中间设备上可以是通过高速存储介质来存储第二电子设备上的部分数据。例如,中间设备基于随机存取存储器(Random Access Memory,RAM)来存储第二电子设备上的部分数据。RAM的读写速度很快,且中间设备能够随时对RAM执行读写操作,因此基于RAM来作为数据的存储介质能够保证中间设备读写数据的效率,从而保证数据访问效率。
步骤403,中间设备向所述目标电子设备发送第一响应消息,所述第一响应消息包括所述第二数据。
由于中间设备中缓存有与目标电子设备所请求访问的第一数据相同的第二数据,因此中间设备可以根据查找到的第二数据生成第一响应消息,并且向目标电子设备返回携带第二数据的第一响应消息,而不再需要向第二电子设备转发第一请求消息。
这样一来,中间设备能够代替第二电子设备处理来自于目标电子设备的数据访问请求,在减轻第二电子设备的数据处理压力的同时,有效提高数据访问效率。
可以理解的是,由于中间设备上是缓存了第二电子设备上的部分数据,因此相较于第二电子设备,中间设备在基于数据访问请求(即上述的第一请求消息)在缓存空间中查询匹配的数据的效率更高,从而提高了数据访问的效率。并且,在第二电子设备处理大量数据访问请求的情况下,第二电子设备上存储数据的磁盘容易经常处于满载状态,导致数据处理效率较低;而通过中间设备来代替第二电子设备处理部分数据访问请求,能够有效减轻第二电子设备的磁盘读取压力,提高数据访问效率。
此外,在第二电子设备为服务器的情况下,第二电子设备通常是由中央处理器(central processing unit,CPU)通过执行软件程序的方式来处理数据访问请求,例如解析数据访问请求、查询数据访问请求对应的数据以及生成响应消息。相较于处理能力有限的CPU,中间设备可以是采用专业硬件(例如NP、FPGA以及DPU)来处理数据访问请求的网络设备,因此中间设备处理数据访问请求的效率能够远高于第二电子设备,从而进一步提高数据访问的效率。
例如,NP器件内部通常包括多个微码处理器和多个硬件协处理器。并且,多个微码处理器能够在NP内部并行运行,通过预先编制的微码来控制NP的处理流程。在多个微码处理器的基础上,NP采用采用硬件协处理器来执行复杂的数据查找、数据组包以及数据转发等操作,从而能够提供高效的数据处理性能。
本实施例中,通过在客户端设备和远端服务器之间设置中间设备,由中间设备负责缓存远端服务器上的部分数据。这样,中间设备在获取到来自于各个客户端设备的数据访问请求时,能够基于所缓存的数据快速向客户端返回响应的数据,提高数据访问效率。并且,基于一个中间设备来统一缓存数据,不再需要在各个客户端设备上预留存储资源来缓存数据,从而节省了客户端设备的存储资源。
此外,采用一个中间设备来集中缓存数据,能够避免在各个客户端设备上缓存数据,因此不再需要引入复杂的委托授权机制,减少了客户端设备与服务器之间复杂的交互流程,提高了数据处理效率。
以上介绍了中间设备在存储有相应数据的情况下,代替第二电子设备而直接向目标电子设备返回请求访问的数据的过程。由于中间设备上只是存储了第二电子设备上的部分数据,因此在中间设备接收到的数据访问请求中,可能会存在部分数据访问请求是用于请求访问中间设备上没有缓存的数据。在这种情况下,中间设备根据数据访问请求无法查询到匹配的数据时,中间设备则将数据访问请求转发至第二电子设备上,由第二电子设备对数据访问请求进行处理。
示例性地,在上述图4对应的实施例中,在中间设备接收目标电子设备发送的第一请求消息之前,该数据访问方法还包括以下的多个步骤。
步骤一,中间设备接收目标电子设备发送的第二请求消息,所述第二请求消息用于请求访问第二电子设备上的第一数据。
其中,中间设备接收到第二请求消息的时间要早于中间设备接收到第一请求消息的时间。并且,在中间设备接收到第二请求消息时,中间设备上还没有缓存有第二请求消息所请求访问的第一数据。
步骤二,响应于中间设备中不存在所述第二请求消息所请求访问的数据,所述中间设备向所述第二电子设备转发所述第二请求消息。
由于中间设备上不存在第二请求消息所请求访问的数据,因此中间设备无法对第二请求消息进行处理,中间设备则将第二请求消息转发至第二电子设备,由第二电子设备对第二请求消息进行处理。
可选的,中间设备可以是通过多种方式来确定中间设备中没有缓存有第二请求消息所请求访问的数据。
例如,中间设备可以在本地的缓存空间中查找是否存在第二请求消息中所请求访问的数据;如果中间设备在本地的缓存空间中查找不到第二请求消息所请求访问的数据,则确定中间设备中没有缓存有第二请求消息所请求访问的数据。
又例如,在中间设备缓存了第二电子设备上部分类型的数据的情况,中间设备通过解析第二请求消息,发现第二请求消息所请求访问的数据的类型是中间设备没有缓存的数据的类型时,则确定中间设备中没有缓存有第二请求消息所请求访问的数据。示例性地,假设中间设备缓存第二电子设备上的文件数据的属性数据,那么在第二请求消息所请求访问的数据为文件数据本身时,中间设备可以确定本地缓存空间中没有缓存有第二请求消息所请求访问的数据。
步骤三,中间设备接收所述第二电子设备发送的第二响应消息,所述第二响应消息包括所述第一数据。
在中间设备向第二电子设备转发第二请求消息后,第二电子设备对第二请求消息进行处理,并且在向目标电子设备返回的第二响应消息中携带目标电子设备所请求访问的第一数据。其中,第二电子设备通过中间设备来向目标电子设备发送第二响应消息,因此中间设备能够接收到第二电子设备所发送的第二响应消息。
步骤四,中间设备向所述目标电子设备转发所述第二响应消息。
可以理解的是,在中间设备没有缓存目标电子设备所请求访问的数据时,中间设备则负责转发目标电子设备和第二电子设备之间的交互消息,以使得目标电子设备能够实现访问第二电子设备上的数据。
可选的,在接收到来自于第二电子设备的第二响应消息之后,中间设备缓存所述第二响应消息中所携带的数据,以得到第二数据。也就是说,在中间设备获取到第二电子设备向目标电子设备返回的数据时,中间设备可以在本地缓存空间中缓存所获取到的数据,从而保证在目标电子设备再次访问该数据或者其他的电子设备访问该数据时,中间设备能够快速地向目标电子设备或其他的电子设备返回该数据,而不需要再从第二电子设备上获取数据。
在实际应用中,中间设备可以通过实时缓存第二电子设备所返回的响应消息中携带的数据,来实现缓存空间中的数据的更新。由于中间设备是在本地缓存空间中获取不到请求消息所请求访问的数据时,才向第二电子设备发送请求消息,因此中间设备所接收到的来自于第二电子设备的响应消息中会包括中间设备的本地缓存空间中没有缓存的数据。在这种情况下,中间设备能够实时在本地缓存空间中缓存第一电子设备新访问的数据,从而保证中间设备的本地缓存空间所缓存的数据的实时性。此外,在中间设备的本地缓存空间已满的情况下,中间设备可以优先删除本地缓存空间中最久没有访问的数据,从而尽可能地保证本地缓存空间所缓存的数据的实时性。
以上介绍了中间设备通过缓存第二电子设备所返回的响应消息中携带的数据,来获取第二电子设备上的数据的过程。在一些情况下,中间设备也可以是通过其他的方式来获取第二电子设备上的数据。
示例性地,第二电子设备可以根据实际需要将第二电子设备中的部分数据发送给中间设备,以使得中间设备在本地缓存空间中缓存所接收到的数据。例如,第二电子设备可以将本地所存储的文件数据对应的元数据、占用空间较小的文件数据或者访问频繁的文件数据发送给中间设备,以使得中间设备能够基于这部分数据代替第二电子设备处理部分数据访问请求。
具体地,中间设备可以接收第四请求消息,所述第四请求消息用于指示所述中间设备存储第三数据,所述第三数据为所述第二电子设备上的部分数据,且所述第三数据包括第二数据。然后,中间设备根据第四请求消息缓存所述第三数据。这样一来,在中间设备接收到上述的第一请求消息时,中间设备则能够查找到与第一请求消息匹配的第二数据,从而向目标电子设备返回携带第二数据的第一响应消息。
此外,中间设备也可以是连接有控制器,该控制器能够对第二电子设备上的数据进行管理,从而根据实际需要向中间设备发送第二电子设备中的部分数据。
可选的,在中间设备为目标电子设备提供数据访问服务的期间,目标电子设备可能会请求对第二电子设备上的数据进行更新,而中间设备上也同时缓存了目标电子设备所请求更新的数据。在这种情况下,中间设备可以是基于目标电子设备的数据更新请求对所缓存的数据进行更新,并且将数据更新请求转发给第二电子设备,以使得第二电子设备也能够同步更新数据。
示例性地,中间设备可以接收所述目标电子设备发送的第五请求消息,所述第五请求消息用于请求更新服务器上的第一数据。由于中间设备上缓存有与第一数据相同的第二数据,因此中间设备根据第五请求消息更新所述第二数据,并向所述第二电子设备发送所述第五请求消息。这样一来,中间设备和第二电子设备能够同步对同一个数据进行更新,从而保证中间设备和第二电子设备上的数据一致性。
此外,中间设备也可以是将请求更新数据的第五请求消息直接转发给第二电子设备,而不基于第五请求消息对第二数据进行更新。然后,第二电子设备基于第五请求消息对第一数据进行更新后,再向中间设备发送更新后的第一数据,从而保证中间设备和第二电子设备上的数据一致性。
可以参阅图5,图5为本申请实施例提供的一种数据访问方法的流程示意图。如图5所示,该数据访问方法包括以下的步骤501-507。
步骤501,中间设备接收到来自于客户端设备的请求消息1,该请求消息1用于请求访问服务器上的数据1。
本实施例中,客户端设备对应于图4实施例所述的目标电子设备,服务器对应于图4实施例所述的第二电子设备。其中,中间设备所接收到的请求消息1的目的地址为服务器。
步骤502,中间设备向服务器转发请求消息1。
由于中间设备上没有缓存请求消息1中所指示的数据1,因此中间设备无法处理请求消息1,从而向服务器转发请求消息1。
步骤503,中间设备接收来自于服务器的响应消息1,该响应消息1中携带数据1。
在服务器对请求消息1进行处理后,服务器向中间设备返回响应消息1,该响应消息1的目的地址为客户端设备。并且,该响应消息1中携带请求消息1中所请求访问的数据1。
步骤504,中间设备缓存响应消息1中的数据1。
步骤505,中间设备向客户端设备转发响应消息1。
需要说明的是,本实施例并不限定步骤504和步骤505的执行顺序。中间设备可以是先执行步骤505,再执行步骤504;中间设备也可以是同时执行步骤504和步骤505。
步骤506,中间设备接收到来自于客户端设备的请求消息2,该请求消息2用于请求访问服务器上的数据1。
其中,请求消息1和请求消息2可以是来自于同一个客户端设备,请求消息1和请求消息2也可以是来自于不同的客户端设备,本实施例对此不做具体限定。
步骤507,中间设备向客户端设备发送响应消息2,该响应消息2中携带数据1。
由于中间设备中已经缓存了数据1,因此中间设备在接收到请求访问数据1的请求消息2时,中间设备可以根据请求消息2查找到本地缓存空间中的数据1。然后,中间设备根据数据1生成响应消息2,并且向客户端设备返回携带数据1的响应消息2。
以上介绍了中间设备进行数据的缓存以及更新的过程,以下将介绍中间设备向客户端设备以及服务器转发消息的过程。
由于NFS是承载于TCP上的,因此客户端设备向服务器发送的请求消息以及服务器向客户端设备返回的响应消息实际上均为TCP消息。并且,在客户端设备与服务器建立TCP链接的情况下,由于中间设备会代替服务器处理来自于客户端设备的部分TCP消息,因此会导致TCP链接信息有一部分会在中间设备上截断。因此,在本实施例中,中间设备可以执行TCP代理,使得客户端设备和服务器之间的TCP链接保持正常交互。
以下将介绍本申请实施例提供的两种TCP代理方式。
TCP代理方式一:TCP终结式代理。
其中,TCP终结式代理是指中间设备终结客户端设备与服务器之间的TCP链接,且中间设备分别与客户端设备和服务器建立TCP链接。也就是说,客户端设备与服务器之间并不建立直接的TCP链接,而是客户端设备与中间设备建立TCP链接,且中间设备还与服务器建立TCP链接。
示例性地,可以参阅图6,图6为本申请实施例提供的一种TCP代理方式的示意图。如图6所示,客户端设备与中间设备建立TCP链接,且中间设备与服务器建立另外的TCP链接。
在TCP代理方式一中,由于中间设备是分别与客户端设备以及服务器建立TCP链接,因此客户端设备所发送的请求消息的目的地址实际上为中间设备,且服务器发送的响应消息的目的地址实际上也是中间设备。在中间设备确定无法处理客户端设备所发送的请求消息时,由于客户端设备所发送的请求消息的目的地址为中间设备,因此中间设备无法直接向服务器转发该请求消息。中间设备通常需要基于中间设备与服务器之间的TCP链接生成新的请求消息,并将新的请求消息发送至相应的服务器上。类似地,服务器向中间设备返回响应消息之后,中间设备同样需要基于中间设备与客户端设备之间的TCP链接生成新的响应消息,并将新的响应消息发送至相应的服务器上。
由以上的介绍可知,在TCP代理方式一中,中间设备是分别与客户端设备以及服务器建立TCP链接,中间设备需要解析处理请求消息和响应消息并生成新的请求消息和响应消息,因此中间设备上需要建立完整的TCP协议栈,对中间设备的硬件性能有较高要求。此外,在建立TCP链接后,中间设备需要对TCP链接进行维护,例如建链信息、断链信息以及心跳维护信息都需要上传至中间设备的处理器进行处理,从而在一定程度上影响中间设备的处理性能。
在一些特别的情况下,例如多个客户端设备与中间设备连接且中间设备还与多个存储文件数据的服务器连接,中间设备还需要执行多客户端设备与多服务器之间的分发管理,从而增加了中间设备的管理复杂度。例如,中间设备接收到来自于客户端设备的请求消息之后,中间设备需要确定当前请求消息所请求访问的数据位于哪个服务器上;又例如,中间设备接收到来自于服务器的响应消息之后,中间设备需要确定当前响应消息需要返回给哪个客户端设备。
TCP代理方式二:TCP非终结式代理。
可以参阅图7,图7为本申请实施例提供的另一种TCP代理方式的示意图。如图7所示,TCP非终结式代理是指中间设备不终结客户端设备与服务器之间的TCP链接,客户端设备与服务器基于两者之间的TCP链接进行通信。
在TCP代理方式二中,中间设备主要是负责对请求消息和响应消息进行转发,不需要重新生成新的请求消息和响应消息,因此对中间设备的处理器没有额外的性能要求,中间设备基于硬件表项即可实现请求消息和响应消息的转发,保证了中间设备的性能。
此外,在多个客户端设备与中间设备连接且中间设备还与多个服务器连接的场景下,由于客户端设备与服务器建立了独立的TCP链接,来自于客户端设备的请求消息以及服务器的响应消息中的目的地址和端口号都不需要执行转换,因此中间设备基于请求消息和响应消息中的目的地址即可轻松实现消息转发,而无需执行多客户端设备与多服务器之间的分发管理。
然而,由于中间设备会代替服务器处理来自于客户端设备的部分TCP消息,即TCP链接信息有一部分会在中间设备上截断,因此中间设备后续需要对请求消息和响应消息中的部分内容进行修正,以保证客户端设备和服务器之间的TCP链接保持正常交互。
为了便于理解,以下先简单介绍TCP消息的机制。
可以参阅图8,图8为本申请实施例提供的一种TCP消息的格式示意图。如图8所示,TCP消息中包括多个字段,该多个字段分别为:源端口、目的端口、序列号(SequenceNumber,seq)、确认号(Acknowledgment Number,ack)、头部长度、保留、控制标志、窗口、校验和、紧急指针、选项和填充以及有效数据。其中,中间设备需要对请求消息和响应消息进行修改的是seq和ack。以下将介绍TCP消息中的seq和ack的作用。
在TCP消息的传输过程中,各个TCP消息都会有独立的seq和ack,以起到标识TCP消息的作用。
其中,seq的语义与TCP消息中的控制标志的值有关。基于控制标志中的SYN是否为1,seq表达不同的含义。
(1)当SYN=1时,表示当前为连接建立阶段。TCP消息中的seq为初始序号(InitialSequence Number,ISN),seq是通过算法来随机生成的。
(2)当SYN=0时,表示当前为数据传输正式开始。第一个TCP消息的seq为ISN+1;后续的TCP消息中的seq具体为:前一个TCP消息的seq+前一个TCP消息的有效数据的字节长度。例如,如果客户端设备发送的一个TCP消息的seq为5,且该TCP消息的有效数据的字节长度为12,那么客户端设备接着发送下一个TCP消息时,应该将接着要发送的TCP消息的seq设置为5+12=17。
对于TCP消息中的ack,ack表示了TCP消息接收端所期望接收的字节序列。具体来说,TCP消息中ack的值表示一个准备接收的TCP消息的seq。值得注意的是,注意,TCP消息中ack的值所指向的是准备接收的TCP消息中的seq,也就是下一个期望接收的TCP消息的seq。
举例来说,假设客户端设备向服务器发送一个TCP消息1,该TCP消息1的seq为1,且有效数据的字节长度为1000。服务器在接收到TCP消息1之后,向客户端设备回复一个响应消息,即TCP消息1’。其中,TCP消息1’中的ack则为服务器接收到的TCP消息1中的seq与有效数据的字节长度之和,即TCP消息1’中的ack为1+1000=1001。由于客户端设备继续向服务器发送下一个TCP消息(即TCP消息2)时,TCP消息2中的seq同样为TCP消息1中的seq与有效数据的字节长度之和,因此TCP消息1’中的ack实际上表示了服务器期望接收的下一个TCP消息中的seq。
总的来说,对于任意一个设备而言,该设备所发送的TCP消息中的seq可以是表示该设备所发送的上一个TCP消息中的seq与有效字节长度之和。该设备所发送的TCP消息中的ack则表示该设备最近接收到的一个TCP消息中的seq与有效字节长度之和;同时,该设备所发送的TCP消息中的ack也可以是表示该设备期望接收到的下一个TCP消息中的seq。
由以上对seq和ack的介绍可知,seq的值是基于设备上一个所发送的TCP消息来确定的,而ack的值则是基于设备上一个所接收到的TCP消息来确定的。在中间设备采用上述的TCP代理方式二来进行TCP代理的情况下,当中间设备代替服务器向客户端设备处理请求消息并且返回相应的响应消息时,客户端设备与服务器之间的TCP消息交互发生中断。因此,中间设备需要对客户端设备后续与服务器进行交互的TCP消息中的seq和ack进行修改,以保证客户端设备能够与服务器保持正常的交互。
以上述图4对应的实施例为例,在目标电子设备向第二电子设备发送第一请求消息,且中间设备代替第二电子设备向目标电子设备返回第一响应消息之后,如果目标电子设备继续向第二电子设备发送请求消息,那么由于第二电子设备没有接收到目标电子设备先前所发送的第一请求消息,第二电子设备则会认为后续的请求消息中seq和ack是错误的。也就是说,在中间设备代替第二电子设备处理来自于目标电子设备的请求消息之后,中间设备在后续向第二电子设备转发来自于目标电子设备的请求消息时,需要对请求消息中的seq和ack进行修改,以保证交互的连续性。
示例性地,在图4对应的实施例中,在目标电子设备与第二电子设备的第一次交互过程中,目标电子设备向第二电子设备发送了第二请求消息,且第二电子设备向目标电子设备返回了第二响应消息。在后续的交互过程中,目标电子设备向第二电子设备发送的第一请求消息在中途被中间设备截断,且由中间设备向目标电子设备返回第一响应消息。也就是说,目标电子设备与第二电子设备的第二次交互过程实际上是由中间设备代替执行,且第二电子设备并不知道目标电子设备与中间设备所进行的交互。
在本实施例中,中间设备向目标电子设备发送第一响应消息之后,中间设备接收所述目标电子设备发送的第三请求消息,所述第三请求消息用于请求访问所述第二电子设备上的数据,且所述第三请求消息为TCP消息。
然后,响应于中间设备中不存在所述第三请求消息所请求访问的数据,所述中间设备根据所述第一请求消息和所述第一响应消息更新所述第三请求消息中的seq和ack,得到更新后的第三请求消息,并向所述第二电子设备转发所述更新后的第三请求消息。
其中,更新后的第三请求消息的seq为所述第三请求消息的seq与所述第一请求消息中有效数据的长度的差值,更新后的第三请求消息的ack为所述第三请求消息的ack与所述第一响应消息中有效数据的长度的差值。
其次,中间设备接收所述第二电子设备发送的第三响应消息,所述第三响应消息包括所述第三请求消息所请求访问的数据。其中,第三响应消息是第二电子设备基于更新后的第三请求消息生成的,因此第三响应消息中的seq和ack也需要修改。
最后,中间设备根据所述第一请求消息和所述第一响应消息更新所述第三响应消息中的seq和ack,得到更新后的第三响应消息,并向所述目标电子设备发送所述更新后的第三响应消息。
其中,所述更新后的第三响应消息的seq为所述第三响应消息的seq与所述第一响应消息中有效数据的长度之和,所述更新后的第三响应消息的ack为所述第三响应消息的ack与所述第一请求消息中有效数据的长度之和。
为了便于理解,以下将结合具体例子详细介绍中间设备修改请求消息和响应消息中的seq和ack的过程。
可以参阅图9,图9为本申请实施例提供的一种目标电子设备、中间设备和第二电子设备进行消息交互的示意图。
如图9所示,首先,目标电子设备向第二电子设备发送请求消息1。该请求消息1中的seq为100,ack为500,字节长度为106。其中,该请求消息1例如可以为上述图4对应的实施例中所述的第二请求消息。
由于中间设备中没有缓存请求消息1所请求访问的数据,因此中间设备不对请求消息1进行处理,而是将请求消息1转发给第二电子设备。
第二电子设备对请求消息1进行处理后,通过中间设备向目标电子设备返回响应消息1。该响应消息1中的seq为500,ack为206,字节长度为112。其中,该响应消息1例如可以为上述图4对应的实施例中所述的第二响应消息。
然后,目标电子设备继续向第二电子设备发送请求消息2。该请求消息2中的seq为206,ack为612,字节长度为106。显然,请求消息2中的seq为目标电子设备所发送的上一个消息(即请求消息1)中的seq与字节长度之和(100+106);请求消息2中的ack为目标电子设备所接收到的上一个消息(即响应消息1)中的seq与字节长度之和(500+112)。其中,该请求消息2例如可以为上述图4对应的实施例中所述的第一请求消息。
由于中间设备中缓存有请求消息2所请求访问的数据,因此中间设备代替第二电子设备对请求消息2进行处理,并向目标电子设备返回响应消息2。该响应消息2中的seq为612,ack为312,字节长度为112。显然,响应消息2中的seq为中间设备所接收到的上一个消息(即请求消息2)中的ack;响应消息2中的ack为中间设备所接收到的上一个消息(即请求消息2)中的seq与字节长度之和(206+106)。其中,该响应消息2例如可以为上述图4对应的实施例中所述的第一响应消息。
在接收到响应消息2后,目标电子设备继续向第二电子设备发送请求消息3。该请求消息3中的seq为312,ack为724,字节长度为100。显然,该请求消息3中的seq和ack可以是基于响应消息2得到的。其中,该请求消息3例如可以为上述实施例中所述的第三请求消息。
由于中间设备中没有缓存请求消息3所请求访问的数据,因此中间设备需要将该请求消息3发往第二电子设备,由第二电子设备进行处理。此外,由于中间设备代替第二电子设备处理了一次请求消息2,因此对于第二电子设备而言,第二电子设备实际上在上一次接收到的消息为请求消息1。为维持目标电子设备与第二电子设备之间的TCP链接,中间设备可以对请求消息3中的seq和ack进行修改,得到请求消息3’。该请求消息3’中的seq为206,ack为612,字节长度为100。具体地,该请求消息3’中的seq具体为请求消息3中的seq与请求消息2的字节长度的差值(312-106=206);该请求消息3’中的ack具体为请求消息3中的ack与响应消息2的字节长度的差值(724-112=612)。其中,该请求消息3’例如可以为上述实施例中所述的更新后的第三请求消息。
在第二电子设备对请求消息3’进行处理后,第二电子设备向中间设备返回响应消息3。该响应消息3中的seq为612,ack为306,字节长度为50。其中,该响应消息3例如可以为上述实施例中所述的第三响应消息。
在接收到响应消息3之后,中间设备同样对响应消息3中的seq和ack进行修改,得到响应消息3’。该响应消息3’中的seq为724,ack为412,字节长度为50。具体地,该响应消息3’中的seq具体为响应消息3中的seq与响应消息2的字节长度之和(612+112=724);该响应消息3’中的ack具体为响应消息3中的ack与请求消息2的字节长度之和(306+106=412)。其中,该响应消息3’例如可以为上述实施例中所述的更新后的第三响应消息。
可以理解的是,以上介绍了中间设备代替第二电子设备处理了一次请求消息后,中间设备如何修改后续发往第二电子设备的请求消息中的seq和ack,以及第二电子设备所返回的响应消息中的seq和ack。
在实际应用中,中间设备可能会代替第二电子设备处理多次来自于目标电子设备的请求消息。在这种情况下,中间设备则需要基于中间设备所处理过的所有请求消息以及中间设备所生成的所有响应消息,来修改后续发往第二电子设备的请求消息中的seq和ack,以及第二电子设备所返回的响应消息中的seq和ack。
由上文的介绍可知,任意一个请求消息或响应消息中的seq和ack实际上都是基于之前的请求消息和响应消息中的字节长度累加得到的。因此,中间设备只要记录中间设备代替第二电子设备所处理的请求消息和响应消息中的字节长度累加值,则能够实现任意请求消息和响应消息的更改。
示例性地,在中间设备接收到来自于目标电子设备的请求消息且中间设备需要对请求消息中的seq和ack进行修改,以发送给第二电子设备时,中间设备对请求消息中的seq和ack进行修改的方式如以下公式1和公式2所示。
Seq_New1=Seq_Origin1–C2S_Break_Len 公式1
Ack_New1=Ack_Origin1–S2C_Break_Len 公式2
其中,Seq_Origin1表示原始请求消息中的seq;Seq_New1表示经中间设备修改后得到的请求消息中的seq;C2S_Break_Len表示中间设备代替第二电子设备处理的所有请求消息的字节长度累加值;Ack_Origin1表示原始请求消息中的ack;Ack_New1表示经中间设备修改后得到的请求消息中的ack;S2C_Break_Len表示中间设备代替第二电子设备向目标电子设备反馈的所有响应消息的字节长度累加值。
类似地,在中间设备接收到来自于第二电子设备的响应消息且中间设备需要对该响应消息中的seq和ack进行修改,以发送给目标电子设备时,中间设备对响应消息中的seq和ack进行修改的方式如以下公式3和公式4所示。
Seq_New2=Seq_Origin2+S2C_Break_Len 公式3
Ack_New2=Ack_Origin2+C2S_Break_Len 公式4
其中,Seq_Origin2表示原始响应消息中的seq;Seq_New2表示经中间设备修改后得到的响应消息中的seq;C2S_Break_Len表示中间设备代替第二电子设备处理的所有请求消息的字节长度累加值;Ack_Origin2表示原始响应消息中的ack;Ack_New2表示经中间设备修改后得到的响应消息中的ack;S2C_Break_Len表示中间设备代替第二电子设备向目标电子设备反馈的所有响应消息的字节长度累加值。
基于以上的公式1-公式4,中间设备只要记录并累加自身代替第二电子设备处理的所有请求消息的字节长度,以及记录并累加自身代替第二电子设备向目标电子设备反馈的所有响应消息的字节长度,则能够在后续任意时刻对接收到的请求消息和响应消息进行更改。
示例性地,在实际应用中,由于任意两个电子设备之间的TCP链接都可以用唯一的一组五元组来标识,因此中间设备可以基于五元组来唯一表示目标电子设备和第二电子设备之间的TCP链接。其中,五元组包括源IP地址,源端口,目的IP地址,目的端口和传输层协议。此外,中间设备也可以是基于其他的五元组来唯一表示其他的第一电子设备与第二电子设备之间的TCP链接。然后,中间设备每次在代替第二电子设备处理来自于目标电子设备的请求消息时,都更新请求消息字节长度累加值;并且,中间设备每次在代替第二电子设备向目标电子设备反馈响应消息时,都更新响应消息字节长度累加值。
例如,中间设备可以基于以下的表1来记录请求消息字节长度累加值以及响应消息字节长度累加值。
表1
在表1中,每一项五元组中可以包括两个五元组,一个五元组为从目标电子设备到第二电子设备的请求消息中的五元组,另一个五元组则为从第二电子设备到目标电子设备的响应消息的五元组。例如,在五元组1.1/端口1/2.2/端口2/TCP中,1.1表示目标电子设备的地址(即源地址),端口1表示目标电子设备上的端口(即源端口),2.2表示第二电子设备的地址(即目的地址),端口2表示第二电子设备上的端口(即目的端口)。
以上介绍了中间设备基于TCP代理来实现转发消息以及代替第二电子设备处理请求消息的过程。在中间设备代替第二电子设备处理来自于目标电子设备的请求消息时,中间设备需要在本地缓存空间中查找对应的数据。以下将详细介绍中间设备如何在本地缓存空间中查找与请求消息对应的数据。
可以理解的是,在NFS架构中,第二电子设备上保存着大量的文件数据以及与这些文件数据相关的数据(例如文件数据的属性信息以及文件数据的权限信息)。目标电子设备可以是基于不同类型的请求消息来请求访问第二电子设备上不同类型的数据。
例如,目标电子设备可以通过发送包括getattr字段的请求消息来请求访问第二电子设备上的文件数据的属性信息;又例如,目标电子设备可以通过发送包括read字段的请求消息来请求访问第二电子设备上的文件数据。
因此,中间设备上可以建立映射表,映射表中建立了请求消息中用于请求访问数据的关键信息和数据本身之间的映射关系。这样一来,中间设备在解析请求消息后,能够通过查询映射表来获取到相应的数据内容。
示例性地,所述中间设备根据所述第一请求消息确定缓存于所述中间设备中的第二数据,具体包括:所述中间设备解析所述第一请求消息,以得到所述第一请求消息的类型和所述第一请求消息中的目标字段。其中,所述第一请求消息用于请求访问与目标数据相关的所述第一数据。所述目标字段用于指示所述目标数据的标识,所述目标数据的标识例如可以为filehandle。可选的,与目标数据相关的所述第一数据可以包括所述目标数据的内容、所述目标数据的属性信息以及所述目标数据的权限信息中的一种或多种。例如,目标数据可以为第二电子设备上的文件数据;那么,与目标数据相关的第一数据可以包括文件数据本身的内容、文件数据的属性信息(例如文件数据的创建时间、占用空间大小以及最后更改时间等信息)以及文件数据的权限信息(例如文件数据的访问权限信息或修改权限信息)。
此外,不同类型的请求消息用于请求访问不同类型的数据,因此中间设备基于所述第一请求消息的类型,能够确定第一请求消息请求访问的第一数据的类型。例如,包括getattr字段的请求消息所请求访问的数据的类型为属性数据;又例如,包括read字段的请求消息所请求访问的数据的类型为文件数据。
然后,中间设备根据所述第一请求消息的类型和所述目标字段的内容,查找映射表,得到所述第二数据,所述映射表用于记录消息类型和数据标识与数据之间的映射关系。
示例性地,中间设备所建立的映射表可以如以下的表2所示。
表2
类型+filehandle(key) | 缓存数据(value) |
Getattr+filehandle1 | 数据1 |
Getattr+filehandle2 | 数据2 |
Read+filehandle3 | 数据3 |
… | … |
Getattr+filehandlen | 数据n |
如表2所示,映射表中的关键信息(key)包括请求消息类型以及用于表示文件或目录的filehandle,映射表中的缓存数据(value)则记录了具体需要访问的数据。
由以上的介绍可知,目标电子设备可以是基于不同类型的请求消息来请求访问不同类型的数据。可选的,由于中间设备上是缓存了第二电子设备上的部分数据,因此在一些情况下,中间设备可以是仅缓存第二电子设备上特定类型的数据。例如,中间设备只缓存第二电子设备上的属性数据或者权限数据。这样,当目标电子设备请求访问某个文件数据的属性数据或权限数据时,中间设备可以代替第二电子设备向目标电子设备返回相应的数据;而目标电子设备请求访问其他类型的数据时,中间设备则向第二电子设备转发来自于目标电子设备的请求消息,即中间设备不代替第二电子设备执行请求消息的处理。
示例性地,中间设备接收第六请求消息,其中,所述第六请求消息用于请求访问所述第二电子设备上的数据,所述第六请求消息的类型为目标类型,且不同类型的请求消息用于请求访问不同类型的数据。其中,目标类型可以为请求访问属性数据的消息类型、请求访问权限数据的消息类型或者请求访问文件数据本身的消息类型,在此不对目标类型做具体限定。
响应于所述中间设备不支持处理属于所述目标类型的消息,所述中间设备向所述第二电子设备转发所述第六请求消息。也就是说,中间设备只支持处理部分类型的消息,对于中间设备不支持处理的消息,中间设备直接将该消息转发至第二电子设备,由第二电子设备进行处理。
本方案中,在中间设备处理能力或缓存资源受限的情况下,中间设备可以是只缓存部分类型的数据,并且只处理与这部分类型数据相关的消息,从而代替第二电子设备处理部分类型的消息。这样,在兼顾了中间设备能力的情况下,能够提高减轻第二电子设备的处理压力,提高部分类型数据的访问效率,增强了本方案的适用性。
为便于理解,以下将结合具体例子详细介绍本申请实施例提供的数据访问方法。
首先,对用于执行本申请实施例提供的数据访问方法的中间设备进行介绍。在本申请实施例中,中间设备用于实现以下的三个功能。
功能1:NFS协议栈的部分或者全部功能。
在本实施例中,由于中间设备需要解析NFS消息并根据NFS消息执行相应的处理操作,因此中间设备需要具备NFS协议栈能力。其中,NFS协议栈能力为解析并处理NFS消息的能力,NFS消息则是指NFS架构中的各个设备所交互的消息。如果中间设备只对一部分类型的NFS消息进行处理,那么中间设备可以是只做部分NFS协议栈功能;如果中间设备对所有类型的NFS消息进行处理,那么中间设备则需要具备完整的NFS协议栈功能。
功能2:基于NFS访问请求消息查询缓存与快速回复响应消息功能。
为实现功能2,中间设备上需要有一定的缓存存储介质。可选的,中间设备上的缓存存储介质部署于中间设备上的存储介质,也可以是中间设备外扩的存储介质,比如通过远程直接数据存取(Remote Direct Memory Access,RDMA)方式外扩的存储介质。在具有缓存存储介质的基础上,中间设备需要根据客户端设备的数据访问请求查询缓存,缓存中有数据命中则做快速回复,否则发给原来的服务器进行处理。
功能3:TCP代理功能。
由于NFS承载在TCP之上,对NFS做快速截断式回复势必会造成TCP的不连续性,因此中间设备需要对TCP做额外的代理,保证TCP序列号和协议的连续性和完整性。
可以参阅图10,图10为本申请实施例提供的一种中间设备的结构示意图。如图10所示,中间设备中包括消息解析模块、数据查询模块、组包模块和TCP代理模块,并且中间设备中还部署有缓存映射表。其中,消息解析模块用于解析来自于客户端设备的请求消息,并将解析得到的关键信息传递给数据查询模块;数据查询模块用于基于请求消息中的关键信息查询缓存映射表,已确认是否存在命中的数据。组包模块则用于在数据查询模块查询到命中的数据时,生成响应的响应消息,并返回给客户端设备。TCP代理模块则用于在数据查询模块查询不到命中的数据时,修改客户端设备所发送的请求消息,并将修改后的请求消息发送给服务器。此外,TCP代理模块还用于在服务器返回响应消息时,修改服务器所返回的响应消息,并将修改后的响应消息发送给客户端设备。
可以参阅图11,图11为本申请实施例提供的一种中间设备中的各个模块执行数据访问方法的流程示意图。如图11所示,中间设备中的各个模块执行数据访问方法的过程包括以下的步骤1101-1108。
步骤1101,消息解析模块接收来自于客户端设备的请求消息。
其中,该请求消息用于请求访问服务器上的数据。示例性地,该请求消息例如可以为上述的第一请求消息、第二请求消息或第三请求消息。
步骤1102,消息解析模块解析请求消息,并将解析得到的请求消息中的关键信息传递给数据查询模块。
本实施例中,消息解析模块用于对基于TCP和NFS的请求消息进行解析。通过消息解析模块的解析,可以确定请求消息的类型。在请求消息属于中间设备所支持处理的消息类型时,中间设备执行后续的步骤1103-1108;对于中间设备不支持处理的消息类型,中间设备则将该请求消息转发至服务器。
其中,消息解析模块支持解析请求消息中与TCP相关的部分以及与NFS相关的部分。具体地,消息解析模块解析与NFS相关的部分,能够得到请求消息中指示所请求访问的数据的关键信息,该关键信息例如包括getattr字段和filehandle。
消息解析模块解析与TCP相关的部分,能够得到请求消息中的五元组信息、seq和ack。其中,请求消息中的五元组信息、seq和ack用于生成TCP记录表,以记录请求消息字节长度累加值以及响应消息字节长度累加值,便于后续的TCP代理模块基于TCP记录表执行相应的TCP代理操作。
步骤1103,数据查询模块基于请求消息中的关键信息查询缓存映射表,以确定缓存映射表中是否存在命中的数据。
其中,缓存映射表例如可以如上述的表2所示。缓存映射表中记录了关键信息与数据之间的映射关系。因此,数据查询模块可以基于请求消息中的关键信息查询缓存映射表,当缓存映射表存在与请求消息中的关键信息所匹配的信息时,可以确定缓存映射表中存在命中的数据。
步骤1104,在缓存映射表中不存在命中的数据时,TCP代理模块修改请求消息中的seq和ack,并将修改后的请求消息发送给服务器。
在缓存映射表中不存在命中的数据时,数据查询模块通知TCP代理模块当前缓存映射表中不存在命中的数据。这样,TCP代理模块则可以根据如上述表1所示的记录表来修改请求消息中的seq和ack,并将修改后的请求消息发送给服务器。
步骤1105,TCP代理模块接收来自于服务器的响应消息。
服务器接收到修改后的请求消息后,服务器根据修改后的请求消息中所请求访问的数据,生成响应消息,并向中间设备的TCP代理模块返回响应消息。
步骤1106,TCP代理模块修改响应消息中的seq和ack,并将修改后的响应消息发送给客户端设备。
类似地,在接收到服务器返回的响应消息后,TCP代理模块则可以根据如上述表1所示的记录表来修改响应消息中的seq和ack,并将修改后的请求消息发送给服务器。
可选的,在中间设备接收到来自于服务器的响应消息之后,中间设备中的消息解析模块可以对响应消息进行解析,并得到响应消息中的数据。这样,消息解析模块可以将将请求消息中的关键信息与响应消息中的数据建立映射关系,并且存入上述的缓存映射表中,以便于中间设备后续能够在客户端设备继续访问该数据时快速回复客户端设备。
步骤1107,在缓存映射表中存在命中的数据时,数据查询模块向组包模块和TCP代理模块传递命中的数据。
如果缓存映射表中存在命中的数据,则代表中间设备可以代替服务器处理来自于客户端设备的请求消息,因此中间设备中的数据查询模块向组包模块传递命中的数据,以基于命中的数据生成响应消息。
此外,由于中间设备代替服务器处理来自于客户端设备的请求消息,因此数据查询模块需要向TCP代理模块传递命中的数据或者命中的数据的字节数,以便于TCP代理模块在如上述表1所示的记录表中记录中间设备代替服务器返回的数据的字节数。
步骤1108,组包模块根据命中的数据生成响应消息,并向客户端设备发送响应消息。
本实施例中,在基于命中的数据以及请求消息生产响应消息的过程中,组包模块中需要对消息中的媒体存取控制地址(Media Access Control Address,MAC)层、IP层、TCP层、远程过程调用(Remote Procedure Call,RPC)层、NFS层均做相应修改,其中MAC层和IP层按照传统的反向回复消息做修改即可,RPC层根据回复消息协议要求进行修改,NFS层数据为缓存映射表里查询到的value信息值,按照格式要求组包到消息的对应位置。
以具体的NFS消息为例,当客户端设备第一次发送filehandle为X的getattr请求消息时,中间设备记录getattr属性和X,并将该getattr请求消息转发给服务器。
在中间设备接收到服务器返回的getattr响应消息时,中间设备将getattr响应消息中的数据Y与getattr属性和X关联保存至缓存映射表。
后续如果中间设备再次接收到filehandle为X的getattr请求消息,中间设备可以直接从缓存映射表查询到对应的数据Y并实现组包回复。
此外,如果中间设备接收到与数据Y相关的修改请求消息,例如请求删除或更改数据Y的请求消息,中间设备则基于修改请求消息对缓存映射表中的数据Y进行修改,并将该修改请求消息发送给服务器,以实现数据Y的同步更新。
可以参阅图12,图12为本申请实施例提供的一种数据访问装置的结构示意图。如图12所示,本申请实施例提供了一种数据访问装置,所述数据访问装置应用于NFS架构中的中间设备,所述NFS架构包括多个第一电子设备、所述中间设备和第二电子设备。所述数据访问装置包括:接收模块1201、处理模块1202和发送模块1203。接收模块1201,用于接收目标电子设备发送的第一请求消息,所述第一请求消息用于请求访问所述第二电子设备上的第一数据,所述目标电子设备为所述多个第一电子设备中的任意一个电子设备;处理模块1202,用于根据所述第一请求消息确定缓存于所述中间设备中的第二数据,其中所述第二数据与所述第一数据相同,所述中间设备上缓存有所述第二电子设备上的部分数据;发送模块1203,用于向所述目标电子设备发送第一响应消息,所述第一响应消息包括所述第二数据。
在一种可能的实现方式中,所述接收模块1201,还用于接收所述目标电子设备发送的第二请求消息,所述第二请求消息用于请求访问所述第二电子设备上的所述第一数据;所述发送模块1203,还用于响应于所述中间设备中不存在所述第二请求消息所请求访问的数据,向所述第二电子设备转发所述第二请求消息;所述接收模块1201,还用于接收所述第二电子设备发送的第二响应消息,所述第二响应消息包括所述第一数据;所述发送模块1203,还用于向所述目标电子设备转发所述第二响应消息。
在一种可能的实现方式中,所述处理模块1202,还用于缓存所述第二响应消息中所携带的数据,以得到所述第二数据。
在一种可能的实现方式中,所述接收模块1201,还用于接收所述目标电子设备发送的第三请求消息,所述第三请求消息用于请求访问所述第二电子设备上的数据,所述第三请求消息为传输控制协议TCP消息;所述处理模块1202,还用于响应于所述中间设备中不存在所述第三请求消息所请求访问的数据,根据所述第一请求消息和所述第一响应消息更新所述第三请求消息中的序列号seq和确认号ack,得到更新后的第三请求消息,并向所述第二电子设备转发所述更新后的第三请求消息;所述接收模块1201,还用于接收所述第二电子设备发送的第三响应消息,所述第三响应消息包括所述第三请求消息所请求访问的数据;所述处理模块1202,还用于根据所述第一请求消息和所述第一响应消息更新所述第三响应消息中的seq和ack,得到更新后的第三响应消息,并向所述目标电子设备发送所述更新后的第三响应消息。
在一种可能的实现方式中,所述更新后的第三请求消息的seq为所述第三请求消息的seq与所述第一请求消息中有效数据的长度的差值,所述更新后的第三请求消息的ack为所述第三请求消息的ack与所述第一响应消息中有效数据的长度的差值;所述更新后的第三响应消息的seq为所述第三响应消息的seq与所述第一响应消息中有效数据的长度之和,所述更新后的第三响应消息的ack为所述第三响应消息的ack与所述第一请求消息中有效数据的长度之和。
在一种可能的实现方式中,所述接收模块1201,还用于接收第四请求消息,所述第四请求消息用于指示所述中间设备存储第三数据,所述第三数据为所述第二电子设备上的部分数据,所述第三数据包括所述第二数据;所述处理模块1202,还用于根据所述第四请求消息缓存所述第三数据。
在一种可能的实现方式中,所述处理模块1202,还用于解析所述第一请求消息,以得到所述第一请求消息的类型和所述第一请求消息中的目标字段,其中,所述第一请求消息用于请求访问与目标数据相关的所述第一数据,所述第一请求消息的类型用于指示所述第一数据的类型,所述目标字段用于指示所述目标数据的标识;所述处理模块1202,还用于根据所述第一请求消息的类型和所述目标字段的内容,查找映射表,得到所述第二数据,所述映射表用于记录消息类型和数据标识与数据之间的映射关系。
在一种可能的实现方式中,与所述目标数据相关的所述第一数据包括所述目标数据的内容、所述目标数据的属性信息以及所述目标数据的权限信息中的一种或多种。
在一种可能的实现方式中,所述接收模块1201,还用于接收所述目标电子设备发送的第五请求消息,所述第五请求消息用于请求更新所述第一数据;所述处理模块1202,还用于根据所述第五请求消息更新所述第二数据,并向所述第二电子设备发送所述第五请求消息。
在一种可能的实现方式中,所述接收模块1201,还用于接收第六请求消息,其中,所述第六请求消息用于请求访问所述第二电子设备上的数据,所述第六请求消息的类型为目标类型,且不同类型的请求消息用于请求访问不同类型的数据;所述发送模块1203,还用于响应于所述中间设备不支持处理属于所述目标类型的消息,向所述第二电子设备转发所述第六请求消息。
在一种可能的实现方式中,所述中间设备中部署有NP、可编程芯片、FPGA以及DPU中的一个或多个。
接下来介绍本申请实施例提供的一种网络设备,请参阅图13,图13为本申请实施例提供的网络设备的一种结构示意图。图13所示的网络设备1300具体可以表现为服务器、交换机、网关或路由器等设备,此处不做限定。其中,网络设备1300上可以部署有图12对应实施例中所描述的数据访问装置,用于实现图4对应实施例中的数据访问功能。具体的,网络设备1300包括:中央处理器1301、网络处理器1302和高速存储介质1303。其中,网络处理器1302可以是通过高速总线与高速存储介质1303连接。
中央处理器1301运行于控制面,用于执行网络设备1300中的系统启动与控制管理。
网络处理器1302运行于转发面,用于执行消息转发、查找缓存映射表以及消息内容编辑修改等操作。示例性地,网络处理器1302用于执行上述图4所述的实施例中的数据访问方法。
具体来说,在获取到客户端设备发送的请求消息时,网络处理器1302通过查找缓存映射表来确定网络设备1300是否存储有客户端设备所请求访问的数据。当网络处理器1302查找缓存映射表确定网络设备1300上未存储有客户端设备所请求访问的数据时,网络处理器1302向服务器转发该请求消息。当网络处理器1302查找缓存映射表确定网络设备1300未存储有客户端设备所请求访问的数据时,网络处理器1302根据查找到的数据生成响应消息,并向客户端设备返回响应消息。
此外,当网络处理器1302成功代替服务器处理过来自于客户端设备的请求消息(即网络处理器1302将查找缓存映射表得到的数据返回给客户端设备)之后,网络处理器1302在想服务器或客户端设备转发消息时,需要对转发的消息内容(即消息中的seq和ack)进行编辑修改,以保证服务器和客户端设备之间所交互的消息的连续性。
高速存储介质1303用于存储服务器上的部分数据,即高速存储介质1303上存储的是客户端设备请求访问的数据。示例性地,高速存储介质1303上可以存储上述实施例所述的缓存映射表(即表2)。网络处理器1302通过查找高速存储介质1303上的缓存映射表来确定需要向客户端设备返回的数据。其中,高速存储介质1303例如可以为RAM。
本申请实施例中还提供一种NFS系统,包括:多个第一电子设备、中间设备和第二电子设备,其中所述中间设备中部署有如图12所述的数据访问装置。所述中间设备例如可以为图13所述的网络设备。
本申请实施例中还提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行如前述网络设备所执行的步骤。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行数据处理的程序,当其在计算机上运行时,使得计算机执行如前述网络设备所执行的步骤。
本申请实施例提供的网络设备具体可以包括芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使网络设备内的芯片执行上述实施例描述的数据访问方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
Claims (25)
1.一种数据访问方法,其特征在于,所述方法应用于网络文件系统NFS架构中的中间设备,所述NFS架构包括多个第一电子设备、所述中间设备和第二电子设备,所述方法包括:
所述中间设备接收目标电子设备发送的第一请求消息,所述第一请求消息用于请求访问所述第二电子设备上的第一数据,所述目标电子设备为所述多个第一电子设备中的任意一个电子设备;
所述中间设备根据所述第一请求消息确定缓存于所述中间设备中的第二数据,其中所述第二数据与所述第一数据相同,所述中间设备上缓存有所述第二电子设备上的部分数据;
所述中间设备向所述目标电子设备发送第一响应消息,所述第一响应消息包括所述第二数据。
2.根据权利要求1所述的方法,其特征在于,所述中间设备接收所述目标电子设备发送的第一请求消息之前,所述方法还包括:
所述中间设备接收所述目标电子设备发送的第二请求消息,所述第二请求消息用于请求访问所述第二电子设备上的所述第一数据;
响应于所述中间设备中不存在所述第二请求消息所请求访问的数据,所述中间设备向所述第二电子设备转发所述第二请求消息;
所述中间设备接收所述第二电子设备发送的第二响应消息,所述第二响应消息包括所述第一数据;
所述中间设备向所述目标电子设备转发所述第二响应消息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述中间设备缓存所述第二响应消息中所携带的数据,以得到所述第二数据。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述中间设备向所述目标电子设备发送第一响应消息之后,所述方法还包括:
所述中间设备接收所述目标电子设备发送的第三请求消息,所述第三请求消息用于请求访问所述第二电子设备上的数据,所述第三请求消息为传输控制协议TCP消息;
响应于所述中间设备中不存在所述第三请求消息所请求访问的数据,所述中间设备根据所述第一请求消息和所述第一响应消息更新所述第三请求消息中的序列号seq和确认号ack,得到更新后的第三请求消息,并向所述第二电子设备转发所述更新后的第三请求消息;
所述中间设备接收所述第二电子设备发送的第三响应消息,所述第三响应消息包括所述第三请求消息所请求访问的数据;
所述中间设备根据所述第一请求消息和所述第一响应消息更新所述第三响应消息中的seq和ack,得到更新后的第三响应消息,并向所述目标电子设备发送所述更新后的第三响应消息。
5.根据权利要求4所述的方法,其特征在于,所述更新后的第三请求消息的seq为所述第三请求消息的seq与所述第一请求消息中有效数据的长度的差值,所述更新后的第三请求消息的ack为所述第三请求消息的ack与所述第一响应消息中有效数据的长度的差值;
所述更新后的第三响应消息的seq为所述第三响应消息的seq与所述第一响应消息中有效数据的长度之和,所述更新后的第三响应消息的ack为所述第三响应消息的ack与所述第一请求消息中有效数据的长度之和。
6.根据权利要求1或2所述的方法,其特征在于,所述中间设备接收所述目标电子设备发送的第一请求消息之前,所述方法还包括:
所述中间设备接收第四请求消息,所述第四请求消息用于指示所述中间设备存储第三数据,所述第三数据为所述第二电子设备上的部分数据,所述第三数据包括所述第二数据;
所述中间设备根据所述第四请求消息缓存所述第三数据。
7.根据权利要求1-6任意一项所述的方法,其特征在于,所述中间设备根据所述第一请求消息确定缓存于所述中间设备中的第二数据,包括:
所述中间设备解析所述第一请求消息,以得到所述第一请求消息的类型和所述第一请求消息中的目标字段,其中,所述第一请求消息用于请求访问与目标数据相关的所述第一数据,所述第一请求消息的类型用于指示所述第一数据的类型,所述目标字段用于指示所述目标数据的标识;
所述中间设备根据所述第一请求消息的类型和所述目标字段的内容,查找映射表,得到所述第二数据,所述映射表用于记录消息类型和数据标识与数据之间的映射关系。
8.根据权利要求7所述的方法,其特征在于,与所述目标数据相关的所述第一数据包括所述目标数据的内容、所述目标数据的属性信息以及所述目标数据的权限信息中的一种或多种。
9.根据权利要求1-8任意一项所述的方法,其特征在于,所述方法还包括:
所述中间设备接收所述目标电子设备发送的第五请求消息,所述第五请求消息用于请求更新所述第一数据;
所述中间设备根据所述第五请求消息更新所述第二数据,并向所述第二电子设备发送所述第五请求消息。
10.根据权利要求1-9任意一项所述的方法,其特征在于,所述方法还包括:
所述中间设备接收第六请求消息,其中,所述第六请求消息用于请求访问所述第二电子设备上的数据,所述第六请求消息的类型为目标类型,且不同类型的请求消息用于请求访问不同类型的数据;
响应于所述中间设备不支持处理属于所述目标类型的消息,所述中间设备向所述第二电子设备转发所述第六请求消息。
11.根据权利要求1-10任意一项所述的方法,其特征在于,所述中间设备中部署有网络处理器NP、可编程芯片、现场可编程逻辑门阵列FPGA以及数据处理器DPU中的一个或多个。
12.一种数据访问装置,其特征在于,所述装置应用于NFS架构中的中间设备,所述NFS架构包括多个第一电子设备、所述中间设备和第二电子设备,所述装置包括:
接收模块,用于接收目标电子设备发送的第一请求消息,所述第一请求消息用于请求访问所述第二电子设备上的第一数据,所述目标电子设备为所述多个第一电子设备中的任意一个电子设备;
处理模块,用于根据所述第一请求消息确定缓存于所述中间设备中的第二数据,其中所述第二数据与所述第一数据相同,所述中间设备上缓存有所述第二电子设备上的部分数据;
发送模块,用于向所述目标电子设备发送第一响应消息,所述第一响应消息包括所述第二数据。
13.根据权利要求12所述的装置,其特征在于,
所述接收模块,还用于接收所述目标电子设备发送的第二请求消息,所述第二请求消息用于请求访问所述第二电子设备上的所述第一数据;
所述发送模块,还用于响应于所述中间设备中不存在所述第二请求消息所请求访问的数据,向所述第二电子设备转发所述第二请求消息;
所述接收模块,还用于接收所述第二电子设备发送的第二响应消息,所述第二响应消息包括所述第一数据;
所述发送模块,还用于向所述目标电子设备转发所述第二响应消息。
14.根据权利要求13所述的装置,其特征在于,
所述处理模块,还用于缓存所述第二响应消息中所携带的数据,以得到所述第二数据。
15.根据权利要求12-14任意一项所述的装置,其特征在于,
所述接收模块,还用于接收所述目标电子设备发送的第三请求消息,所述第三请求消息用于请求访问所述第二电子设备上的数据,所述第三请求消息为传输控制协议TCP消息;
所述处理模块,还用于响应于所述中间设备中不存在所述第三请求消息所请求访问的数据,根据所述第一请求消息和所述第一响应消息更新所述第三请求消息中的序列号seq和确认号ack,得到更新后的第三请求消息,并向所述第二电子设备转发所述更新后的第三请求消息;
所述接收模块,还用于接收所述第二电子设备发送的第三响应消息,所述第三响应消息包括所述第三请求消息所请求访问的数据;
所述处理模块,还用于根据所述第一请求消息和所述第一响应消息更新所述第三响应消息中的seq和ack,得到更新后的第三响应消息,并向所述目标电子设备发送所述更新后的第三响应消息。
16.根据权利要求15所述的装置,其特征在于,所述更新后的第三请求消息的seq为所述第三请求消息的seq与所述第一请求消息中有效数据的长度的差值,所述更新后的第三请求消息的ack为所述第三请求消息的ack与所述第一响应消息中有效数据的长度的差值;
所述更新后的第三响应消息的seq为所述第三响应消息的seq与所述第一响应消息中有效数据的长度之和,所述更新后的第三响应消息的ack为所述第三响应消息的ack与所述第一请求消息中有效数据的长度之和。
17.根据权利要求12或13所述的装置,其特征在于,
所述接收模块,还用于接收第四请求消息,所述第四请求消息用于指示所述中间设备存储第三数据,所述第三数据为所述第二电子设备上的部分数据,所述第三数据包括所述第二数据;
所述处理模块,还用于根据所述第四请求消息缓存所述第三数据。
18.根据权利要求12-17任意一项所述的装置,其特征在于,
所述处理模块,还用于解析所述第一请求消息,以得到所述第一请求消息的类型和所述第一请求消息中的目标字段,其中,所述第一请求消息用于请求访问与目标数据相关的所述第一数据,所述第一请求消息的类型用于指示所述第一数据的类型,所述目标字段用于指示所述目标数据的标识;
所述处理模块,还用于根据所述第一请求消息的类型和所述目标字段的内容,查找映射表,得到所述第二数据,所述映射表用于记录消息类型和数据标识与数据之间的映射关系。
19.根据权利要求18所述的装置,其特征在于,与所述目标数据相关的所述第一数据包括所述目标数据的内容、所述目标数据的属性信息以及所述目标数据的权限信息中的一种或多种。
20.根据权利要求12-19任意一项所述的装置,其特征在于,
所述接收模块,还用于接收所述目标电子设备发送的第五请求消息,所述第五请求消息用于请求更新所述第一数据;
所述处理模块,还用于根据所述第五请求消息更新所述第二数据,并向所述第二电子设备发送所述第五请求消息。
21.根据权利要求12-20任意一项所述的装置,其特征在于,
所述接收模块,还用于接收第六请求消息,其中,所述第六请求消息用于请求访问所述第二电子设备上的数据,所述第六请求消息的类型为目标类型,且不同类型的请求消息用于请求访问不同类型的数据;
所述发送模块,还用于响应于所述中间设备不支持处理属于所述目标类型的消息,向所述第二电子设备转发所述第六请求消息。
22.根据权利要求12-21任意一项所述的装置,其特征在于,所述中间设备中部署有NP、可编程芯片、FPGA以及DPU中的一个或多个。
23.一种数据访问装置,其特征在于,包括存储器和处理器;所述存储器存储有数据,所述处理器用于基于所述存储器中的数据执行如权利要求1至11所述的方法。
24.根据权利要求23所述的装置,其特征在于,所述处理器包括NP、可编程芯片、FPGA以及DPU中的一个或多个。
25.一种NFS系统,其特征在于,包括:多个第一电子设备、中间设备和第二电子设备,其中所述中间设备上部署有如权利要求12至22任意一项所述的数据访问装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210310924.6A CN116866429A (zh) | 2022-03-28 | 2022-03-28 | 一种数据访问方法及相关装置 |
PCT/CN2023/081370 WO2023185454A1 (zh) | 2022-03-28 | 2023-03-14 | 一种数据访问方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210310924.6A CN116866429A (zh) | 2022-03-28 | 2022-03-28 | 一种数据访问方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116866429A true CN116866429A (zh) | 2023-10-10 |
Family
ID=88199075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210310924.6A Pending CN116866429A (zh) | 2022-03-28 | 2022-03-28 | 一种数据访问方法及相关装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116866429A (zh) |
WO (1) | WO2023185454A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117155940A (zh) * | 2023-10-31 | 2023-12-01 | 上海时链节能科技有限公司 | 适用于中央空调系统负荷调峰场景的控制通信方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6718372B1 (en) * | 2000-01-07 | 2004-04-06 | Emc Corporation | Methods and apparatus for providing access by a first computing system to data stored in a shared storage device managed by a second computing system |
US8078695B2 (en) * | 2008-07-16 | 2011-12-13 | Sony Corporation | Media on demand using an intermediary device to output media from a remote computing device |
CN106856494A (zh) * | 2015-12-08 | 2017-06-16 | 中兴通讯股份有限公司 | 基于因特网内容适配协议的数据处理方法、装置和系统 |
CN109189748A (zh) * | 2018-08-20 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种缓存一致性处理方法及nfs服务器 |
CN111143417A (zh) * | 2019-12-27 | 2020-05-12 | 广东浪潮大数据研究有限公司 | 数据处理方法、装置、系统及Nginx服务器和介质 |
CN113032356B (zh) * | 2021-03-31 | 2023-05-26 | 中电科航空电子有限公司 | 一种客舱分布式文件存储系统及实现方法 |
-
2022
- 2022-03-28 CN CN202210310924.6A patent/CN116866429A/zh active Pending
-
2023
- 2023-03-14 WO PCT/CN2023/081370 patent/WO2023185454A1/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117155940A (zh) * | 2023-10-31 | 2023-12-01 | 上海时链节能科技有限公司 | 适用于中央空调系统负荷调峰场景的控制通信方法及装置 |
CN117155940B (zh) * | 2023-10-31 | 2024-01-30 | 上海时链节能科技有限公司 | 适用于中央空调系统负荷调峰场景的控制通信方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2023185454A1 (zh) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7254617B2 (en) | Distributed cache between servers of a network | |
CN108268208B (zh) | 一种基于rdma的分布式内存文件系统 | |
US7222150B1 (en) | Network server card and method for handling requests received via a network interface | |
US6895429B2 (en) | Technique for enabling multiple virtual filers on a single filer to participate in multiple address spaces with overlapping network addresses | |
US7089289B1 (en) | Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices | |
US8463850B1 (en) | System and method of algorithmically generating a server side transaction identifier | |
US6799200B1 (en) | Mechanisms for efficient message passing with copy avoidance in a distributed system | |
US7587422B2 (en) | Transparent file replication using namespace replication | |
US7685255B2 (en) | System and method for prefetching uncacheable embedded objects | |
US7831641B2 (en) | Large file support for a network file server | |
US8510415B2 (en) | Data distribution method, data distribution system and relevant devices in edge network | |
JP3512910B2 (ja) | 分散計算機システムにおける記憶空間管理方法、計算機及びデータ転送方法 | |
US20070088669A1 (en) | Method and apparatus for accessing information based on distributed file system (DFS) paths | |
JP2004070860A (ja) | ストリームコンテンツ配送システムおよびプロキシサーバ | |
JP2001526814A (ja) | 分散型キャッシュ、プリフェッチ、複写の方法およびそのシステム | |
JP6601784B2 (ja) | 情報指向ネットワークにおいてコンテキスト認識型コンテンツ要求をサポートするための方法、ネットワークコンポーネント、およびプログラム | |
US20060123121A1 (en) | System and method for service session management | |
CN108540510B (zh) | 一种云主机创建方法、装置及云服务系统 | |
WO2010025653A1 (zh) | 搜索信息的方法、系统、装置及垂直搜索引擎注册的方法 | |
WO2015006970A1 (zh) | 交换设备、控制器、交换设备配置、报文处理方法及系统 | |
WO2023185454A1 (zh) | 一种数据访问方法及相关装置 | |
CN109309711B (zh) | 一种虚拟缓存共享方法和系统 | |
WO2010031297A1 (zh) | 一种wap网关提取业务的实现方法和系统 | |
EP2257000B1 (en) | Copy routing tables | |
CN115242882A (zh) | 一种基于传输层路由访问k8s容器环境的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |