CN115639947A - 数据写入方法、数据读取方法、装置、设备、系统及介质 - Google Patents

数据写入方法、数据读取方法、装置、设备、系统及介质 Download PDF

Info

Publication number
CN115639947A
CN115639947A CN202110814096.5A CN202110814096A CN115639947A CN 115639947 A CN115639947 A CN 115639947A CN 202110814096 A CN202110814096 A CN 202110814096A CN 115639947 A CN115639947 A CN 115639947A
Authority
CN
China
Prior art keywords
data blocks
target data
data
network controller
original 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
Application number
CN202110814096.5A
Other languages
English (en)
Inventor
舒继武
陆游游
高健
谈晓东
崔文林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Huawei Technologies Co Ltd
Original Assignee
Tsinghua University
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University, Huawei Technologies Co Ltd filed Critical Tsinghua University
Priority to CN202110814096.5A priority Critical patent/CN115639947A/zh
Priority to EP22844843.7A priority patent/EP4357901A1/en
Priority to PCT/CN2022/078066 priority patent/WO2023000670A1/zh
Publication of CN115639947A publication Critical patent/CN115639947A/zh
Priority to US18/415,352 priority patent/US20240152290A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed 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)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了数据写入方法、数据读取方法、装置、设备、系统及介质,由网络控制器对原始数据进行纠删码编码,并将得到的多个目标数据块中第三数量的目标数据块写入存储节点,由网络控制器从存储节点中读取第三数量的目标数据块中第一数量个目标数据块,并对读取的目标数据块进行解码,其中,多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,目标数据块的两端包含相同的版本信息,第三数量大于第一数量。本申请能够将原本属于中央处理器的计算开销卸载到网络控制器上,减少中央处理器消耗,提升数据处理的效率,通过目标数据块两端包含的版本信息,来保证数据的有效性。

Description

