掌桥专利:专业的专利平台
掌桥专利
首页

一种数据读写方法、系统及装置

文献发布时间:2023-06-19 18:34:06


一种数据读写方法、系统及装置

技术领域

本申请涉及存储领域,尤其涉及一种数据读写方法、系统及装置。

背景技术

分布式存储系统是云服务中数据存储基础设施,其原理是将数据分散存储在多台计算设备上。随着计算技术的发展,分布式存储系统所承载的数据量和访问量也随之增加。为满足一些企业对业务性能以及管理的要求,分布式存储系统需要能够支持大规模集群部署,同时要易于管理。目前对分布式存储系统的规模进行扩展的方案中,在单个分布式存储集群中增加部署节点以扩展分布式存储系统的规模时,由于集群中用于管理元数据的计算设备(如元数据管理节点)的CPU、内存和网卡配置等硬件性能无法无限提升,导致该集群可扩展的规模有限,且存在单点故障问题;在分布式存储系统中设置多个独立的存储集群以扩展分布式存储系统规模时,由于各个集群之间数据分开管理,导致各个集群之间互相隔离,无法跨集群读写数据。

发明内容

本申请提供了一种数据读写方法、系统及装置,该系统能够支持大规模存储集群,通过该系统的方法能够实现跨存储池数据读写功能,避免单点故障问题。

为实现上述技术目的,本申请采用如下技术方案:

第一方面,本申请实施例提供了一种数据读写方法,用于第一客户端,该方法包括:接收第一读写请求;第一读写请求包括待读写数据的第一逻辑地址;将第一读写请求发送给根元数据服务中心,使得根元数据服务中心从第一对应关系中查找第一逻辑地址对应的目标存储池的标识,并向目标存储池发送第一读写请求;其中,第一读写请求用于请求目标存储池从第二对应关系中查找第一逻辑地址对应的第一物理地址,针对第一物理地址所指示的存储空间执行读写操作;第一对应关系是多个数据的逻辑地址与多个存储池的标识之间的对应关系;第二对应关系是目标存储池中存储的多个数据的逻辑地址与物理地址之间的对应关系。

可以理解的是,该方法中,由于根元数据服务中心存储了多个数据的逻辑地址与多个存储池的标识的第一对应关系,每个存储池存储了的多个数据的逻辑地址与物理地址的第二对应关系,第二对应关系由各存储池的元数据管理节点各自管理,该双层元数据管理架构,使得第一客户端可以实现跨存储池读写数据,同时,每个存储池设置元数据管理节点,相比于元数据管理节点设置在根元数据服务中心而言,元数据管理节点管理的存储节点数量降低,有效提高了元数据管理节点的服务性能。另外,元数据管理节点将第二对应关系持久化存储在每个存储池的持久化存储节点中,各个存储池数据隔离,当任意存储池发生故障时,对其他存储池不造成影响,避免了单点故障问题。

上述数据读写方法使用的数据读写系统,在解决上述跨存储池读写数据、单点故障问题外,由于每个存储池是独立的存储集群,因此该系统可以不受硬件等限制增加存储池数量,满足了大规模扩展功能。

在一种实现方式中,上述第一客户端与第一存储池对应,第一读写请求还包括标识信息,标识信息用于指示待读写数据所要读写的存储空间是否在第一存储池;上述将第一读写请求发送给根元数据服务中心,包括:当标识信息用于指示待读写数据所要读写的存储空间不在第一存储池时,将第一读写请求发送给根元数据服务中心。

在另一种实现方式中,方法还包括:当标识信息用于指示待读写数据所要读写的存储空间在第一存储池时,将第一读写请求发送给第一存储池,以使得第一存储池读写该待读写数据。

可以理解的是,当第一读写请求是由上层应用发送,上层应用可以根据在第一读写请求中标记要业务中需要的待读写数据是在本地还是异地。第一客户端基于第一读写请求中的标识,选择将第一读写请求发送给第一客户端对应的本地存储池或者是根元数据服务中心。可以理解的是,该方法中第一客户端可以直接判断第一读写请求要读写的数据是否在本地存储池,当第一读写请求中待读写数据在本地存储池时,直接将第一读写请求发送给本地存储池,不需要再经过根元数据服务中心,减少了待读写数据的读写IO路径长度,较大程度的提高数据在本地存储池读写的效率。

在另一种实现方式中,第一客户端与第一存储池对应,将第一读写请求发送给根元数据服务中心之前,方法还包括:将第一读写请求发送给第一存储池,以使得第一存储池读写待读写数据;接收第一存储池发送的读写失败的消息;读写失败消息用于指示待读写数据所要读写的存储空间不在第一存储池中;将第一读写请求发送给根元数据服务中心,包括:响应于读写失败的消息,将第一读写请求发送给根元数据服务中心。

可以理解的是,由于第一客户端与第一存储池对应,第一存储池是第一客户端的本地存储池,针对数据本地化的特点,大多数情况下,第一客户端要读写的数据储存在第一存储池,因此,该方法中,第一客户端优先将第一读写请求发送给第一存储池,当待读写数据所要读写的存储空间不在第一存储池时再向根元数据服务中心发送第一读写请求。当待读写数据所要读写的存储空间在本地存储池时,不需要再经过根元数据服务中心,减少了待读写数据的读写IO路径长度,较大程度的提高数据在本地存储池读写的效率。可以理解的是,由于该方法没有修改第一读写请求中包含的内容,因此,该方法不需要修改第一客户端对上层应用的接口参数,该方法改动量较小,实现成本较低。

在另一种实现方式中,第一客户端所在的设备设置有缓存,缓存储存有第一逻辑地址与目标存储池的标识之间的对应关系,方法还包括:接收第二读写请求,第二读写请求中包含待读写数据的第一逻辑地址;基于缓存中存储的第一逻辑地址与目标存储池的标识之间的对应关系,向目标存储池发送第二读写请求;其中,第二读写请求用于请求目标存储池读写待读写数据。

可以理解的是,第一客户端所在的设备设置了缓存,当第一客户端接收第二读写请求,当第二读写请求包含第一逻辑地址,即第二读写请求需要读写的数据与第一读写请求中要读写的数据一样时,可以直接基于缓存中存储的第一逻辑地址与目标存储池的标识的对应关系,将第二读写请求发送给目标存储池。该方法中缓存可以将第一客户端读写过的数据所在的存储池的标识储存下来,当下次再次读写相同的数据时,可以不需要经过根元数据服务中心查询该存储池的标识,能够减少数据读写的IO路径长度,提高了读写效率。

在另一种实现方式中,接收根元数据服务中心发送的第一逻辑地址与目标存储池的标识之间的对应关系,并储存在缓存中;或者,在接收目标存储池发送的待读写数据之后,在缓存中存储第一逻辑地址与目标存储池的标识之间的对应关系。

可以理解的是,第一逻辑地址与目标存储池的标识之间的对应关系可以基于目标存储池确定,也可以是由根元数据服务中心发送的,本申请对具体如何确定不做限定。一般的,由目标存储池发送待读写数据时确定的第一逻辑地址与目标存储池的标识之间的对应关系方法能更高效。

第二方面,本申请实施例提供一种数据读写方法,应用于根元数据服务中心,方法包括:接收第一客户端发送的第一读写请求;第一读写请求包括待读写数据的第一逻辑地址;从第一对应关系中查找第一逻辑地址对应的目标存储池的标识;其中,第一对应关系是根元数据服务中心存储的多个数据的逻辑地址与多个存储池的标识之间的对应关系;向目标存储池发送第一读写请求;其中,第一读写请求用于请求目标存储池从第二对应关系中查找第一逻辑地址对应的第一物理地址,针对第一物理地址所指示的存储空间执行读写操作;第二对应关系是目标存储池中存储的多个数据的逻辑地址与物理地址之间的对应关系。

在一种实现方式中,方法还包括:向第一客户端发送第一逻辑地址与目标存储池的标识之间的对应关系。

上述第二方面及其各种实现方式和有益效果的具体描述,可以参考第一方面及其各种实现方式中的详细描述。

第三方面,本申请实施例提供一种数据读写系统,包括:多个客户端,根元数据服务中心,以及与根元数据服务中心连接的多个存储池;其中,与客户端对应的存储池为客户端的本地存储池。

根元数据服务中心存储有多个存储池的标识与多个数据的逻辑地址之间的第一对应关系;一个存储池的标识与该存储池中的数据的逻辑地址之间具有第一对应关系;不同存储池之间数据隔离;存储池中存储有该存储池中的多个数据的逻辑地址与物理地址之间的第二对应关系。

多个客户端中的第一客户端,用于向根元数据服务中心发送第一读写请求,第一读写请求包括待读写数据的第一逻辑地址。

根元数据服务中心,用于从第一对应关系中,确定第一逻辑地址对应的第一存储池的标识,向第一存储池发送第一读写请求。

第一存储池,用于基于第一存储池的第二对应关系,确定第一逻辑地址对应的第一物理地址;并针对第一物理地址所指示的存储空间执行读写操作。

在一种实现方式中,每个存储池包括持久化存储节点和元数据管理节点,持久化存储节点对该存储池中的多个数据的逻辑地址与物理地址之间的第二对应关系进行持久化存储,元数据管理节点管理第二对应关系,使得第二对应关系持久化存储到持久化存储节点上。

第四方面,本申请实施例提供一种数据读写装置,例如安装第一客户端的装置,其中,数据读写装置应用于第一方面或第一方面中任一种可能的实现方式的数据读写方法的各个模块。

第五方面,本申请实施例提供一种数据读写装置,例如根元数据服务中心,其中,数据读写装置应用于第二方面或第二方面中任一种可能的实现方式的数据读写方法的各个模块。

第六方面,本申请实施例提供一种数据读写装置,包括接收器和发送器;接收器用于,接收第一读写请求;第一读写请求包括待读写数据的第一逻辑地址;发送器用于,将第一读写请求发送给根元数据服务中心,使得根元数据服务中心从第一对应关系中查找第一逻辑地址对应的目标存储池的标识,并向目标存储池发送第一读写请求;其中,第一读写请求用于请求目标存储池从第二对应关系中查找第一逻辑地址对应的第一物理地址,针对第一物理地址所指示的存储空间执行读写操作;第一对应关系是多个数据的逻辑地址与多个存储池的标识之间的对应关系;第二对应关系是目标存储池中存储的多个数据的逻辑地址与物理地址之间的对应关系。

在一种可能的实现方式中,上述数据读写装置还包括:缓存;缓存,用于存储第一逻辑地址与目标存储池的标识之间的对应关系;接收器还用于,接收第二读写请求,第二读写请求中包含待读写数据的第一逻辑地址;发送器还用于,基于缓存中存储的第一逻辑地址与目标存储池的标识之间的对应关系,向目标存储池发送第二读写请求;其中,第二读写请求用于请求目标存储池读写待读写数据。

第七方面,本申请实施例提供一种数据读写装置,包括相互连接的接收器、存储器、处理器和发送器。接收器用于,接收第一客户端发送的第一读写请求;第一读写请求包括待读写数据的第一逻辑地址;处理器用于,从第一对应关系中查找第一逻辑地址对应的目标存储池的标识;存储器用于,存储的多个数据的逻辑地址与多个存储池的标识之间的第一对应关系;发送器用于,向目标存储池发送第一读写请求;其中,第一读写请求用于请求目标存储池从第二对应关系中查找第一逻辑地址对应的第一物理地址,针对第一物理地址所指示的存储空间执行读写操作;第二对应关系是目标存储池中存储的多个数据的逻辑地址与物理地址之间的对应关系。

第八方面,本申请实施例提供一种数据读写装置,包括存储器和处理器。存储器和处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。当处理器执行该计算机指令时,使得该数据读写装置执行如第一方面及其任一种可能的实现方式的数据读写方法;或者,当处理器执行该计算机指令时,使得该数据读写装置执行如第二方面及其任一种可能的实现方式的数据读写方法。

第九方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令。其中,当计算机指令在数据读写装置上运行时,使得该数据读写装置执行如第一方面及其任一种可能的实现方式的数据读写方法;或者,当计算机指令在数据读写装置上运行时,使得该数据读写装置执行如第二方面及其任一种可能的实现方式的数据读写方法。

第十方面,本申请提供一种计算机程序产品,该计算机程序产品包括计算机指令。其中,当计算机指令在数据读写装置上运行时,使得该数据读写装置执行如第一方面及其任一种可能的实现方式的数据读写方法;或者,当计算机指令在数据读写装置上运行时,使得该数据读写装置执行如第二方面及其任一种可能的实现方式的数据读写方法。

本申请中第三方面到第十方面及其各种实现方式的具体描述,可以参考第一方面或第二方面及其各种实现方式中的详细描述;并且,第三方面到第十方面及其各种实现方式的有益效果,可以参考第一方面或第二方面及其各种实现方式中的有益效果分析,此处不再赘述。

本申请的这些方面或其他方面在以下的描述中会更加简明易懂。

附图说明

图1为本申请实施例提供的数据读写方法所涉及的一种数据读写系统图;

图2为本申请实施例提供的一种数据读写方法流程图;

图3为本申请实施例提供的另一种数据读写方法流程图;

图4为本申请实施例提供的另一种数据读写方法流程图;

图5为本申请实施例提供的另一种数据读写方法流程图;

图6为本申请实施例提供的一种数据读写装置的结构示意图;

图7为本申请实施例提供的另一种数据读写装置的结构示意图;

图8为本申请实施例提供的另一种数据读写装置的结构示意图。

具体实施方式

以下,术语“第一”、“第二”和“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”或“第三”等的特征可以明示或者隐含地包括一个或者更多个该特征。

分布式存储系统是云服务中数据存储基础设施,其原理是将数据分散存储在多台计算设备上。随着计算技术的发展,分布式存储系统所承载的数据量和访问量也随之增加。为满足一些企业对业务性能以及管理的要求,分布式存储系统需要能够支持大规模集群部署,同时要易于管理。目前对分布式存储系统的规模进行扩展的方案中,在单个分布式存储集群中增加部署节点以扩展分布式存储系统的规模时,由于集群中用于管理元数据的计算设备(如元数据管理节点)的CPU、内存和网卡配置等硬件性能无法无限提升,导致该集群可扩展的规模有限,且存在单点故障问题;在分布式存储系统中设置多个独立的存储集群以扩展分布式存储系统规模时,各个集群之间互相隔离,导致无法跨集群读写数据。

基于此,本申请实施例提出了一种数据读写方法中,第一客户端将含有第一逻辑地址的第一读写请求发送给根元数据服务中心,根元数据服务中心基于第一对应关系查找第一逻辑地址所在的目标存储池,将第一读写请求发送给目标存储池,使得目标存储池从第一逻辑地址对应的第一物理地址所指示的存储空间中读写该待读写数据。

该方法中,由于根元数据服务中心存储了多个数据的逻辑地址与多个存储池的标识的第一对应关系,每个存储池存储的多个数据的逻辑地址与物理地址的第二对应关系,第二对应关系由各存储池的元数据管理节点各自管理,该双层元数据管理架构,使得第一客户端可以跨存储池读写数据,同时,每个存储池设置元数据管理节点,相比于元数据管理节点设置在根元数据服务中心而言,元数据管理节点管理的存储节点数量降低,有效提高了元数据管理节点的服务性能。另外,元数据管理节点将第二对应关系持久化存储在每个存储池的持久化存储节点中,各个存储池数据隔离,当任意存储池发生故障时,对其他存储池不造成影响,避免了单点故障问题。

上述数据读写方法使用的数据读写系统,在解决上述跨存储池读写数据、单点故障问题外,由于每个存储池是独立的存储集群,因此该系统可以不受硬件等限制增加存储池数量,满足了大规模扩展功能。

下面将结合附图对本申请实施例的实施方式进行详细描述。

请参考图1,其示出本申请实施例提供的数据读写方法所涉及的一种数据读写系统。如图1所示,该数据读写系统可以包括:多个客户端110、根元数据(root meta dataserver)中心120和与根元数据服务中心连接的多个存储池130。

客户端110是一个软件,可以安装在一个单独的设备上,也可以安装在存储池130中的任意存储设备上。客户端110可以直接或间接读/写存储池130中的数据。

根元数据服务中心120,用于存储该根元数据服务中心120连接的多个存储池的标识与多个数据的逻辑地址之间的第一对应关系。其中,一个存储池与该存储池的标识中存储的数据的逻辑地址之间具有第一对应关系。

示例性的,该根元数据服务中心120可以是服务器,平板电脑、桌面型、膝上型、笔记本电脑和上网本等计算设备。或者,可以是多个计算设备组成的集群。

存储池130是由多个存储设备两两连接组成的集群,存储设备可以称为存储节点,每个存储池是独立的存储集群。每个存储池130中存储有该存储池中的数据的逻辑地址与物理地址之间的第二对应关系。

多个存储池130之间按照业务领域或者区域进行数据隔离,每个存储池130对应一个或多个客户端110,与存储池130同一个业务领域或者同一个区域的客户端110为存储池130的本地客户端,也可以说,该存储池130为该客户端110的本地存储池。

每个存储池130的存储节点中,任意选取三个作为持久化存储节点,其中一个为主持久化存储节点,另外两个作为备持久化存储节点;任意选取三个作为元数据管理节点,其中一个为主元数据管理节点,另外两个作为备元数据管理节点。持久化存储节点用于对该存储池中多个数据的逻辑地址与物理地址之间的第二对应关系进行持久化存储,元数据管理节点共享该第二对应关系。持久化存储节点可以是安装了分布式etc目录(distributedetc directory,ETCD)的服务器;元数据管理节点可以是安装了元数据服务(meta dataserver,MDS)的服务器。

元数据:又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。在本申请中,根元数据服务中心存储的第一对应关系为一种元数据。持久化存储节点存储的第二对应关系也是一种元数据。

可选的,该数据读写系统还包括管控面140。管控面140用于对存储集群中的每个存储池进行集中管控并输出其状态。例如,管控面可以对存储池中的存储设备的运行状态进行监控管理,当存储设备发生异常时,可以及时通过输出设备输出异常信息。管控面可以是一个独立的设备或一个设备集群。也可以是存储池130中的存储设备上安装的一个软件。

可选的,该数据读写系统还包括上层应用150,上层应用150可以是任意读写数据的应用,例如:数据库应用(Oracle),上层应用150用于向客户端110下发读写请求。

下文对本申请实施例提供的数据读写方法进行说明:

请参考图2,为本申请实施例提供的一种数据读写方法流程图。如图2所示,该方法可以包括S101-S107。

S101:第一客户端接收第一读写请求。

第一读写请求可以是第一客户端接收上层应用发送的请求,也可以是接收用户在第一客户端发起的请求。

第一读写请求中包括:第一逻辑地址,可选的,还包括长度(length),第一逻辑地址是待读写数据的逻辑地址,长度是待读写数据的长度。

S102:第一客户端向根元数据服务中心发送第一读写请求。

根元数据服务中心存储有第一对应关系,第一对应关系是多个数据的逻辑地址与多个存储池的标识之间的对应关系。

每个存储池对应该存储池存储的多个数据的逻辑地址。

第一对应关系初始由人工在根元数据服务中心构建,后续当数据读写系统中增加或删减存储池,或者,在现有存储池中增加或删减逻辑地址时,该根元数据服务中心可以自动在第一对应关系中更新多个数据的逻辑地址与多个存储池之间的对应关系。

在一个示例中,如表1所示,表1中示出多个数据的逻辑地址(逻辑地址1~逻辑地址n)与多个存储池(存储池1~存储池n)的标识之间的第一对应关系。

表1

S103:根元数据服务中心接收到第一读写请求后,从第一对应关系中查找第一逻辑地址对应的目标存储池的标识。

在一个示例中,如表1所示的第一对应关系,根元数据服务中心可以查到第一逻辑地址对应的目标存储池的标识为1,即目标存储池为存储池1。

S104:根元数据服务中心向目标存储池发送第一读写请求。

在一个示例中,如表1所示的第一对应关系,目标存储池为存储池1,根元数据中向存储池1发送第一读写请求。

S105:目标存储池接收到第一读写请求后,从该目标存储池中存储的第二对应关系中查找第一逻辑地址对应的第一物理地址。

目标存储池中存储有第二对应关系,该第二对应关系是目标存储池的多个数据的逻辑地址与物理地址之间的对应关系。每个逻辑地址与物理地址一一对应。

第二对应关系由图1所示的每个存储池中的元数据管理节点所管理,当该存储池中增加或删减逻辑地址时,则该元数据管理节点可以自动更新第二对应关系中逻辑地址与物理地址的对应关系。

在一个示例中,如表2所示,表2中示出目标存储池中存储该目标存储池的多个数据的逻辑地址(逻辑地址1~逻辑地址m)与对应的物理地址之间的第二对应关系。

表2

在一个示例中,如表2所示的第二对应关系,目标存储池从该存储池中存储的第二对应关系中查找到的第一物理地址为物理地址a。

在一个示例中,结合图1,S105的具体操作过程包括,由于目标存储池中的元数据管理节点将第二对应关系持久化存储在该目标存储池的主持久化存储节点中,因此,元数据管理节点基于第一读写请求中的第一逻辑地址,从持久化存储节点中存储的第二对应关系中查找到第一逻辑地址对应的第一物理地址,该第一物理地址为目标存储池的多个存储节点中的一个存储节点的物理地址。

S106:目标存储池针对第一物理地址所指示的存储空间执行读写操作。

在一个示例中,如表2所示的第二对应关系,第一物理地址为物理地址a,目标存储池针对物理地址a所指示的存储空间执行读写操作。

S107:当第一读写请求为读请求时,目标存储池向第一客户端发送该待读数据。

对应的,第一客户端接收该待读数据。

本申请实施例提出的一种数据读写方法中,第一客户端将含有第一逻辑地址的第一读写请求发送给根元数据服务中心,根元数据服务中心基于第一对应关系查找第一逻辑地址所在的目标存储池,将第一读写请求发送给目标存储池,使得目标存储池从第一逻辑地址对应的第一物理地址所指示的存储空间中读写该待读写数据。该方法中,由于根元数据服务中心存储了多个数据的逻辑地址与多个存储池的标识的第一对应关系,每个存储池存储了的多个数据的逻辑地址与物理地址的第二对应关系,第二对应关系由各存储池的元数据管理节点各自管理,该双层元数据管理架构,使得第一客户端可以实现跨存储池读写数据,同时,每个存储池设置元数据管理节点,相比于元数据管理节点设置在根元数据服务中心而言,元数据管理节点管理的存储节点数量降低,有效提高了元数据管理节点的服务性能。另外,元数据管理节点将第二对应关系持久化存储在每个存储池的持久化存储节点中,各个存储池数据隔离,当任意存储池发生故障时,对其他存储池不造成影响,避免了单点故障问题。

基于上述方法,当第一客户端与第一存储池对应时,本申请还提出另一种数据读写方法,请参考图3,本申请还提出另一种数据读写方法,该方法可以包括S201-S212。

S201:第一客户端接收第一读写请求。第一读写请求包括:待读写数据的第一逻辑地址。

S202:第一客户端向第一存储池发送第一读写请求。

其中,第一客户端与第一存储池对应,即,第一存储池是第一客户端的本地存储池。

S203:第一存储池接收到第一读写请求后,从该第一存储池中存储的第二对应关系中查找第一逻辑地址对应的第一物理地址。

第一存储池中存储的第二对应关系是该第一存储池的多个数据的逻辑地址与物理地址的对应关系。

当第二对应关系中有第一逻辑地址对应的第一物理地址时,执行S204;

当第二对应关系中没有第一逻辑地址对应的第一物理地址时,执行S206。

S204:第一存储池针对第一物理地址所指示的存储空间执行读写操作。

S205:当第一读写请求为读请求时,第一存储池向第一客户端发送该待读数据。

对应的,第一客户端接收该待读数据。

S205结束后,本流程结束。

S206:第一存储池向第一客户端发送读写失败的消息。

读写失败消息用于指示待读写数据所要读写的存储空间不在第一存储池中。

S207:第一客户端响应于读写失败的消息,将第一读写请求发送给根元数据服务中心。

S208:根元数据服务中心接收到第一读写请求后,从第一对应关系中查找第一逻辑地址对应的目标存储池的标识。

S209:根元数据服务中心向目标存储池发送第一读写请求。

S210:目标存储池接收到第一读写请求后,从该目标存储池中存储的第二对应关系中查找第一逻辑地址对应的第一物理地址。

目标存储池存储的第二对应关系是该目标存储池中多个数据的逻辑地址与物理地址的对应关系。

S211:目标存储池针对第一物理地址所指示的存储空间执行读写操作。

S212:当第一读写请求为读请求时,目标存储池向第一客户端发送该待读数据。

对应的,第一客户端接收该待读数据。

由于第一客户端与第一存储池对应,第一存储池是第一客户端的本地存储池,针对数据本地化的特点,大多数情况下,第一客户端要读写的数据储存在第一存储池,因此,该方法中,第一客户端优先将第一读写请求发送给第一存储池,当待读写数据所要读写的存储空间不在第一存储池时再向根元数据服务中心发送第一读写请求。当待读写数据所要读写的存储空间在本地存储池时,不需要再经过根元数据服务中心,减少了待读写数据的读写IO路径长度,较大程度的提高数据在本地存储池读写的效率。可以理解的是,由于该方法没有修改第一读写请求中包含的内容,因此,该方法不需要修改第一客户端对上层应用的接口参数,该方法改动量较小,实现成本较低。

上述图1所示的方法中,当第一读写请求中还包括标识信息时,请参考图4,本申请还提出另一种数据读写方法,该方法可以包括S301-S311。

S301:第一客户端接收第一读写请求。第一客户端与第一存储池对应。第一读写请求包括:待读写数据的第一逻辑地址和标识信息。

标识信息用于指示待读写数据所要读写的存储空间是否在第一存储池,例如:标识信息可以是“异地”或“本地”,“异地”表示待读写数据所要读写的存储空间不在第一存储池中,“本地”表示待读写数据所要读写的存储空间在第一存储池中。

当标识信息用于指示待读写数据所要读写的存储空间在第一存储池时,执行S302;

当标识信息用于指示待读写数据所要读写的存储空间不在第一存储池时,执行S305。

当上层应用向第一客户端发送第一读写请求时,上层应用可以根据业务内容,在第一读写请求中标记业务中的待读写数据是在本地还是异地。当待读写数据所要读写的存储空间在第一存储池时,在第一读写请求中标记本地标识,当待读写数据所要读写的存储空间不在第一存储池时,在第一读写请求中标记异地标识。

在一个示例中,第一客户端与第一存储池对应,其中,第一存储池存储了银行业务数据,第二存储池中存储了餐饮业务数据,第三存储池中存储了房地产业务数据。当上层应用中需要通过第一客户端读写餐饮业务数据时,上层应用在第一读写请求中标记“异地”,表明该待读写数据所要读写的存储空间不在第一客户端对应的第一存储池中,该待读写数据所要读写的存储空间是第一客户端的异地存储池的存储空间。

S302:第一客户端向第一存储池发送第一读写请求。

S303:第一存储池接收到第一读写请求后,从该第一存储池中存储的第二对应关系中查找第一逻辑地址对应的第一物理地址。

S304:第一存储池针对第一物理地址所指示的存储空间执行读写操作。

S305:当第一读写请求为读请求时,第一存储池向第一客户端发送该待读数据。

对应的,第一客户端接收该待读数据。

S305结束后,本流程结束。

S306:第一客户端向根元数据服务中心发送第一读写请求。

根元数据服务中心存储有第一对应关系,第一对应关系是多个数据的逻辑地址与多个存储池的标识之间的对应关系。

S307:根元数据服务中心接收到第一读写请求后,从第一对应关系中查找第一逻辑地址对应的目标存储池的标识。

S308:根元数据服务中心向目标存储池发送第一读写请求。

S309:目标存储池接收到第一读写请求后,从该目标存储池中存储的第二对应关系中查找第一逻辑地址对应的第一物理地址。

S310:目标存储池针对第一物理地址所指示的存储空间执行读写操作。

S311:当第一读写请求为读请求时,目标存储池向第一客户端发送该待读数据。

对应的,第一客户端接收该待读数据。

该方法中,当第一读写请求是由上层应用发送,上层应用可以根据在第一读写请求中标记要业务中需要的待读写数据是在本地还是异地。第一客户端基于第一读写请求中的标识,选择将第一读写请求发送给第一客户端对应的本地存储池或者是根元数据服务中心。可以理解的是,该方法中第一客户端可以直接判断第一读写请求要读写的数据是否在本地存储池,当第一读写请求中待读写数据在本地存储池时,直接将第一读写请求发送给本地存储池,不需要再经过根元数据服务中心,减少了待读写数据的读写IO路径长度,较大程度的提高数据在本地存储池读写的效率。

可选的,当上述图2、图3和图4所示的第一客户端所在的设备中设置有缓存时,若第一客户端再次读写第一读写请求中的待读写数据,可以执行S401-S406。请参考图5,图5为本申请实施例提供的另一种数据读写方法流程图。

S401:第一客户端将第一逻辑地址与目标存储池的标识之间的对应关系存储在缓存中。

第一逻辑地址与目标存储池的标识的对应关系可以是由根元数据服务中心在第一对应关系中查找到第一逻辑地址对应的目标存储池后,发送发给第一客户端的。

或者,第一客户端在接收目标存储池发送的待读写数据之后,在缓存中存储第一逻辑地址与目标存储池的标识之间的对应关系。

在一个示例中,当第一客户端接收第一存储池发送的待读写数据之后,则第一客户端在缓存单元存储第一逻辑地址与第一存储池的标识的对应关系。

S402:第一客户端接收第二读写请求,第二读写请求中包含待读写数据的第一逻辑地址。

S403:第一客户端基于缓存中存储的第一逻辑地址与目标存储池的标识之间的对应关系,向目标存储池发送第二读写请求。

其中,第二读写请求用于请求目标存储池读写该待读写数据。

S404:目标存储池接收到第二读写请求后,从该目标存储池中存储的第二对应关系中查找第一逻辑地址对应的第一物理地址。

S405:目标存储池针对第一物理地址所指示的存储空间执行读写操作。

S406:当第二读写请求为读请求时,目标存储池向第一客户端发送该待读数据。

对应的,第一客户端接收该待读数据。

该方法中,第一客户端所在的设备设置了缓存,当第一客户端接收第二读写请求,当第二读写请求包含第一逻辑地址,即第二读写请求需要读写的数据与第一读写请求中要读写的数据一样时,可以直接基于缓存中存储的第一逻辑地址与目标存储池的标识的对应关系,将第二读写请求发送给目标存储池。可以理解的是,该方法中缓存可以将第一客户端读写过的数据所在的存储池的标识记录下来,当下次再次读写相同的数据时,可以不需要经过根元数据服务中心查询该存储池的标识,能够减少数据读写的IO路径长度,提高了读写效率。

上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术目标应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术目标可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例还提供一种数据读写装置200,例如第一客户端。如图6所示,为本申请实施例提供的一种数据读写装置200的结构示意图。

其中,数据读写装置200包括:接收单元201,用于接收第一读写请求;第一读写请求包括待读写数据的第一逻辑地址;发送单元202,用于将第一读写请求发送给根元数据服务中心,使得根元数据服务中心从第一对应关系中查找第一逻辑地址对应的目标存储池的标识,并向目标存储池发送第一读写请求;其中,第一读写请求用于请求目标存储池从第二对应关系中查找第一逻辑地址对应的第一物理地址,针对第一物理地址所指示的存储空间执行读写操作;第一对应关系是多个数据的逻辑地址与多个存储池的标识之间的对应关系;第二对应关系是目标存储池中存储的多个数据的逻辑地址与物理地址之间的对应关系。例如,结合图2,接收单元201用于方法实施例中的S101,发送单元202用于方法实施例中的S102。

可选的,第一客户端与第一存储池对应,第一读写请求还包括标识信息,标识信息用于指示待读写数据所要读写的存储空间是否在第一存储池;发送单元202具体用于,当标识信息用于指示待读写数据所要读写的存储空间不在第一存储池时,将第一读写请求发送给根元数据服务中心。例如,结合图4,发送单元202用于方法实施例中的S305。

可选的,发送单元202还用于,当标识信息用于指示待读写数据所要读写的存储空间在第一存储池时,将第一读写请求发送给第一存储池,以使得第一存储池读写待读写数据。例如,结合图4,发送单元202用于方法实施例中的S302。

可选的,第一客户端与第一存储池对应,将第一读写请求发送给根元数据服务中心之前,发送单元202还用于,将第一读写请求发送给第一存储池,以使得第一存储池读写待读写数据;接收单元201还用于,接收第一存储池发送的读写失败的消息;读写失败消息用于指示待读写数据所要读写的存储空间不在第一存储池中;发送单元202具体用于,响应于读写失败的消息,将第一读写请求发送给根元数据服务中心。例如,结合图3,发送单元202用于方法实施例中的S202和S206,接收单元201用于方法实施例中的S211。

可选的,第一客户端所在的设备设置有缓存,缓存储存有第一逻辑地址与目标存储池的标识之间的对应关系,接收单元201还用于,接收第二读写请求,第二读写请求中包含待读写数据的第一逻辑地址;发送单元202还用于,基于缓存中存储的第一逻辑地址与目标存储池的标识之间的对应关系,向目标存储池发送第二读写请求;其中,第二读写请求用于请求目标存储池读写待读写数据。例如,结合图5,接收单元201用于方法实施例中的S402和S406,发送单元202用于方法实施例中的S403。

可选的,接收单元201还用于,接收根元数据服务中心发送的第一逻辑地址与目标存储池的标识之间的对应关系,并储存在缓存中;或者,在接收目标存储池发送的待读写数据之后,在缓存中存储第一逻辑地址与目标存储池的标识之间的对应关系。例如,接收单元201用于方法实施例中的S401。

当然,本申请实施例提供的数据读写装置200包括但不限于上述模块。

本申请实施例还提供另一种数据读写装置300,例如根元数据服务中心。如图7所示,为本申请实施例提供的一种数据读写装置300的结构示意图。

其中,数据读写装置300包括:接收单元301,用于接收第一客户端发送的第一读写请求;第一读写请求包括待读写数据的第一逻辑地址;查找单元302,用于从第一对应关系中查找第一逻辑地址对应的目标存储池的标识;其中,第一对应关系是根元数据服务中心存储的多个数据的逻辑地址与多个存储池的标识之间的对应关系;发送单元303,用于向目标存储池发送第一读写请求;其中,第一读写请求用于请求目标存储池从第二对应关系中查找第一逻辑地址对应的第一物理地址,针对第一物理地址所指示的存储空间执行读写操作;第二对应关系是目标存储池中存储的多个数据的逻辑地址与物理地址之间的对应关系。例如,结合图2,接收单元301用于方法实施例中的S102,查找单元302用于方法实施例中的S103,发送单元303用于方法实施例中的S104。

可选的,发送单元303还用于,向第一客户端发送第一逻辑地址与目标存储池的标识之间的对应关系。例如,发送单元303用于方法实施例中的S401。

当然,本申请实施例提供的数据读写装置300包括但不限于上述模块。

图8是本申请实施例提供的另一种数据读写装置400的结构示意图,该数据读写装置400可以是如服务器、平板电脑、桌面型、膝上型、笔记本电脑和上网本等计算设备。如图8所示,该数据读写装置400包括处理器401、存储器402和网络接口403。

其中,处理器401包括一个或多个CPU。该CPU可以为单核CPU(single-CPU)或多核CPU(multi-CPU)。

存储器402包括但不限于是随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmableread-only memory,EPROM)、快闪存储器、或光存储器等。

可选地,处理器401通过读取存储器402中保存的指令实现本申请实施例提供的数据读写方法,或者,处理器401通过内部存储的指令实现本申请实施例提供的数据读写方法。在处理器401通过读取存储器402中保存的指令实现上述实施例中的方法的情况下,存储器402中保存实现本申请实施例提供的数据读写方法的指令。

网络接口403,包含发送器和接收器的一类装置,用于与其他设备或通信网络通信,可以是有线接口(端口),例如光纤分布式数据接口(fiber distributed datainterface,FDDI)、千兆以太网接口(gigabit ethernet,GE)。或者,网络接口403是无线接口。应理解,网络接口403包括多个物理端口,网络接口403用于通信等。

可选地,数据读写装置400还包括总线404,上述处理器401、存储器402、网络接口403通常通过总线404相互连接,或采用其他方式相互连接。

在实际实现时,上述数据读写装置200的接收单元201和发送单元202,数据读写装置300的接收单元301、查找单元302和发送单元303可以由处理器调用存储器中的计算机程序代码来实现。其具体的执行过程可参考上述方法部分的描述,这里不再赘述。

本申请另一实施例还提供一种数据读写装置,数据读写装置可以是如服务器、平板电脑、桌面型、膝上型、笔记本电脑和上网本等计算设备。该数据读写装置包括存储器和处理器。存储器和处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。其中,当处理器执行该计算机指令时,使得该数据读写装置执行上述方法实施例所示的数据读写方法的各个步骤。

本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当计算机指令在数据读写装置上运行时,使得数据读写装置执行上述方法实施例所示的数据读写方法流程中数据读写装置执行的各个步骤。

本申请另一实施例还提供一种芯片系统,该芯片系统应用于数据读写装置。该芯片系统包括一个或多个接口电路,以及一个或多个处理器。接口电路和处理器通过线路互联。接口电路用于从数据读写装置的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令。当数据读写装置处理器执行计算机指令时,数据读写装置执行上述方法实施例所示的数据读写方法流程中数据读写装置执行的各个步骤。

在本申请另一实施例中还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在数据读写装置上运行时,使得数据读写装置执行上述方法实施例所示的数据读写方法流程中数据读写装置执行的各个步骤。

上述实施例可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,上述实施例可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、服务器或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。

以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。

相关技术
  • 一种存储数据的读写方法、装置及相关设备
  • 一种共享内存数据读写的装置和方法
  • 一种对系统设置进行读写的智能编程实现方法及装置
  • 数据读写方法、读写装置及数据存储系统
  • 数据读写方法、读写装置及数据存储系统
技术分类

06120115612981