数据写入方法、数据读取方法、装置、设备、系统及介质
技术领域
本申请涉及数据处理技术领域,特别涉及数据写入方法、数据读取方法、装置、设备、系统及介质。
背景技术
文件是数据处理的最基本单元之一。在大数据时代,日益增长的互联网规模带来了日益增长的文件存储需求,在这种情况下,单机文件系统无法应对巨量的文件存储需求,因此诞生了运行在多个存储节点构成的集群上的分布式文件系统。
相关技术中,分布式文件系统经常使用纠删码技术来存储数据。通常情况下,在数据写入时,由客户端的中央处理器(central processing unit,CPU)对原始数据进行纠删码编码,得到原始数据块和校验数据块,并将得到的原始数据块和校验数据块写入存储节点中;在数据读取时,由客户端的CPU从存储节点中读取原始数据块和校验数据块,并对读取的原始数据块和校验数据块进行纠删码解码,得到原始数据。由于客户端是使用CPU进行纠删码编码和纠删码解码,会增加CPU的开销,使得客户端的CPU成为分布式文件系统的系统瓶颈,影响数据处理的效率。
发明内容
本申请提出一种数据写入方法、数据读取方法、装置、设备、系统及介质,用于减少中央处理器消耗,提升数据处理的效率。
第一方面,提供了一种数据写入方法,该方法包括:第一客户端的网络控制器获取待写入的原始数据;所述网络控制器对所述原始数据进行纠删码编码,得到多个目标数据块;所述网络控制器将所述多个目标数据块中第三数量的目标数据块写入存储节点,所述多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,所述目标数据块的两端包含相同的版本信息,所述第三数量大于所述第一数量。
该技术方案提供的数据写入方法,通过网络控制器对原始数据进行纠删码编码,并将得到的多个目标数据块中第三数量的目标数据块写入存储节点实现了将原本属于CPU的计算开销卸载到网络控制器上,减少CPU消耗,提升数据处理的效率,且目标数据块的两端包含相同的版本信息,保证了数据的有效性。
在一种可能的实现方式中,所述方法还包括:所述网络控制器将第一数据块成功写入所述存储节点时生成写入成功指令,所述写入成功指令用于所述第一客户端的中央处理器确定所述第一数据块的写入结果,所述第一数据块为所述多个目标数据块中的任意一个目标数据块。通过写入成功指令告知CPU第一数据块的写入结果,以确保第一数据块成功写入存储节点。
在一种可能的实现方式中,所述网络控制器对所述原始数据进行纠删码编码,得到多个目标数据块,包括:所述网络控制器根据所述原始数据和所述原始数据对应的版本信息,得到所述第一数量的原始数据块,所述原始数据块的两端分别包含所述原始数据对应的版本信息;所述网络控制器对所述原始数据进行纠删码编码,得到校验数据;所述网络控制器根据所述校验数据和所述校验数据对应的版本信息,得到所述第二数量的校验数据块,所述校验数据块的两端分别包含所述校验数据对应的版本信息。由于原始数据块的两端包含原始数据对应的版本信息,校验数据块的两端包含校验数据对应的版本信息,保证了数据块的两端包含相同的版本信息,从而保证了数据的有效性。
在一种可能的实现方式中,所述第一客户端持有写锁权限,所述写锁权限是向所述存储节点写入目标数据块的权限,所述第一客户端的网络控制器获取待写入的原始数据,包括:所述网络控制器获取其他客户端发送的待写入的原始数据,所述其他客户端是未持有所述写锁权限的客户端。由持有写锁权限的客户端的网络控制器获取未持有写锁权限的客户端中的原始数据,以便于网络控制器将该原始数据写入存储节点,降低写锁权限的转移频率,提高数据写入效率。
在一种可能的实现方式中,所述网络控制器对所述原始数据进行纠删码编码,得到多个目标数据块,包括:所述网络控制器接收所述第一客户端的中央处理器发送的针对所述原始数据的编码指令;所述网络控制器响应于所述编码指令,对所述原始数据进行纠删码编码,得到多个目标数据块。
第二方面,提供了一种数据读取方法,所述方法包括:第二客户端的网络控制器从存储节点中读取第一数量个目标数据块,所述存储节点中存储了多个目标数据块中第三数量的目标数据块,所述多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,所述目标数据块的两端包含相同的版本信息,所述第三数量大于所述第一数量;所述网络控制器对所述第一数量个目标数据块进行纠删码解码,得到原始数据。
该技术方案提供的数据读取方法,通过网络控制器读取第三数量的目标数据块中第一数量个目标数据块,并对读取的目标数据块进行解码,实现了将原本属于CPU的计算开销卸载到网络控制器上,减少CPU消耗,提升数据处理的效率,且目标数据块的两端包含相同的版本信息,保证了数据的有效性。
在一种可能的实现方式中,所述第二客户端的网络控制器从存储节点中读取第一数量个目标数据块,包括:所述网络控制器向所述存储节点发送针对所述第三数量的目标数据块中第四数量个目标数据块的读取指令,所述第四数量大于所述第一数量,且所述第四数量小于或者等于所述第三数量;所述网络控制器接收所述第四数量个目标数据块中前第一数量的目标数据块。通过向存储节点发送大于第一数量的目标数据块的读取指令,接收前第一数量的目标数据块的方式,降低读取数据所需的时间,提高数据读取效率。
在一种可能的实现方式中,所述第二客户端的网络控制器从存储节点中读取第一数量个目标数据块,包括:响应于所述第二客户端的缓存区域中存储有第二数据块的版本信息,所述网络控制器从所述缓存区域中读取所述第二数据块,所述缓存区域中存储有所述网络控制器从所述存储节点中历史读取的目标数据块,所述第二数据块为所述第一数量个目标数据块中的任意一个目标数据块;响应于所述缓存区域中未存储有所述第二数据块的版本信息,所述网络控制器从所述存储节点中读取所述第二数据块。由于网络控制器从缓存区域中读取数据块所需的时间小于从存储节点中读取数据块所需的时间,因此,通过优先从缓存区域中读取第二数据块的方式,降低了热数据的读延迟,提高数据读取效率。
在一种可能的实现方式中,所述方法还包括:所述网络控制器将所述原始数据和所述第一数量个目标数据块存储至所述缓存区域中。通过将原始数据和目标数据块存储在缓存区域的方式,便于网络存储器后续读取目标数据块时,优先从缓存区域中读取,提高数据读取效率。
在一种可能的实现方式中,所述网络控制器对所述第一数量个目标数据块进行纠删码解码,得到原始数据,包括:所述网络控制器获取所述第二客户端的中央处理器发送的基于解码信息的解码指令;所述网络控制器响应于所述解码指令,基于所述解码信息对所述第一数量个目标数据块进行纠删码解码,得到原始数据。
第三方面,提供了一种数据写入装置,所述数据写入装置应用于网络控制器,所述装置包括:获取模块,用于获取待写入的原始数据;编码模块,用于对所述原始数据进行纠删码编码,得到多个目标数据块;写入模块,用于将所述多个目标数据块中第三数量的目标数据块写入存储节点,所述多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,所述目标数据块的两端包含相同的版本信息,所述第三数量大于所述第一数量。
在一种可能的实现方式中,所述装置还包括:生成模块,用于将第一数据块成功写入所述存储节点时生成写入成功指令,所述写入成功指令用于第一客户端的中央处理器确定所述第一数据块的写入结果,所述第一数据块为所述多个目标数据块中的任意一个目标数据块。
在一种可能的实现方式中,所述编码模块,用于根据所述原始数据和所述原始数据对应的版本信息,得到所述第一数量的原始数据块,所述原始数据块的两端分别包含所述原始数据对应的版本信息;对所述原始数据进行纠删码编码,得到校验数据;根据所述校验数据和所述校验数据对应的版本信息,得到所述第二数量的校验数据块,所述校验数据块的两端分别包含所述校验数据对应的版本信息。
在一种可能的实现方式中,所述第一客户端持有写锁权限,所述写锁权限是向所述存储节点写入目标数据块的权限,所述获取模块,用于获取其他客户端发送的待写入的原始数据,所述其他客户端是未持有所述写锁权限的客户端。
在一种可能的实现方式中,所述编码模块,用于接收所述第一客户端的中央处理器发送的针对所述原始数据的编码指令;响应于所述编码指令,对所述原始数据进行纠删码编码,得到多个目标数据块。
第四方面,提供了一种数据读取装置,所述数据读取装置应用于网络控制器,所述装置包括:读取模块,用于从存储节点中读取第一数量个目标数据块,所述存储节点中存储了多个目标数据块中第三数量的目标数据块,所述多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,所述目标数据块的两端包含相同的版本信息,所述第三数量大于所述第一数量;解码模块,用于对所述第一数量个目标数据块进行纠删码解码,得到原始数据。
在一种可能的实现方式中,所述读取模块,用于向所述存储节点发送针对所述第三数量的目标数据块中第四数量个目标数据块的读取指令,所述第四数量大于所述第一数量,且所述第四数量小于或者等于所述第三数量;接收所述第四数量个目标数据块中前第一数量的目标数据块。
在一种可能的实现方式中,所述读取模块,用于响应于第二客户端的缓存区域中存储有第二数据块的版本信息,从所述缓存区域中读取所述第二数据块,所述缓存区域中存储有所述网络控制器从所述存储节点中历史读取的目标数据块,所述第二数据块为所述第一数量个目标数据块中的任意一个目标数据块;响应于所述缓存区域中未存储有所述第二数据块的版本信息,从所述存储节点中读取所述第二数据块。
在一种可能的实现方式中,所述装置还包括:存储模块,用于将所述原始数据和所述第一数量个目标数据块存储至所述缓存区域中。
在一种可能的实现方式中,所述解码模块,用于获取所述第二客户端的中央处理器发送的基于解码信息的解码指令;响应于所述解码指令,基于所述解码信息对所述第一数量个目标数据块进行纠删码解码,得到原始数据。
第五方面,提供了一种网络设备,包括处理器,所述处理器与存储器耦合,所述存储器中存储有至少一条程序指令或代码,所述至少一条程序指令或代码由所述处理器加载并执行,以使所述网络设备实现第一方面中任一所述的数据写入方法或第二方面中任一所述的数据读取方法。
第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时,实现如第一方面中任一所述的数据写入方法或第二方面中任一所述的数据读取方法。
第七方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被计算机执行时,实现如第一方面中任一所述的数据写入方法或第二方面中任一所述的数据读取方法。
第八方面,提供了一种通信装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当该处理器执行该存储器存储的指令时,使得该处理器执行第一方面中任一所述的数据写入方法或第二方面中任一所述的数据读取方法。
作为一种示例性实施例,处理器为一个或多个,存储器为一个或多个。
作为一种示例性实施例,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。
在可选实现过程中,存储器可以为只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
第九方面,提供了一种芯片,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行上述第一方面中任一所述的数据写入方法或第二方面中任一所述的数据读取方法。
第十方面,提供了另一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行上述第一方面中任一所述的数据写入方法或第二方面中任一所述的数据读取方法。
第十一方面,提供了一种数据处理系统,所述系统包括网络控制器,所述网络控制器用于执行上述第一方面中任一所述的数据写入方法或第二方面中任一所述的数据读取方法。
附图说明
图1是本申请实施例提供的一种数据处理方法的实施环境示意图;
图2是本申请实施例提供的一种数据写入方法的流程图;
图3是本申请实施例提供的一种数据读取方法的流程图;
图4是本申请实施例提供的一种分布式存储系统的架构图;
图5是本申请实施例提供的另一种分布式存储系统的架构图;
图6是本申请实施例提供的一种数据传输的示意图;
图7是本申请实施例提供的一种数据写入装置的结构示意图;
图8是本申请实施例提供的一种数据读取装置的结构示意图;
图9是本申请实施例提供的一种RDMA的架构示意图;
图10是本申请实施例提供的一种队列对的示意图;
图11是本申请实施例提供的一种网络设备的结构示意图;
图12是本申请实施例提供的一种网络设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
分布式文件系统(distributed file system,DFS)能够将大量数据分散到不同的存储节点上存储,减小了数据丢失的风险,在DFS中,经常使用纠删码技术对数据进行处理。本申请实施例通过网络控制器对原始数据进行纠删码编码,将得到的多个目标数据块中第三数量的目标数据块写入存储节点,或者通过网络控制器读取第三数量的目标数据块中第一数量个目标数据块,并对读取的目标数据块进行解码。本申请实施例实现了将原本属于CPU的计算开销卸载到网络控制器上,减少CPU消耗,提升数据处理的效率,且目标数据块的两端包含相同的版本信息,保证了数据的有效性。
如图1所示,图1是本申请实施例提供的一种数据处理方法的实施环境示意。该实施环境包括客户端101和存储节点102,该数据处理方法包括数据写入方法和数据读取方法。
客户端101的数量为多个,如图1中仅示出了两个客户端101。客户端101包括但不限于台式电脑、笔记本电脑、平板电脑等。客户端101配置有网络控制器,客户端101通过原语控制网络控制器对原始数据进行纠删码编码,得到多个目标数据块(在本申请实施例以及下述实施例中,这多个目标数据块可以统称为纠删码条带),并将多个目标数据块中的部分目标数据块或者全部目标数据块写入存储节点102,客户端101还通过原语控制网络控制器从存储节点102中读取部分目标数据块或者全部目标数据块,对读取的目标数据块进行纠删码解码,得到原始数据。
其中,网络控制器也称为网卡,是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,通常情况下,网络控制器上面装有处理器和存储器。处理器用于处理数据,存储器用于存储数据。本申请实施例不对网络控制器做限定。
在一种可能的实现方式中,网络控制器为远程直接内存访问网络控制器(remotedirect memory access network interface controller,RNIC)。RNIC简称为远程直接内存访问(remote direct memory access,RDMA)网卡,RNIC是一种支持无限带宽(infiniband)技术和RDMA原语的网络控制器,是RDMA的物理硬件基础,部分RNIC还能够用于近数据计算,提升分布式系统性能。
其中,RDMA是一种通过网络远程访问另一台计算机内存,而无需任何一端的操作系统参与的技术,是直接内存访问技术中的一种。RDMA有多种不同实现,其中一种实现是基于infiniband互联技术,能够提供极高的RDMA带宽和极低的访存延迟。
需要说明的是,存储节点102可以是一个存储节点,也可以是由至少两个存储节点构成的存储节点集群,一个存储节点对应至少一个存储器。
在一种可能的实现方式中,存储器为非易失性随机存取存储器(non-volatilerandom access memory,NVRAM),简称为非易失内存或持久内存(persistent mainmemory,PMM),是一类支持随机存取,且能在断电后仍然不丢失其中数据的存储器。本申请实施例中以及其他实施例中,存储器为NVRAM的存储节点集群又称为NVRAM集群。
基于图1所示的实施环境,本申请实施例提供了一种数据写入方法。请参考图2,其示出了本申请实施例提供的一种数据写入方法的流程图,该方法由第一客户端中的网络控制器执行,第一客户端为图1所示的一个客户端101,该方法包括步骤201至步骤203。
步骤201,第一客户端的网络控制器获取待写入的原始数据。
第一客户端将自身生成的数据或者从其他客户端接收到的数据作为待写入的原始数据,并将该原始数据发送给网络控制器,以使网络控制器对该原始数据进行纠删码编码。
在一种可能的实现方式中,第一客户端持有写锁权限,写锁权限是向存储节点写入目标数据块的权限,第一客户端的网络控制器获取待写入的原始数据,包括:网络控制器获取其他客户端发送的待写入的原始数据,其他客户端是未持有写锁权限的客户端。
本申请实施例中,当未持有写锁权限的客户端需要将原始数据写入存储节点时,未持有写锁权限的客户端需要将原始数据发送给持有写锁权限的客户端,由持有写锁权限的客户端的网络控制器将原始数据写入存储节点,降低写锁权限转移的频率,提高数据写入效率。
步骤202,网络控制器对原始数据进行纠删码编码,得到多个目标数据块。
网络控制器对原始数据进行纠删码编码时,可以采用里德-所罗门编码(reed-solomon code,RS Code)技术对原始数据进行纠删码编码。RS编码技术是一种常用的纠删码编码技术,使用单位阵和柯西矩阵的复合矩阵作为编码矩阵,能够以正比于矩阵元素数目的时间求编码矩阵子矩阵的逆矩阵。
采用RS编码技术对原始数据进行纠删码编码时,得到的多个目标数据块中包括第一数量的原始数据块和第二数量的校验数据块。若第一数量记作k,第二数量记作m,则纠删码编码策略可记为RS(k,m)策略,即采用RS(k,m)策略对原始数据进行纠删码编码,得到k个原始数据块和m个校验数据块,其中,k、m均为正整数。
本申请实施例中,网络控制器对原始数据进行纠删码编码,得到多个目标数据块,包括:网络控制器接收第一客户端的中央处理器发送的针对原始数据的编码指令;网络控制器响应于编码指令,对原始数据进行纠删码编码,得到多个目标数据块。
当需要对原始数据进行纠删码编码时,CPU向网络控制器发送针对该原始数据的纠删码编码指令,网络控制器响应于该纠删码编码指令,采用RS(k,m)策略对原始数据进行纠删码编码,得到多个目标数据块。
其中,网络控制器对原始数据进行纠删码编码,得到多个目标数据块,包括:网络控制器根据原始数据和原始数据对应的版本信息,得到第一数量的原始数据块,原始数据块的两端分别包含原始数据对应的版本信息;网络控制器对原始数据进行纠删码编码,得到校验数据;网络控制器根据校验数据和校验数据对应的版本信息,得到第二数量的校验数据块,校验数据块的两端分别包含校验数据对应的版本信息。
网络控制器采用RS(k,m)策略对原始数据进行纠删码编码时,先对原始数据进行切分,得到k个切分后的原始数据。一方面,对于每一个切分后的原始数据,根据该切分后的原始数据和该切分后的原始数据所对应的版本信息,得到该切分后的原始数据对应的原始数据块;另一方面,采用RS(k,m)编码矩阵对k个切分后的原始数据进行纠删码编码,得到m个校验数据,对于每一个校验数据,根据该校验数据和该校验数据所对应的版本信息,得到该校验数据对应的校验数据块。
其中,RS(k,m)编码矩阵是由第一客户端的CPU根据RS Code的编码规则生成,并由CPU将RS(k,m)编码矩阵存储在网络控制器中。当网络控制器为RNIC时,CPU通过RDMA原语将RS(k,m)编码矩阵存储在RNIC中。
版本信息由第一客户端的CPU生成。可选的,对于每一个数据(切分后的原始数据或者校验数据),CPU准备一块两端带有版本信息的内存,将该数据所使用的区域设为该内存的中间区域(即两端版本信息中间的区域),将写入存储节点时的区域设为整个内存区域。CPU将纠删码编码请求发送至网络控制器,由网络控制器对原始数据就行纠删码编码,并将编码得到的数据(切分后的原始数据或者校验数据)写入带有该数据对应的版本信息的内存的中间区域,得到该数据对应的目标数据块(原始数据块或者校验数据块)。
步骤203,网络控制器将多个目标数据块中第三数量的目标数据块写入存储节点,多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,目标数据块的两端包含相同的版本信息,第三数量大于第一数量。
CPU向网络控制器发送写入请求,网络控制器响应于该写入请求,将第三数量的目标数据块写入存储节点。其中,网络控制器可以将第三数量的目标数据块写入同一个存储节点,也可以将第三数量的目标数据块分别写入不同的存储节点,还可以将第三数量的目标数据块中的部分目标数据块写入同一个存储节点,另一部分目标数据块写入不同的存储节点。
本申请实施例中,网络控制器只需要将多个目标数据块中第三数量的目标数据块写入存储节点,即视为数据写入操作成功。例如,采用RS(2,2)策略对原始数据进行纠删码编码,得到的纠删码条带中包含4个目标数据块,分别为2个原始数据块和2个校验数据块,只需要将这四个目标数据块中的三个或者四个写入存储节点,即视为写入操作成功。
需要说明的是,本申请实施例中的第三数量大于第一数量,包括第三数量等于第一数量和第二数量之和,此时,网络控制器将纠删码编码得到的全部目标数据块写入存储节点。示例性的,采用RS(2,2)策略对原始数据进行纠删码编码,将得到的2个原始数据块和2个校验数据块全部写入存储节点。
在一种可能的实现方式中,部分存储节点存在较大的尾延迟。例如,以存储节点为NVRAM为例,NVRAM自身内部会进行介质磨损控制,导致NVRAM的写延迟偶尔上升约100倍,致使尾延迟较大。通过将第三数量的目标数据块写入存储节点,可以降低存储节点的尾延迟,提升数据写入效率。
其中,该数据写入方法还包括:网络控制器将第一数据块成功写入存储节点时生成写入成功指令,写入成功指令用于第一客户端的中央处理器确定第一数据块的写入结果,第一数据块为多个目标数据块中的任意一个目标数据块。该步骤在步骤203之后执行。
本申请实施例中,通过CPU轮询网络控制器的方式降低写延迟。可选的,网络控制器每将一个目标数据块(即第一数据块)写入存储节点时,网络控制器或者存储节点会生成该目标数据块对应的写入成功指令,CPU每隔目标时长获取写入成功指令,以获取该目标数据块的写入结果。当CPU获取的写入成功指令的数量等于或者大于第三数量时,CPU停止轮询操作,即CPU不再每隔目标时长获取写入成功指令,此时即视为写入操作成功。
其中,目标时长的可选数值不做限定,示例性的,目标时长是纳秒级、微秒级或者毫秒级的时长数据。
在一种可能的实现方式中,当网络控制器将纠删码编码得到的多个目标数据块写入存储节点时,网络控制器向CPU发送写入操作完成消息。当CPU接收到该写入操作完成消息时,说明网络控制器将所有的目标数据块成功写入存储节点。
该技术方案提供的数据写入方法,通过网络控制器对原始数据进行纠删码编码,并将得到的多个目标数据块中第三数量的目标数据块写入存储节点实现了将原本属于CPU的计算开销卸载到网络控制器上,减少CPU消耗,提升数据处理的效率,且目标数据块的两端包含相同的版本信息,保证了数据的有效性。
基于图1所示的实施环境,本申请实施例提供了一种数据读取方法。请参考图3,其示出了本申请实施例提供的一种数据读取方法的流程图。该方法由第二客户端中的网络控制器执行,第二客户端为图1所示的一个客户端101,该方法包括步骤301至步骤302。
步骤301,第二客户端的网络控制器从存储节点中读取第一数量个目标数据块,存储节点中存储了多个目标数据块中第三数量的目标数据块,多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,目标数据块的两端包含相同的版本信息,第三数量大于第一数量。
本申请实施例中,第二客户端与第一客户端为同一个客户端或者为不同的客户端。第二客户端配置有网络控制器,第二客户端通过原语控制网络控制器从存储节点中读取第一数量个目标数据块。其中,存储节点中存储了多个目标数据块中第三数量的目标数据块,相关说明可见前述有关数据写入方法的实施例,在此不再赘述。
其中,第二客户端的网络控制器从存储节点中读取第一数量个目标数据块,包括:网络控制器向存储节点发送针对第三数量的目标数据块中第四数量个目标数据块的读取指令,第四数量大于第一数量,且第四数量小于或者等于第三数量;网络控制器接收第四数量个目标数据块中前第一数量的目标数据块。
为了降低尾延迟,网络控制器向存储节点发送针对第三数量的目标数据块中第四数量个目标数据块的读取指令,同时网络控制器接收第二客户端的CPU发送的等待(wait)指令,该等待指令用于监听存储节点向网络控制器发送的目标数据块的数量。当网络控制器接收到第四数量个目标数据块中前第一数量的目标数据块时,等待指令监听到网络控制器接收到第一数量的目标数据块,向第二客户端的CPU发送关于网络控制器接收到第一数量的目标数据块的消息。
为了保证数据的有效性,网络控制器在接收到任意一个目标数据块时,先检测目标数据块两端的版本信息是否为相同。当目标数据块两端的版本信息相同时,说明目标数据块为有效数据块,此时,等待指令监听到网络控制器接收到一个目标数据块;当目标数据块两端的版本信息不同时,说明目标数据块为无效数据块,此时,网络控制器过滤掉无效数据块,等待指令监听到网络控制器未接收到目标数据块。
本申请实施例中,第二客户端的网络控制器从存储节点中读取第一数量个目标数据块,包括:响应于第二客户端的缓存区域中存储有第二数据块的版本信息,网络控制器从缓存区域中读取第二数据块,缓存区域中存储有网络控制器从存储节点中历史读取的目标数据块,第二数据块为第一数量个目标数据块中的任意一个目标数据块;响应于缓存区域中未存储有第二数据块的版本信息,网络控制器从存储节点中读取第二数据块。
网络控制器从存储节点中读取到目标数据块时,将目标数据块存入缓存区域中,通过这种方式,缓存区域中存储有网络控制器历史读取的目标数据块。当网络控制器需要读取第一数量个目标数据块时,对于第一数量个目标数据块中的任意一个目标数据块(即第二数据块),当缓存区域中存储有该目标数据块的版本信息时,网络控制器从缓存区域中读取该目标数据块;当缓存区域中未存储有该目标数据块的版本信息时,网络控制器从存储节点中读取该目标数据块。
通过优先从缓存区域中读取目标数据块,其次从存储节点中读取目标数据块的方式,降低了热数据的读延迟,保证了高效性。
步骤302,网络控制器对第一数量个目标数据块进行纠删码解码,得到原始数据。
第二客户端的CPU在接收到关于网络控制器接收到第一数量的目标数据块的消息时,CPU通过原语控制网络控制器对第一数量个目标数据块进行纠删码解码,得到原始数据。
其中,网络控制器对第一数量个目标数据块进行纠删码解码,得到原始数据,包括:网络控制器获取第二客户端的中央处理器发送的基于解码信息的解码指令;网络控制器响应于解码指令,基于解码信息对第一数量个目标数据块进行纠删码解码,得到原始数据。
第二客户端的CPU基于RS(k,m)策略生成编码矩阵,通过原语将编码矩阵存储在网络控制器中。对于编码矩阵中的每第一数量个子方阵,第二客户端的CPU计算该第一数量个子方阵的逆矩阵,将计算出的逆矩阵作为解码矩阵,也就是说,CPU基于编码矩阵得到多个解码矩阵。CPU使用原语将这多个解码矩阵存储在网络控制器中。
第二客户端的CPU接收到关于网络控制器接收到第一数量个目标数据块的消息时,基于第一数量个目标数据块,确定对应的解码矩阵,并向网络控制器发送基于该解码矩阵的解码指令,网络控制器响应于该解码指令,使用该解码矩阵对第一数量个目标数据块进行纠删码解码,得到原始数据。
在一种可能的实现方式中,该方法还包括:网络控制器将原始数据和第一数量个目标数据块存储至缓存区域中。该步骤在步骤302之后执行。
网络控制器将原始数据和第一数量个目标数据块存储至缓存区域中,便于后续读取目标数据块时,优先从缓存区域中读取。当需要读取的目标数据块均存储在缓存区域中时,直接从缓存区域中获取原始数据,提高数据读取和数据解码的效率,降低热数据的读延迟,提高数据读取的效率。
该技术方案提供的数据读取方法,通过网络控制器读取第三数量的目标数据块中第一数量个目标数据块,并对读取的目标数据块进行解码,实现了将原本属于CPU的计算开销卸载到网络控制器上,减少CPU消耗,提升数据处理的效率,且目标数据块的两端包含相同的版本信息,保证了数据的有效性。
在本申请实施例以及其他实施例中,可以将数据写入方法、数据读取方法统称为数据处理方法。本申请实施例中的数据处理方法可以基于分布式存储系统实现的。该分布式存储系统由存储节点集群和若干个客户端构成,客户端可向存储节点集群中写入数据或从存储节点集群中读取数据。其中,上文提及的存储节点为本申请实施例中的存储节点集群。
其中,存储节点集群持久化存储对原始数据进行纠删码编码后得到的多个目标数据块中第三数量的目标数据块;客户端包括主机(即CPU)和网络控制器,主机将与纠删码编码相关的计算任务卸载到网络控制器,并初始化存储于网络控制器上的编码矩阵、解码矩阵。
接下来,请参考图4,图4是本申请实施例提供的一种分布式存储系统的架构图。该分布式存储系统包括客户端1、存储节点集群和客户端2。其中,客户端1对应于上文提及的第一客户端,客户端2对应于上文提及的第二客户端。
本申请实施例以网络控制器为RNIC、存储节点集群为NVRAM集群、采用RS(2,2)策略对原始数据进行纠删码编码为例进行详细说明,即上文提及的RS(k,m)为RS(2,2)。
客户端1先按照RS Code的编码规则生成一个RS(2,2)编码矩阵,使用RDMA原语将该RS(2,2)编码矩阵缓存在网络控制器RNIC中,其中,图4中标号41所指示的信息为RS(2,2)编码矩阵。当客户端1需要将原始数据写入存储节点集群时,客户端1利用RDMA原语通知网络控制器RNIC基于包含原始数据和原始数据对应的版本(即前文提及的版本信息)的存储区域,对原始数据进行纠删码编码处理。
RNIC对原始数据进行纠删码编码处理时,RNIC先基于原始数据对应的版本确定原始数据对应的存储区域,从该存储区域中提取原始数据。一方面,将原始数据切分为两段数据,分别记为K1和K2。将K1写入RNIC的存储区域中,得到包含K1和K1对应的版本的存储区域(即K1的原始数据块),将K2写入RNIC的存储区域中,得到包含K2和K2对应的版本的存储区域(即K2的原始数据块)。另一方面,基于K1、K2、标号41所指示的RS(2,2)编码矩阵进行纠删码编码处理,得到校验数据,分别记为P1和P2。将P1写入RNIC的存储区域中,得到包含P1和P1对应的版本的存储区域(即P1的校验数据块),将P2写入RNIC的存储区域中,得到包含P2和P2对应的版本的存储区域(即P2的校验数据块)。
可以理解的是,K1、K2、P1、P2各自对应的存储区域中还可以包含其他信息,例如,存储区域中还可以包含使用客户端1的节点编号所加的写锁信息。在实际实现时,K1、K2、P1、P2各自对应的版本是版本号,且K1对应的版本号小于K2对应的版本号,K2对应的版本号小于P1对应的版本号,P1对应的版本号小于P2对应的版本号。RNIC仅对原始数据进行纠删码编码处理,不对原始数据对应的版本进行处理。
需要说明的是,图4中客户端1的RNIC中所示出的存储区域,仅示出了该存储区域包含数据(K1、K2、P1、P2)和该数据对应的版本。实际上,存储区域中包含位于头部的数据对应的版本、位于尾部的该数据对应的版本、以及位于两个版本之间的该数据。
RNIC得到K1、K2、P1、P2各自对应的存储区域后,利用RNIC从左到右的读写特性,先读写低地址再读写高地址,实现将RNIC的存储区域中的数据写入存储节点集群时,存储节点集群的存储区域两端包含相同的版本,分别记为位于头部的版本和位于尾部的版本。也就是说,RNIC将K1对应的存储区域所包含的K1对应的版本、K1写入存储节点集群时,存储节点集群中K1对应的存储区域中包括位于头部的K1对应的版本、位于尾部的K1对应的版本、以及两个版本之间的K1。基于同样的原理,存储节点集群中K2对应的存储区域中包括位于头部的K2对应的版本、位于尾部的K2对应的版本、以及两个版本之间的K2;存储节点集群中P1对应的存储区域中包括位于头部的P1对应的版本、位于尾部的P1对应的版本、以及两个版本之间的P1;存储节点集群中P2对应的存储区域中包括位于头部的P2对应的版本、位于尾部的P2对应的版本、以及两个版本之间的P2。
通过位于头部的版本和位于尾部的版本,保证位于两个版本之间的数据的有效性。当位于头部的版本和位于尾部的版本相同时,说明位于两个版本之间的数据的有效;当位于头部的版本和位于尾部的版本不同时,说明位于两个版本之间的数据的无效。
在一种可能的实现方式中,写锁信息占2字节(即16位写锁信息),版本占6字节(即48位版本号)。也就是说,RNIC的存储区域中包含8字节的区域,用于存储写锁信息和版本,存储节点集群中的存储区域包含位于头部的8字节的区域(用于存储写锁信息和版本)、以及位于尾部的8字节的区域(也用于存储写锁信息和版本),且位于头部的版本和位于尾部的版本相同。
由于客户端1的网络控制器可以将原始数据对应的纠删码条带写入存储节点集群,因此,客户端1持有写锁权限。其他客户端需要将某一原始数据写入存储节点集群时,需要其他客户端将该原始数据发送给客户端1,以使客户端1的网络控制器对该原始数据进行纠删码编码处理,并将得到的纠删码条带写入存储节点集群。
在客户端1的RNIC将纠删码条带写入存储节点集群时,客户端1的主机通过RDMA原语轮询写入成功指令的数量,该写入成功指令是RNIC将RNIC的存储区域写入存储节点集群成功时由RNIC生成的。也就是说,RNIC写入K1对应的存储区域时,生成K1对应的写入成功指令;RNIC写入K2对应的存储区域时,生成K2对应的写入成功指令;RNIC写入P1对应的存储区域时,生成P1对应的写入成功指令;RNIC写入P2对应的存储区域时,生成P2对应的写入成功指令。
当客户端1的主机轮询得到的写入成功指令的数量为3时,即表明原始数据对应的纠删码条带的写入操作成功,此时,客户端1可以继续轮询写入成功指令的数量,直至得到写入成功指令的数量为4时停止,或者,客户端1可以停止轮询写入成功指令的数量,由RNIC异步向主机发送写入完成指令,该写入完成指令是K1、K2、P1、P2各自对应的存储区域均写入存储节点集群时生成的。其中,K1、K2、P1、P2各自对应的存储区域分别写入存储节点集群的不同存储节点中。
客户端2先按照RS Code的编码规则生成一个RS(2,2)编码矩阵,使用RDMA原语将该RS(2,2)编码矩阵缓存在网络控制器RNIC中。客户端2枚举RS(2,2)编码矩阵中的每个2阶子方阵,对于每个2阶子方阵,计算该2阶子方阵的逆矩阵,得到一个解码矩阵,并将各个解码矩阵通过RDMA原语存储至客户端2的RNIC中,其中,图4中标号42所指示的信息为一个解码矩阵。
当客户端2试图从存储节点集群中读取目标数据块时,客户端2向存储节点集群发送针对3个目标数据块的RDMA读原语,同时,客户端2向RNIC提交一个wait原语,以使用wait原语监听成功返回的读原语的数目,其中的,读原语是在RNIC接收到目标数据块时生成的。当读原语的数目为2时,wait原语通知中央处理器CPU,CPU根据目标数据块的来源决定需使用的解码矩阵,再立即用RDMA原语通知RNIC利用该解码矩阵进行纠删码解码,将解码得到的原始数据写入缓存中。
如图4中,客户端2向3个不同的存储节点NVRAM发送RDMA读原语,以读取K1对应的存储区域、K2对应的存储区域、以及P1对应的存储区域。由于K2对应的存储节点存在延迟,因此,RNIC先接收到K1对应的存储区域和P1对应的存储区域,再接收到K2对应的存储区域。当RNIC先接收到K1对应的存储区域和P1对应的存储区域时,CPU根据K1对应的存储区域和P1对应的存储区域确定对应的解码矩阵,由RNIC根据该解码矩阵、K1对应的存储区域和P1对应的存储区域进行纠删码解码处理,得到原始数据,并将原始数据存入缓存中,其中,缓存中原始数据对应的存储区域中包括原始存储以及原始数据对应的版本。
由于存储节点集群中的存储区域中包括位于头部的版本、位于尾部的版本、以及两个版本之间的数据。因此,RNIC接收到K1对应的存储区域和P1对应的存储区域,且wait原语通知CPU后时,CPU先检查K1对应的存储区域中位于头部的K1对应的版本和位于尾部的K1对应的版本是否相同,若相同,则确定K1对应的存储区域为有效的目标数据块,若不相同,则确定K1对应的存储区域为无效的目标数据块,同理,CPU也要检查P1对应的存储区域中位于头部的P1对应的版本与位于尾部的P1对应的版本是否相同,从而确定P1对应的存储区域是否为有效的目标数据块。
当K1、P1对应的存储区域均为有效的目标数据块时,RNIC使用K1、P1对应的存储区域进行纠删码解码,得到原始数据;当K1、P1对应的存储区域中其中一个为有效的目标数据块时,则RNIC接收到K2对应的存储区域,且CPU确定K2对应的存储区域为有效的目标数据块时,RNIC使用K2对应的存储区域和K1、P1对应的存储区域中有效的目标数据块进行纠删码解码;当K1、P1对应的存储区域均为无效的目标数据块时,RNIC从存储节点集群中读取K2、P2对应的存储区域,且CPU确定K2、P2对应的存储区域均为有效的目标数据块时,RNIC使用K2对应的存储区域和P2对应的存储区域进行纠删码解码。
通过检查数据对应的存储区域中位于头部的版本和位于尾部的版本是否一致,从而确定数据是否有效,以使用有效的数据进行纠删码解码。由于版本的字节数较少,因此,该过程的数据传输开销很小。
本申请实施例中,客户端2的缓存中还存储有RNIC历史读取的数据的存储区域。以K1对应的存储区域为例,当客户端2要读取K1对应的存储区域时,RNIC先从缓存中查找是否存在K1的版本,若缓存中存在K1的版本,则RNIC从缓存中读取K1对应的存储区域;若缓存中不存在K1的版本,则RNIC从存储节点集群中读取K1对应的存储区域。其他数据对应的存储区域的读取方式与K1对应的存储区域的读取方式类似,在此不再赘述。
由于从缓存中读数据的时间小于从存储节点集群中读数据的时间,因此,通过优先从缓存中读取数据对应的存储区域,减少了热数据的读延迟,提高读数据的效率。
接下来,请参考图5,图5是本申请实施例提供的另一种分布式存储系统的架构图。本申请实施例以网络控制器为RNIC、存储节点集群为NVRAM集群、采用RS(2,2)策略对原始数据进行纠删码编码为例进行详细说明,即上文提及的RS(k,m)为RS(2,2)。
NVRAM集群通过RDMA原语监视RNIC向NVRAM写入目标数据块的写操作,异步更新NVRAM内存中的内存索引结构,在本申请实施例中,内存为动态随机存取存储器(DynamicRandom Access Memory,DRAM)。
其中,图5中标号51所示的信息为NVRAM,客户端的RNIC向NVRAM51写入目标数据块后,NVRAM51的内存索引结构发生更新。其中,存储节点集群将用于存放目标数据块的NVRAM空间分为若干个小段,每一个小段由一个独立的核心负责监视和更新元数据。例如图5中标号52所指示的信息表示核心1负责监视和更新一个小段对应的元数据,核心2负责监视和更新另一个该小段对应的元数据。标号53所指示的信息表示内存索引结构。
客户端需要向存储节点集群中写入目标数据块时,客户端先向存储节点集群中的NVRAM51发送远程过程调用,以得到元数据,元数据又称中介数据、中继数据,元数据是描述数据的数据。一般情况下,元数据主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。本申请实施例中,元数据用于指示目标数据块在存储节点集群中的存储位置。
客户端将原始数据和元数据发送给RNIC,同时将原始数据和元数据写入内存缓存。客户端先生成一个RS(2,2)编码矩阵,将该RS(2,2)编码矩阵缓存在RNIC中,其中,图5中标号54所指示的信息为RS(2,2)编码矩阵。客户端枚举RS(2,2)编码矩阵中的每个2阶子方阵,对于每个2阶子方阵,计算该2阶子方阵的逆矩阵,得到一个解码矩阵,并将各个解码矩阵存储至RNIC中,其中,图5中标号55所指示的信息为各个解码矩阵。
RNIC基于RS(2,2)编码矩阵54对原始数据进行纠删码编码后,基于元数据所指示的目标数据块在存储节点集群中的存储位置,向该存储位置写入K1、K2、P1、P2各自对应的目标数据块。其中,K1、K2各自对应的目标数据块是原始数据块,P1、P2各自对应的目标数据块是校验数据块。
当K1、K2、P1、P2各自对应的目标数据块中,成功写入任意三个目标数据块即视为写入操作成功。客户端可以继续轮询写入成功指令的数量,直至得到写入成功指令的数量为4时,确认第四个目标数据块也成功写入存储节点集群。
客户端读取目标数据块时,先检查内存缓存,得到目标数据块对应的元数据,基于元数据所指示的目标数据块在存储节点集群中的存储位置,从该存储位置中发送针对K1、K2、P1、P2各自对应的目标数据块中,任意三个目标数据块的读请求。示例性的,任意三个目标数据块为K1、K2、P1各自对应的目标数据块。假设K2对应的存储节点由于访存尖峰的情况,使得RNIC读取K2对应的目标数据块较慢,则RNIC会先读取到K1、P1各自对应的目标数据块,并基于K1对应的目标数据块、P1对应的目标数据块、以及K1和P1对应的解码矩阵,计算出K2,以得到原始数据,并将该原始数据存入内存缓存。
接下来,请参考图6,图6是本申请实施例提供的一种数据传输的示意图。存储节点集群将用于存放目标数据块的NVRAM空间分为若干个小段,分别记为“#0”、“#1”、“#2”、……、“#n”。在每个小段内,包含若干个数据块,每个数据块包含位于头部的版本、位于尾部的版本和位于两个版本之间的数据。例如,图6中示出了小段“#1”中包含至少两个数据块,其中,一个数据块包含位于头部的版本1、位于尾部的版本1和位于两个版本1之间的数据1,另一个数据块包含位于头部的版本2、位于尾部的版本2和位于两个版本2之间的数据2。
在本申请实施例中,存储节点集群中的每一个数据块包含写锁信息、位于头部的版本、位于尾部的版本以及位于两个版本之间的数据。该数据块总共为64字节,写锁信息、位于头部的版本和位于尾部的版本总共占16字节,该16字节分为位于数据块头部的8字节以及位于数据块尾部的8字节,剩余的48字节为数据所占的字节数。
客户端将原始数据发送给网络控制器,由网络控制器对该原始数据进行切分,得到切分后的原始数据。对于每一个切分后的原始数据,客户端准备一块两端带有该切分后的原始数据所对应的版本的存储区域,网咯控制器将该切分后的原始数据写入这个存储区域中位于两个版本之间的区域;网络控制器对该原始数据进行纠删码编码处理后,得到各个校验数据,对于每一个校验数据,客户端准备一块两端带有该校验数据所对应的版本的存储区域,网络控制器将该校验数据写入这个存储区域中位于两个版本之间的区域。对于每一个存储区域,网络控制器向存储节点集群中的数据块中写入该存储区域的所有信息。
本申请实施例还提供数据写入装置。图7是本申请实施例提供的一种数据写入装置的结构示意图,该数据写入装置应用于网络控制器。应理解到,该数据写入装置可以包括比所示模块更多的附加模块或者省略其中所示的一部分模块,本申请实施例对此并不进行限制。如图7所示,该数据写入装置包括:获取模块701,用于获取待写入的原始数据;编码模块702,用于对原始数据进行纠删码编码,得到多个目标数据块;写入模块703,用于将多个目标数据块中第三数量的目标数据块写入存储节点,多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,目标数据块的两端包含相同的版本信息,第三数量大于第一数量。
在一种可能的实现方式中,数据写入装置还包括:生成模块,用于将第一数据块成功写入存储节点时生成写入成功指令,写入成功指令用于第一客户端的中央处理器确定第一数据块的写入结果,第一数据块为多个目标数据块中的任意一个目标数据块。
在一种可能的实现方式中,编码模块702,用于根据原始数据和原始数据对应的版本信息,得到第一数量的原始数据块,原始数据块的两端分别包含原始数据对应的版本信息;对原始数据进行纠删码编码,得到校验数据;根据校验数据和校验数据对应的版本信息,得到第二数量的校验数据块,校验数据块的两端分别包含校验数据对应的版本信息。
在一种可能的实现方式中,第一客户端持有写锁权限,写锁权限是向存储节点写入目标数据块的权限,获取模块701,用于获取其他客户端发送的待写入的原始数据,其他客户端是未持有写锁权限的客户端。
在一种可能的实现方式中,编码模块702,用于接收第一客户端的中央处理器发送的针对原始数据的编码指令;响应于编码指令,对原始数据进行纠删码编码,得到多个目标数据块。
本申请实施例还提供数据读取装置。图8是本申请实施例提供的一种数据读取装置的结构示意图,该数据读取装置应用于网络控制器。应理解到,该数据读取装置可以包括比所示模块更多的附加模块或者省略其中所示的一部分模块,本申请实施例对此并不进行限制。如图8所示,该数据读取装置包括:读取模块801,用于从存储节点中读取第一数量个目标数据块,存储节点中存储了多个目标数据块中第三数量的目标数据块,多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,目标数据块的两端包含相同的版本信息,第三数量大于第一数量;解码模块802,用于对第一数量个目标数据块进行纠删码解码,得到原始数据。
在一种可能的实现方式中,读取模块801,用于向存储节点发送针对第三数量的目标数据块中第四数量个目标数据块的读取指令,第四数量大于第一数量,且第四数量小于或者等于第三数量;接收第四数量个目标数据块中前第一数量的目标数据块。
在一种可能的实现方式中,读取模块801,用于响应于第二客户端的缓存区域中存储有第二数据块的版本信息,从缓存区域中读取第二数据块,缓存区域中存储有网络控制器从存储节点中历史读取的目标数据块,第二数据块为第一数量个目标数据块中的任意一个目标数据块;响应于缓存区域中未存储有第二数据块的版本信息,从存储节点中读取第二数据块。
在一种可能的实现方式中,数据读取装置还包括:存储模块,用于将原始数据和第一数量个目标数据块存储至缓存区域中。
在一种可能的实现方式中,解码模块802,用于获取第二客户端的中央处理器发送的基于解码信息的解码指令;响应于解码指令,基于解码信息对第一数量个目标数据块进行纠删码解码,得到原始数据。
应理解的是,上述图7、图8提供的网络控制器在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其可选实现过程详见方法实施例,这里不再赘述。
下面对前文提及的RDMA进行详细说明。本申请实施例中,RDMA是一种绕过远程主机操作系统内核访问其内存中数据的技术,由于不经过操作系统,不仅节省了大量CPU资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟,尤其适合在大规模并行计算机集群中有广泛应用。
RDMA有几大特点,(1)数据通过网络与远程机器间进行数据传输;(2)没有操作系统内核的参与,有关发送传输的所有内容都卸载到智能网卡上;(3)在用户空间虚拟内存与智能网卡直接进行数据传输不涉及操作系统内核,没有额外的数据移动和复制。
目前,大致有三类RDMA网络,分别是Infiniband、(RDMA over convergedethernet,RoCE)、(internet wide area RDMA protocol,iWARP)。其中,Infiniband是一种专为RDMA设计的网络,从硬件上保证可靠传输,需要支持该技术的网卡和交换机。而RoCE和iWARP都是基于以太网的RDMA技术,只需要配置特殊的网卡即可。从性能上,Infiniband网络最好,但网卡和交换机是价格也很高,而RoCE和iWARP仅需使用特殊的网卡就可以了,价格也相对便宜很多。
如图9所示,图9是本申请实施例提供的一种RDMA的架构示意图。以执行RDMA写请求消息为例,其工作流程如下。1)当主机100中的一个应用101执行RDMA写请求消息时,本端网卡300从缓冲区(Buffer)102中将该请求消息读取至网卡300自己的缓冲区301中,在此过程中绕过了操作系统(OS)103。RDMA写请求消息中包含虚拟地址、内存钥匙和待写入的数据,虚拟地址是本端网卡300所能访问的虚拟存储空间的地址,虚拟存储空间是由主机200的内存映射而来的。内存钥匙用于确定网卡300对主机200的内存的访问权限。2)网卡300的处理器302通过网络500将RDMA写请求发送到网卡400。3)网卡400确认内存钥匙,根据将数据写入主机200的内存中。主机200和主机100的结构是对称的,其处理RDMA读写请求的流程也和主机100一致,这里就不对主机200内部的结构进行展开描述。
消息服务建立在通信双方本端和远端应用之间创建的Channel-IO连接之上。当应用需要通信时,就会创建一条Channel连接,每条Channel的首尾端点是两对队列对(queuepairs,QP)。每对QP由发送队列(send queue,SQ)和接收队列(receive queue,RQ)构成。如图10所示,图10是本申请实施例提供的一种队列对的示意图。这些队列中管理着各种类型的消息。QP会被映射到应用的虚拟地址空间,使得应用直接通过它访问网卡。除了QP描述的两种基本队列之外,RDMA还提供一种完成队列(complete queue,CQ),CQ用来知会用户WQ上的消息已经被处理完。
RDMA还提供了一套软件传输接口(software transport interface),方便用户创建工作请求(work request,WR),WR中描述了应用希望传输到对端的消息内容。WR通知给QP中的某个队列(work queue,WQ)。在WQ中,用户的WR被转化为工作队列元素(work queueellement,WQE)的格式,等待网卡的调度解析,并从WQE指向的缓冲区中拿到消息发送到远端主机。
RDMA的传输模式有双边操作也有单边操作。SEND/RECEIVE属于双边操作,即需要远端的应用感知参与才能完成收发。READ和WRITE是单边操作,只需要本端明确信息的源和目的地址,远端应用不必感知此次通信,数据的读或存都通过远端的网卡完成,再由远端网卡封装成消息返回到本端。在实际中,SEND/RECEIVE多用于连接控制类报文,而数据报文多是通过READ/WRITE来完成的。
参见图11,图11示出了本申请一个示例性实施例提供的网络设备2000的结构示意图。图11所示的网络设备2000用于执行上述图2所示的数据写入方法、图3所示的数据读取方法所涉及的操作。该网络设备2000例如是交换机、路由器等。
如图11所示,网络设备2000包括至少一个处理器2001、存储器2003以及至少一个通信接口2004。
处理器2001例如是通用中央处理器(central processing unit,CPU)、数字信号处理器(digital signal processor,DSP)、网络处理器(network processer,NP)、图形处理器(graphics processing unit,GPU)、神经网络处理器(neural-network processingunits,NPU)、数据处理单元(data processing unit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器2001包括专用集成电路(application-specificintegrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。PLD例如是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。其可以实现或执行结合本发明实施例公开内容所描述的各种逻辑方框、模块和电路。处理器也可以是实现计算功能的组合,例如包括一个或多个微处理器组合,DSP和微处理器的组合等等。
可选的,网络设备2000还包括总线。总线用于在网络设备2000的各组件之间传送信息。总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。图11中网络设备2000的各组件之间除了采用总线连接,还可采用其他方式连接,本发明实施例不对各组件的连接方式进行限定。
存储器2003例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器2003例如是独立存在,并通过总线与处理器2001相连接。存储器2003也可以和处理器2001集成在一起。
通信接口2004使用任何收发器一类的装置,用于与其它设备或通信网络通信,通信网络可以为以太网、无线接入网(RAN)或无线局域网(wireless local area networks,WLAN)等。通信接口2004可以包括有线通信接口,还可以包括无线通信接口。可选的,通信接口2004可以为以太(ethernet)接口、快速以太(fast ethernet,FE)接口、千兆以太(gigabit ethernet,GE)接口,异步传输模式(asynchronous transfer mode,ATM)接口,无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合。以太网接口可以是光接口,电接口或其组合。在本申请实施例中,通信接口2004可以用于网络设备2000与其他设备进行通信。
在可选实现中,作为一种实施例,处理器2001可以包括一个或多个CPU,如图11中所示的CPU0和CPU1。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在可选实现中,作为一种实施例,网络设备2000可以包括多个处理器,如图11中所示的处理器2001和处理器2002。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在可选实现中,作为一种实施例,网络设备2000还可以包括输出设备和输入设备。输出设备和处理器2001通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器2001通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器2003用于存储执行本申请方案的程序代码2005,处理器2001可以执行存储器2003中存储的程序代码2005。也即是,网络设备2000可以通过处理器2001以及存储器2003中的程序代码2005,来实现方法实施例提供的数据写入方法或者数据处理方法。程序代码2005中可以包括一个或多个软件模块。可选地,处理器2001自身也可以存储执行本申请方案的程序代码或指令。
在可选实施例中,本申请实施例的网络设备2000可对应于上述各个数据写入方法实施例中的第一客户端的网络控制器,网络设备2000中的处理器2001读取存储器2003中的程序代码2005或处理器2001自身存储的程序代码或指令,使图11所示的网络设备2000能够执行第一客户端的网络控制器所执行的全部或部分操作。
在可选实施例中,本申请实施例的网络设备2000可对应于上述各个数据读取方法实施例中的第二客户端的网络控制器,网络设备2000中的处理器2001读取存储器2003中的程序代码2005或处理器2001自身存储的程序代码或指令,使图11所示的网络设备2000能够执行第二客户端的网络控制器所执行的全部或部分操作。
网络设备2000还可以对应于上述图7所示的数据写入装置,数据写入装置中的每个功能模块采用网络设备2000的软件实现。换句话说,数据写入装置中包括的功能模块为网络设备2000的处理器2001读取存储器2003中存储的程序代码2005后生成的。
网络设备2000还可以对应于上述图8所示的数据读取装置,数据读取装置中的每个功能模块采用网络设备2000的软件实现。换句话说,数据读取装置中包括的功能模块为网络设备2000的处理器2001读取存储器2003中存储的程序代码2005后生成的。
其中,图2-图6所示的数据处理方法的各步骤通过网络设备2000的处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤,为避免重复,这里不再详细描述。
参见图12,图12示出了本申请另一个示例性实施例提供的网络设备2100的结构示意图图12所示的网络设备2100用于执行上述图2-图6所示的数据处理的方法所涉及的全部或部分操作。该网络设备2100例如是交换机、路由器等,该网络设备2100可以由一般性的总线体系结构来实现。
如图12所示,网络设备2100包括:主控板2110和接口板2130。
主控板也称为主处理单元(main processing unit,MPU)或路由处理卡(routeprocessor card),主控板2110用于对网络设备2100中各个组件的控制和管理,包括路由计算、设备管理、设备维护、协议处理功能。主控板2110包括:中央处理器2111和存储器2112。
接口板2130也称为线路接口单元卡(line processing unit,LPU)、线卡(linecard)或业务板。接口板2130用于提供各种业务接口并实现数据包的转发。业务接口包括而不限于以太网接口、POS(packet over SONET/SDH)接口等,以太网接口例如是灵活以太网业务接口(flexible ethernet clients,FlexE Clients)。接口板2130包括:中央处理器2131网络处理器2132、转发表项存储器2134和物理接口卡(physical interface card,PIC)2133。
接口板2130上的中央处理器2131用于对接口板2130进行控制管理并与主控板2110上的中央处理器2111进行通信。
网络处理器2132用于实现报文的转发处理。网络处理器2132的形态可以是转发芯片。转发芯片可以是网络处理器(network processor,NP)。在一些实施例中,转发芯片可以通过专用集成电路(application-specific integrated circuit,ASIC)或现场可编程门阵列(field programmable gate array,FPGA)实现。可选而言,网络处理器2132用于基于转发表项存储器2134保存的转发表转发接收到的报文,如果报文的目的地址为网络设备2100的地址,则将该报文上送至CPU(如中央处理器2131)处理;如果报文的目的地址不是网络设备2100的地址,则根据该目的地址从转发表中查找到该目的地址对应的下一跳和出接口,将该报文转发到该目的地址对应的出接口。其中,上行报文的处理可以包括:报文入接口的处理,转发表查找;下行报文的处理可以包括:转发表查找等等。在一些实施例中,中央处理器也可执行转发芯片的功能,比如基于通用CPU实现软件转发,从而接口板中不需要转发芯片。
物理接口卡2133用于实现物理层的对接功能,原始的流量由此进入接口板2130,以及处理后的报文从该物理接口卡2133发出。物理接口卡2133也称为子卡,可安装在接口板2130上,负责将光电信号转换为报文并对报文进行合法性检查后转发给网络处理器2132处理。在一些实施例中,中央处理器2131也可执行网络处理器2132的功能,比如基于通用CPU实现软件转发,从而物理接口卡2133中不需要网络处理器2132。
可选地,网络设备2100包括多个接口板,例如网络设备2100还包括接口板2140,接口板2140包括:中央处理器2141、网络处理器2142、转发表项存储器2144和物理接口卡2143。接口板2140中各部件的功能和实现方式与接口板2130相同或相似,在此不再赘述。
可选地,网络设备2100还包括交换网板2120。交换网板2120也可以称为交换网板单元(switch fabric unit,SFU)。在网络设备有多个接口板的情况下,交换网板2120用于完成各接口板之间的数据交换。例如,接口板2130和接口板2140之间可以通过交换网板2120通信。
主控板2110和接口板耦合。例如。主控板2110、接口板2130和接口板2140,以及交换网板2120之间通过系统总线与系统背板相连实现互通。在一种可能的实现方式中,主控板2110和接口板2130及接口板2140之间建立进程间通信协议(inter-processcommunication,IPC)通道,主控板2110和接口板2130及接口板2140之间通过IPC通道进行通信。
在逻辑上,网络设备2100包括控制面和转发面,控制面包括主控板2110和中央处理器2111,转发面包括执行转发的各个组件,比如转发表项存储器2134、物理接口卡2133和网络处理器2132。控制面执行路由器、生成转发表、处理信令和协议报文、配置与维护网络设备的状态等功能,控制面将生成的转发表下发给转发面,在转发面,网络处理器2132基于控制面下发的转发表对物理接口卡2133收到的报文查表转发。控制面下发的转发表可以保存在转发表项存储器2134中。在有些实施例中,控制面和转发面可以完全分离,不在同一网络设备上。
值得说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的网络设备。可选地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态网络设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。可选采用哪种架构,取决于可选的组网部署场景,此处不做任何限定。
在可选实施例中,网络设备2100对应于上述图7所示的数据写入装置。在一些实施例中,图7所示的获取模块701相当于网络管理设备2100中的物理接口卡2133;编码模块702及写入模块703相当于网络管理设备2100中的中央处理器2111或网络处理器2132。
在可选实施例中,网络设备2100对应于上述图8所示的数据读取装置。在一些实施例中,图8所示的读取模块801相当于网络管理设备2100中的物理接口卡2133;解码模块802相当于网络管理设备2100中的中央处理器2111或网络处理器2132。
应理解的是,上述处理器可以是中央处理器(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced RISC machines,ARM)架构的处理器。
进一步地,在一种可选的实施例中,上述存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data dateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。
还提供了一种计算机可读存储介质,存储介质中存储有至少一条程序指令或代码,程序指令或代码由处理器加载并执行时以使计算机实现如上图2、图4-6任一的数据写入方法、或者图3、图4-6任一的数据读取方法。
本申请提供了一种计算机程序,当计算机程序被计算机执行时,可以使得处理器或计算机执行上述方法实施例中对应的各个步骤和/或流程。
提供了一种芯片,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行上述各方面中的方法。
提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行上述各方面中的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘solid state disk)等。
以上可选实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本申请的可选实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和模块,能够以软件、硬件、固件或者其任意组合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。作为示例,本申请实施例的方法可以在机器可执行指令的上下文中被描述,机器可执行指令诸如包括在目标的真实或者虚拟处理器上的器件中执行的程序模块中。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的机器可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。
用于实现本申请实施例的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,使得程序代码在被计算机或其他可编程的数据处理装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。
在本申请实施例的上下文中,计算机程序代码或者相关数据可以由任意适当载体承载,以使得设备、装置或者处理器能够执行上文描述的各种处理和操作。载体的示例包括信号、计算机可读介质等等。
信号的示例可以包括电、光、无线电、声音或其它形式的传播信号,诸如载波、红外信号等。
机器可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。机器可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光存储设备、磁存储设备,或其任意合适的组合。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、设备和模块的可选工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、设备或模块的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一客户端可以被称为第二客户端,并且类似地,第二客户端可以被称为第一客户端。第一客户端和第二客户端都可以是客户端,并且在某些情况下,可以是单独且不同的客户端。
还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个目标数据块是指两个或两个以上的目标数据块。本文中术语“系统”和“网络”经常可互换使用。
应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
还应理解,术语“若”和“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“若确定...”或“若检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
还应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。

Claims (23)

1.一种数据写入方法,其特征在于,所述方法包括:
第一客户端的网络控制器获取待写入的原始数据;
所述网络控制器对所述原始数据进行纠删码编码,得到多个目标数据块;
所述网络控制器将所述多个目标数据块中第三数量的目标数据块写入存储节点,所述多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,所述目标数据块的两端包含相同的版本信息,所述第三数量大于所述第一数量。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述网络控制器将第一数据块成功写入所述存储节点时生成写入成功指令,所述写入成功指令用于所述第一客户端的中央处理器确定所述第一数据块的写入结果,所述第一数据块为所述多个目标数据块中的任意一个目标数据块。
3.根据权利要求1或2所述的方法,其特征在于,所述网络控制器对所述原始数据进行纠删码编码,得到多个目标数据块,包括:
所述网络控制器根据所述原始数据和所述原始数据对应的版本信息,得到所述第一数量的原始数据块,所述原始数据块的两端分别包含所述原始数据对应的版本信息;
所述网络控制器对所述原始数据进行纠删码编码,得到校验数据;
所述网络控制器根据所述校验数据和所述校验数据对应的版本信息,得到所述第二数量的校验数据块,所述校验数据块的两端分别包含所述校验数据对应的版本信息。
4.根据权利要求1-3任一所述的方法,其特征在于,所述第一客户端持有写锁权限,所述写锁权限是向所述存储节点写入目标数据块的权限,所述第一客户端的网络控制器获取待写入的原始数据,包括:
所述网络控制器获取其他客户端发送的待写入的原始数据,所述其他客户端是未持有所述写锁权限的客户端。
5.根据权利要求1-4任一所述的方法,其特征在于,所述网络控制器对所述原始数据进行纠删码编码,得到多个目标数据块,包括:
所述网络控制器接收所述第一客户端的中央处理器发送的针对所述原始数据的编码指令;
所述网络控制器响应于所述编码指令,对所述原始数据进行纠删码编码,得到多个目标数据块。
6.一种数据读取方法,其特征在于,所述方法包括:
第二客户端的网络控制器从存储节点中读取第一数量个目标数据块,所述存储节点中存储了多个目标数据块中第三数量的目标数据块,所述多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,所述目标数据块的两端包含相同的版本信息,所述第三数量大于所述第一数量;
所述网络控制器对所述第一数量个目标数据块进行纠删码解码,得到原始数据。
7.根据权利要求6所述的方法,其特征在于,所述第二客户端的网络控制器从存储节点中读取第一数量个目标数据块,包括:
所述网络控制器向所述存储节点发送针对所述第三数量的目标数据块中第四数量个目标数据块的读取指令,所述第四数量大于所述第一数量,且所述第四数量小于或者等于所述第三数量;
所述网络控制器接收所述第四数量个目标数据块中前第一数量的目标数据块。
8.根据权利要求6或7所述的方法,其特征在于,所述第二客户端的网络控制器从存储节点中读取第一数量个目标数据块,包括:
响应于所述第二客户端的缓存区域中存储有第二数据块的版本信息,所述网络控制器从所述缓存区域中读取所述第二数据块,所述缓存区域中存储有所述网络控制器从所述存储节点中历史读取的目标数据块,所述第二数据块为所述第一数量个目标数据块中的任意一个目标数据块;
响应于所述缓存区域中未存储有所述第二数据块的版本信息,所述网络控制器从所述存储节点中读取所述第二数据块。
9.根据权利要求6至8任一所述的方法,其特征在于,所述方法还包括:
所述网络控制器将所述原始数据和所述第一数量个目标数据块存储至所述缓存区域中。
10.根据权利要求6至9任一所述的方法,其特征在于,所述网络控制器对所述第一数量个目标数据块进行纠删码解码,得到原始数据,包括:
所述网络控制器获取所述第二客户端的中央处理器发送的基于解码信息的解码指令;
所述网络控制器响应于所述解码指令,基于所述解码信息对所述第一数量个目标数据块进行纠删码解码,得到原始数据。
11.一种数据写入装置,其特征在于,所述数据写入装置应用于网络控制器,所述装置包括:
获取模块,用于获取待写入的原始数据;
编码模块,用于对所述原始数据进行纠删码编码,得到多个目标数据块;
写入模块,用于将所述多个目标数据块中第三数量的目标数据块写入存储节点,所述多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,所述目标数据块的两端包含相同的版本信息,所述第三数量大于所述第一数量。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
生成模块,用于将第一数据块成功写入所述存储节点时生成写入成功指令,所述写入成功指令用于第一客户端的中央处理器确定所述第一数据块的写入结果,所述第一数据块为所述多个目标数据块中的任意一个目标数据块。
13.根据权利要求11或12所述的装置,其特征在于,所述编码模块,用于根据所述原始数据和所述原始数据对应的版本信息,得到所述第一数量的原始数据块,所述原始数据块的两端分别包含所述原始数据对应的版本信息;对所述原始数据进行纠删码编码,得到校验数据;根据所述校验数据和所述校验数据对应的版本信息,得到所述第二数量的校验数据块,所述校验数据块的两端分别包含所述校验数据对应的版本信息。
14.根据权利要求11-13任一所述的装置,其特征在于,所述第一客户端持有写锁权限,所述写锁权限是向所述存储节点写入目标数据块的权限,所述获取模块,用于获取其他客户端发送的待写入的原始数据,所述其他客户端是未持有所述写锁权限的客户端。
15.根据权利要求11-14任一所述的装置,其特征在于,所述编码模块,用于接收所述第一客户端的中央处理器发送的针对所述原始数据的编码指令;响应于所述编码指令,对所述原始数据进行纠删码编码,得到多个目标数据块。
16.一种数据读取装置,其特征在于,所述数据读取装置应用于网络控制器,所述装置包括:
读取模块,用于从存储节点中读取第一数量个目标数据块,所述存储节点中存储了多个目标数据块中第三数量的目标数据块,所述多个目标数据块包括第一数量的原始数据块和第二数量的校验数据块,所述目标数据块的两端包含相同的版本信息,所述第三数量大于所述第一数量;
解码模块,用于对所述第一数量个目标数据块进行纠删码解码,得到原始数据。
17.根据权利要求16所述的装置,其特征在于,所述读取模块,用于向所述存储节点发送针对所述第三数量的目标数据块中第四数量个目标数据块的读取指令,所述第四数量大于所述第一数量,且所述第四数量小于或者等于所述第三数量;接收所述第四数量个目标数据块中前第一数量的目标数据块。
18.根据权利要求16或17所述的装置,其特征在于,所述读取模块,用于响应于第二客户端的缓存区域中存储有第二数据块的版本信息,从所述缓存区域中读取所述第二数据块,所述缓存区域中存储有所述网络控制器从所述存储节点中历史读取的目标数据块,所述第二数据块为所述第一数量个目标数据块中的任意一个目标数据块;响应于所述缓存区域中未存储有所述第二数据块的版本信息,从所述存储节点中读取所述第二数据块。
19.根据权利要求16至18任一所述的装置,其特征在于,所述装置还包括:
存储模块,用于将所述原始数据和所述第一数量个目标数据块存储至所述缓存区域中。
20.根据权利要求16至19任一所述的装置,其特征在于,所述解码模块,用于获取所述第二客户端的中央处理器发送的基于解码信息的解码指令;响应于所述解码指令,基于所述解码信息对所述第一数量个目标数据块进行纠删码解码,得到原始数据。
21.一种网络设备,其特征在于,所述网络设备包括:处理器,所述处理器与存储器耦合,所述存储器中存储有至少一条程序指令或代码,所述至少一条程序指令或代码由所述处理器加载并执行,以使所述网络设备实现权利要求1-5中任一所述的数据写入方法或者实现权利要求6-10中任一所述的数据读取方法。
22.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机执行时,实现如权利要求1-5中任一所述的数据写入方法或者实现权利要求6-10中任一所述的数据读取方法。
23.一种数据处理系统,其特征在于,所述系统包括网络控制器,所述网络控制器用于执行所述权利要求1-5中任一所述的数据写入方法,或者执行所述权利要求6-10中任一所述的数据读取方法。
CN202110814096.5A 2021-07-19 2021-07-19 数据写入方法、数据读取方法、装置、设备、系统及介质 Pending CN115639947A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202110814096.5A CN115639947A (zh) 2021-07-19 2021-07-19 数据写入方法、数据读取方法、装置、设备、系统及介质
EP22844843.7A EP4357901A1 (en) 2021-07-19 2022-02-25 Data writing method and apparatus, data reading method and apparatus, and device, system and medium
PCT/CN2022/078066 WO2023000670A1 (zh) 2021-07-19 2022-02-25 数据写入方法、数据读取方法、装置、设备、系统及介质
US18/415,352 US20240152290A1 (en) 2021-07-19 2024-01-17 Data writing method, data reading method, apparatus, device, system, and medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110814096.5A CN115639947A (zh) 2021-07-19 2021-07-19 数据写入方法、数据读取方法、装置、设备、系统及介质

Publications (1)

Publication Number Publication Date
CN115639947A true CN115639947A (zh) 2023-01-24

Family

ID=84940226

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110814096.5A Pending CN115639947A (zh) 2021-07-19 2021-07-19 数据写入方法、数据读取方法、装置、设备、系统及介质

Country Status (4)

Country Link
US (1) US20240152290A1 (zh)
EP (1) EP4357901A1 (zh)
CN (1) CN115639947A (zh)
WO (1) WO2023000670A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115964445A (zh) * 2023-02-23 2023-04-14 合肥申威睿思信息科技有限公司 一种分布式数据库的多副本实现方法和装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116560796B (zh) * 2023-05-12 2024-02-02 深圳天融信创新科技有限公司 数据加载方法、装置、设备及介质
CN116980641B (zh) * 2023-09-22 2023-12-15 江西云眼视界科技股份有限公司 视频迁移的异步处理方法、系统、计算机及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018798A (zh) * 2019-04-11 2019-07-16 苏州浪潮智能科技有限公司 一种写数据性能优化方法、装置、设备及存储介质
CN110113425A (zh) * 2019-05-16 2019-08-09 南京大学 一种基于rdma网卡纠删码卸载的负载均衡系统及均衡方法
KR20210049619A (ko) * 2019-10-25 2021-05-06 에스케이하이닉스 주식회사 분산 저장 시스템의 스토리지 노드 및 그 동작 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115964445A (zh) * 2023-02-23 2023-04-14 合肥申威睿思信息科技有限公司 一种分布式数据库的多副本实现方法和装置
CN115964445B (zh) * 2023-02-23 2024-03-05 合肥申威睿思信息科技有限公司 一种分布式数据库的多副本实现方法和装置

Also Published As

Publication number Publication date
US20240152290A1 (en) 2024-05-09
WO2023000670A1 (zh) 2023-01-26
EP4357901A1 (en) 2024-04-24

Similar Documents

Publication Publication Date Title
CN110402568B (zh) 一种通信的方法及装置
US10204070B2 (en) Method, device, system and storage medium for implementing packet transmission in PCIE switching network
CN115639947A (zh) 数据写入方法、数据读取方法、装置、设备、系统及介质
US9003082B2 (en) Information processing apparatus, arithmetic device, and information transferring method
EP3028162B1 (en) Direct access to persistent memory of shared storage
EP1581875B1 (en) Using direct memory access for performing database operations between two or more machines
US20090077567A1 (en) Adaptive Low Latency Receive Queues
CN111431757B (zh) 虚拟网络的流量采集方法及装置
US20140032796A1 (en) Input/output processing
US9864717B2 (en) Input/output processing
CN112291293B (zh) 任务处理方法、相关设备及计算机存储介质
WO2021073546A1 (zh) 数据访问方法、装置和第一计算设备
CN110119304B (zh) 一种中断处理方法、装置及服务器
CN109857545B (zh) 一种数据传输方法及装置
US10250510B2 (en) Intelligent network resource manager
CN114595043A (zh) 一种io调度方法和装置
US20140025859A1 (en) Input/output processing
US7710990B2 (en) Adaptive low latency receive queues
US20160294926A1 (en) Using a single work item to send multiple messages
CN114531351A (zh) 传输报文的方法、装置、设备及计算机可读存储介质
CN113778937A (zh) 用于执行片上网络(NoC)中的事务聚合的系统和方法
Tang et al. Scalable RDMA Transport with Efficient Connection Sharing
CN115529275B (zh) 一种报文处理系统及方法
US20230129107A1 (en) Method and apparatus to aggregate objects to be stored in a memory to optimize the memory bandwidth
WO2024041140A1 (zh) 数据处理方法、加速器及计算设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication