一种数据读取方法及组装装置
技术领域
本发明涉及一种数据读取方法及组装装置。
背景技术
现今,主要采用贯穿读出式(Look Through)进行数据读取,这种数据读取方法,在数据存储装置与请求装置之间设缓存装置,如:高速缓冲存储器Cache、断电即掉的非永久储存RAM等,请求装置发出的所有数据读取请求都会首先送到缓存装置,由缓存装置先行在自身查找,如果命中,则将查找到的数据返回给请求装置;如果未命中,则将数据读取请求传给数据存储装置,从数据存储装置中获得需要的数据,再将获得的数据返回给请求装置,发明人经研究发现,该种数据读取方法读取效率较低。
发明内容
本发明实施例的目的在于提供一种数据读取方法及组装装置,旨在提高数据读取效率。
本发明实施例是这样实现的:
第一方面,本发明实施例提供了一种数据读取方法,应用于数据读取系统,所述数据读取系统中包括请求装置、组装装置和数据存储装置,所述数据存储装置中包括多个存储节点,所述请求装置所需读取的数据由多个子数据构成,所述多个子数据分布式存储在所述多个存储节点中,所述方法包括:
所述组装装置获得所述请求装置发送的数据读取请求,所述数据读取请求中包括,构成所述请求装置所需读取的数据的所述多个子数据与所述多个存储节点的对应关系;
将所述数据读取请求拆分为多个子请求,所述多个子请求与所述多个子数据一一对应,所述多个子请求分别用于请求读取对应的子数据;
将每个所述子请求发送至该子请求对应的子数据所在的存储节点;
获得所述存储节点反馈的每个子请求的子请求反馈;
将获得的所有所述子请求反馈进行组装,获得所述数据读取请求的读取反馈;
将所述读取反馈发送至所述请求装置。
结合第一方面,本发明实施例提供了第一方面的第一种可能实施方式,其中,所述数据读取系统还包括缓存装置,所述将所述读取反馈发送至所述请求装置,包括:
将所述读取反馈发送至所述缓存装置,通过所述缓存装置将所述读取反馈发送至所述请求装置。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述组装装置获得的所述数据读取请求为物理页请求,所述组装装置获得所述请求装置发送的数据读取请求之后,还包括:将所述数据读取请求转换成逻辑页序列;
所述将所述数据读取请求拆分为多个子请求,所述多个子请求与所述多个子数据一一对应,所述多个子请求分别用于请求读取对应的子数据,包括:
将所述逻辑页序列拆分为多个子请求,所述多个子请求与所述多个子数据一一对应,所述多个子请求分别用于请求读取对应的子数据;
所述将所述读取反馈发送至所述缓存装置,通过所述缓存装置将所述读取反馈发送至所述请求装置,包括:
将获得的所述读取反馈转换成逻辑页,将所述逻辑页发送至所述缓存装置,通过所述缓存装置将所述逻辑页发送至所述请求装置。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第三种可能实施方式,其中,所述将每个所述子请求发送至该子请求对应的子数据所在的存储节点,包括:
采用滑动窗口将每个所述子请求发送至该子请求对应的子数据所在的存储节点;
所述获得所述存储节点反馈的每个子请求的子请求反馈,包括:
采用滑动窗口获得所述存储节点反馈的每个子请求的子请求反馈;
所述将所述读取反馈发送至所述缓存装置,通过所述缓存装置将所述读取反馈发送至所述请求装置,包括:
采用滑动窗口将所述读取反馈发送至所述缓存装置,采用滑动窗口通过所述缓存装置将所述读取反馈发送至所述请求装置。
结合第一方面,或第一方面的第一种、第二种或第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述将每个所述子请求发送至该子请求对应的子数据所在的存储节点之后,还包括:
针对每个子请求,获得所述存储节点的应答反馈,当获得所有所述子请求的应答反馈之后,向所述请求装置发送所述数据读取请求发送成功的信息;
当超过预设时限,未获得针对某一个子请求,所述存储节点的应答反馈时,重新将所述子请求发送至所述子请求用于读取的所述子数据对应的存储节点。
第二方面,本发明实施例提供了一种数据组装装置,应用于数据读取系统,所述数据读取系统中包括请求装置、数据存储装置和所述组装装置,所述数据存储装置中包括多个存储节点,所述请求装置所需读取的数据由多个子数据构成,所述多个子数据分布式存储在所述多个存储节点中,所述组装装置包括:
第一获得单元,用于获得所述请求装置发送的数据读取请求,所述数据读取请求中包括,构成所述请求装置所需读取的数据的所述多个子数据与所述多个存储节点的对应关系;
拆分单元,用于将所述第一获得单元获得的所述数据读取请求拆分为多个子请求,所述多个子请求与所述多个子数据一一对应,所述多个子请求分别用于请求读取对应的子数据;
第一发送单元,用于将所述拆分单元拆分的每个所述子请求发送至该子请求对应的子数据所在的存储节点;
第二获得单元,用于获得所述存储节点反馈的每个子请求的子请求反馈;
组装单元,用于将获得的所有所述子请求反馈进行组装,获得所述数据读取请求的读取反馈;
第二发送单元,用于将所述组装单元组装的所述读取反馈发送至所述请求装置。
结合第二方面,本发明实施例提供了第二方面的第一种可能实施方式,其中,所述数据读取系统还包括缓存装置,所述第二发送单元具体用于,将所述读取反馈发送至所述缓存装置,通过所述缓存装置将所述读取反馈发送至所述请求装置。
结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述第一获得单元获得的所述数据读取请求为物理页请求,所述组装装置还包括:
转换单元,用于在所述第一获得单元获得所述请求装置发送的数据读取请求之后,将所述数据读取请求转换成逻辑页序列;
所述拆分单元用于,将所述逻辑页序列拆分为多个子请求,所述多个子请求与所述多个子数据一一对应,所述多个子请求分别用于请求读取对应的子数据;
所述第二发送单元用于,将获得的所述读取反馈转换成逻辑页,将所述逻辑页发送至所述缓存装置,通过所述缓存装置将所述逻辑页发送至所述请求装置。
结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第三种可能实施方式,其中,所述第一发送单元用于,采用滑动窗口将每个所述子请求发送至该子请求对应的子数据所在的存储节点;
所述第二获得单元用于,采用滑动窗口获得所述存储节点反馈的每个子请求的子请求反馈;
所述第二发送单元用于,采用滑动窗口将所述读取反馈发送至所述缓存装置,采用滑动窗口通过所述缓存装置将所述读取反馈发送至所述请求装置。
结合第二方面,或第二方面的第一种、第二种或第三种可能的实施方式,本发明实施例提供了第二方面的第四种可能实施方式,其中,还包括:
第三获得单元,用于在所述第一发送单元将每个所述子请求发送至该子请求对应的子数据所在的存储节点之后,针对每个子请求,获得所述存储节点的应答反馈,当获得所有所述子请求的应答反馈之后,向所述请求装置发送所述数据读取请求发送成功的信息;
当超过预设时限,未获得针对某一个子请求,所述存储节点的应答反馈时,重新将所述子请求发送至所述子请求用于读取的所述子数据对应的存储节点。
本发明实施例提供的数据读取方法及组装装置,会将数据读取请求拆分为多个子请求,分别从数据存储装置中读取多份子数据,然后将读取的子数据进行组装,组装后再将读取反馈发送至请求装置,这种“多并发”的工作模式显著提高了数据读取效率。
进一步地,本发明实施例所提供的数据读取方法及组装装置,因将数据读取请求拆分为多个子请求,多个子请求分别用于请求读取对应的数据,缓存装置、数据存储装置、请求装置、组装装置均只负责本单元的工作,完成一个数据处理后立刻进行下一个数据处理,各自的动作不会受到其他装置的影响,这种“流水线”读取方式,整体工作效率远远高于现有的读取方式,优势十分明显。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应该看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例所提供的一种数据读取方法的流程图;
图2示出了本发明实施例所提供的另一种数据读取方法的流程图;
图3示出了本发明实施例所提供的一种应答反馈的流程图;
图4示出了本发明实施例所提供的一种数据组装装置的结构框图;
图5示出了本发明实施例所提供的另一种数据组装装置的结构框图;
图6示出了本发明实施例所提供的另一种数据组装装置的结构图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
现今,数据读取主要通过以下方式实现,在数据存储装置与请求装置之间设缓存装置,如:高速缓冲存储器Cache、断电即掉的非永久储存RAM等,需读取数据时,请求装置向缓存装置发送数据读取请求,当数据读取请求在缓存装置中命中,缓存装置立即将数据返回给请求装置;当数据读取请求在缓存装置中未命中,缓存装置则将数据读取请求发送至数据存储装置,数据存储装置读取数据后返回给缓存装置,缓存装置接收到数据存储装置返回的数据后,将数据返回给请求装置,发明人经研究发现,数据存储装置的容量远大于缓存装置的容量,数据存在缓存装置中的仅仅是很小一部分,当请求装置发出读取数据请求的时候,大部分数据是位于数据存储装置的,使得请求装置的读数据请求在缓存装置中的命中率非常低,因而,需要大量地从数据存储装置中读取数据,由于从数据存储装置中读取数据的效率非常低,因而使得整体数据读取效率较低。
基于上述研究,如图1所示,本发明实施例公开了一种数据读取方法,应用于数据读取系统,所述数据读取系统中包括请求装置、组装装置和数据存储装置,所述数据存储装置中包括多个存储节点,所述请求装置所需读取的数据由多个子数据构成,所述多个子数据分布式存储在所述多个存储节点中,所述方法包括:
步骤S100:所述组装装置获得所述请求装置发送的数据读取请求,所述数据读取请求中包括,构成所述请求装置所需读取的数据的所述多个子数据与所述多个存储节点的对应关系;
其中,考虑到若一次读取一个较大的数据,必然会导致读取时间较长,若将需读取的一个较大的数据拆分为多个子数据,分为多个线程同时进行读取,则能大大缩短读取时间,为了实现这一目的,本实施例中,请求装置所需读取的数据存储时采用的是分布式存储,在存储时,请求装置所需读取的数据分布式存储在数据存储装置的多个存储节点上,例如:请求装置所需读取的数据由多个子数据构成,多个子数据分布式存储在所述多个存储节点中,例如:多个子数据和多个存储节点的数量相同,多个子数据一对一地存储在多个存储节点中,如此设计后,读取时,亦需从存储装置的各个存储节点上去读取构成请求装置所需读取的数据的多个子数据。需说明的是,存储在各个存储节点上的子数据大小可以是固定的,也可以不是固定的。
由于请求装置所需读取的数据由多个子数据构成,多个子数据分别存储在所述多个存储节点中,因而,为了确保数据读取的准确性,数据读取请求中需包括构成所需读取的数据的多个子数据的存储位置,包括各个子数据分别存储在哪个存储节点中,即多个子数据与多个存储节点的对应关系,例如:可在数据读取请求的元数据中存储多个子数据与多个存储节点的对应关系,根据实际情况,还可在元数据中存储各个子数据的长度、资源查找等信息。
步骤S101:将所述数据读取请求拆分为多个子请求,所述多个子请求与所述多个子数据一一对应,所述多个子请求分别用于请求读取对应的子数据;
其中,为了确保后续读取效率,将数据读取请求拆分为与构成请求装置所需读取的数据的多个子数据一一对应的子请求,每个子请求用于读取一个子数据,如此,便将读取一个较大的数据的数据读取请求拆分为了多个用于读取多个较小的子数据的子请求,将一个线程的工作分为了多个子线程的工作。
步骤S102:将每个所述子请求发送至该子请求对应的子数据所在的存储节点;
根据步骤S100中,数据读取请求的元数据中存储有需读取的每个子数据分别对应的存储节点位置,将用于读取子数据的子请求发送至该子数据存储的存储节点,例如:已知子数据A存储在存储节点A中,那么,便将读取子数据A的子请求发送至存储节点A。
为了避免传输拥堵,本实施例中,优选采用滑动窗口将子请求发送至子请求用于读取的子数据对应的存储节点。
步骤S103:获得所述存储节点反馈的每个子请求的子请求反馈;
当子请求发送到存储节点后,存储节点读取该子请求对应的子数据,并将读取的子数据进行发送。
为了避免传输拥堵,本实施例中,优选采用滑动窗口获得存储节点的子请求反馈。
步骤S104:将获得的所有所述子请求反馈进行组装,获得所述数据读取请求的读取反馈;
组装装置接收到针对每一个子请求的请求反馈后,获得了构成请求装置所需读取的数据的所有子数据,若请求装置最终获得的是多个子请求反馈,反馈数据较为散乱,不利于请求装置识别,因而,优选先将多个子请求反馈组装为(针对被拆分的数据读取请求)完整的读取反馈,将完整的读取反馈进行发送。例如:一个读取100Mb数据的数据读取请求,被拆分为5个20Mb的数据读取子请求,针对5个中每一个20Mb的数据读取子请求,数据存储装置均会返回一个子请求反馈,组装装置会将该5子请求反馈组装为针对读取100Mb数据的数据读取请求的一个读取反馈,进行发送。其中,组装装置只会将针对同一个数据读取请求拆分成的多个子请求的子请求反馈进行组装,不会将不同数据读取请求拆分成的多个子请求的请求反馈进行组装,实现这一技术效果的方法有多种,例如:在同一个数据读取请求拆分成的多个子请求上标上相同的标志,组装装置仅将存在相同标志的子请求反馈进行组装。
步骤S105:将所述读取反馈发送至所述请求装置。
其中,由于缓存装置进行数据收发的效率较高,能有效提高数据收发效率,因而,如图2所示,本实施例中,组装装置组装后的读取反馈,优选先发送至缓存装置,再通过缓存装置发送至请求装置,从而在将一个线程的工作分为了多个子线程的工作提高了数据读取效率的基础上,进一步提高了读取反馈的发送效率,从而从整体上显著提高了请求装置获得读取反馈的效率。
为了使得本发明实施例的方案更为明了,设请求装置为用户端、缓存装置为Cache,组装装置为组装器,进行以下举例说明:
用户端发送一个100Mb的数据读取请求;组装器收到用户端的数据读取请求后,将数据读取请求拆分成若干个子请求,拆分子请求数量可配置,例如100Mb的数据读取请求,可拆分成100个1Mb的数据读取子请求,具体拆分方式与所需读取的数据的分布式存储对应,例如:所需读取的数据存储时被拆分为100个1Mb的子数据分别存储在存储节点中,那么,读取数据时,亦将数据读取请求拆分为100个1Mb的子请求,分别去各存储节点中读取子数据;组装器将数据读取请求拆分后,将每个子请求分别发送到对应的存储节点,例如:子请求A用于读取子数据A,子数据A存储在存储节点A中,那么,读取数据时,需将子请求A发送到存储节点A中,存储节点A接收到组装器下发的子请求A后,立即读取子数据A,并将子请求反馈(子数据A)发送至组装器,其余子请求处理方式与上述相同,组装器在接收到所有子请求的子请求反馈后,将各子请求反馈组装为数据读取请求所需的读取反馈(所需读取的完整的数据),将读取反馈发送至Cache,通过Cache将读取反馈发送至用户端。
为了避免传输拥堵,本实施例中,优选采用滑动窗口将读取反馈发送至缓存装置,采用滑动窗口通过缓存装置将读取反馈发送至请求装置。
在上述基础上,若请求装置与存储装置相互“不识别”,例如:请求装置发送的数据读取请求无法被数据存储装置中的各存储节点识别,各存储节点返回的数据请求装置亦无法识别,则组装装置还需进行“格式转换”,例如:数据存储装置的各存储节点能够识别的是逻辑页,请求装置发送的数据读取请求要求的是读取物理数据页信息,那么组装装置获得请求装置发送的数据读取请求之后,还需将数据读取请求转换成逻辑页序列;将逻辑页序列拆分为多个子请求。各存储节点接收到各子请求后,返回的是读取的物理数据页信息,组装装置接收到存储节点反馈回的物理数据页信息后,需将物理数据页信息转换成逻辑页数据,转换的目的是因为,用户看到的云存储数据都是逻辑页数据,例如:逻辑(Logical Block Address,LBA)地址信息。
为了确保所有的子请求均发送至对应的存储节点,并且都被存储节点所接受,避免因某个子请求请求失败造成数据读取失败,如图3所示,本实施例中,优选针对每个子请求,获得所述子请求用于请求读取的子数据对应的存储节点,将所述子请求发送至所述子请求用于读取的所述子数据对应的存储节点之后,还包括:步骤S200:针对每个子请求,获得所述存储节点的应答反馈,步骤S202:当获得所有所述子请求的应答反馈之后,向所述请求装置发送所述数据读取请求发送成功的信息;步骤S201:当超过预设时限,未获得针对某一个子请求,所述存储节点的应答反馈时,重新将所述子请求发送至所述子请求用于读取的所述子数据对应的存储节点。
为了使得本发明实施例的方案更为明了,设缓存装置为Cache,组装装置为组装器,每一个子请求为TASK,进行以下举例说明:
请求装置向数据存储装置发送一个数据读取请求,该数据读取请求包含“请求地址”和“读取长度”等信息;
组装器接收到数据读取请求后,跟据物理页元数据、承载节点等信息,将数据读取请求中的“请求地址”和“读取长度”等信息转换成逻辑页序列;
根据存储节点数量将逻辑页序列拆分成多个TASK,每一个TASK对应一个存储节点,例如:数据存储装置(云存储平台)总共有n个存储节点,分别是N(1)、N(2)…N(n),那么组装器将转换后的逻辑页序列拆分成n个TASK,分别是T(1)、T(2)…T(n),每个TASK对应一个存储节点;
分别将每一个包含子逻辑页序列的TASK发送到对应的存储节点中,以读取需要的子数据;
存储节点接受到读请求后,给TASK应答,表示已接收到消息,当所有存储节点都应答后,返回给请求装置一个确认应答(Acknowledgement,)ACK;
存储节点接收到TASK后,每一个存储节点开始读取物理页数据并进行反馈,在反馈过程中,组装器和存储节点都包含对应的缓冲,在缓冲中采用“滑动窗口+流水线”方式传输物理页数据,在传输中,存储节点作为发送方,组装器作为接收方;
组装器接收到存储节点返回的物理页数据后,将物理页转换成逻辑页,云存储用户看到的是逻辑页信息,即逻辑LBA地址;
组装器将转换后的逻辑页发送给Cache,发送过程也是采用“滑动窗口+流水线”方式,组装器作为发送方,Cache作为接收方,每一次发送的数据大小根据滑动窗口大小动态调整;
当Cache接收到从组装器传输的数据,开始把接收到的数据传输给请求装置,同样采用“滑动窗口+流水线”方式,Cache作为发送方,请求装置作为接收方;
当请求装置需要的所有数据都读取完成后,返回读取成功信息,读取任务结束。
本发明实施例中,考虑到缓存装置的容量十分有限,远小于数据存储装置的容量,优选将缓存装置仅作为读取反馈的“中转站”,即,本发明实施例中,不在缓存装置中预先存储请求装置所需数据,请求装置所需数据全部都由组装装置根据数据读取请求从数据存储装置中获得、并发送给缓存装置,再由缓存装置将组装装置发送的数据转发给请求装置,这种设计方式,使得缓存装置反应更快,可以更为快速地获得、发送数据读取反馈,从而使得数据读取效率更高。当然,根据实际需求,在不对缓存装置反应速度造成过大影响的前提下,亦可选择在缓存装置中存储部分请求装置所需数据,获得数据读取请求后,先在缓存装置中进行查找,缓存装置中没有再通过组装装置到数据存储装置中查找。
本发明实施例中,巧妙地将一个“大”的数据读取请求拆分为多个“小”的子请求,将原本的一个读取线程拆分为了多个子读取线程,由多个子读取线程进行读取,且获得的读取反馈会先发送至Cache,通过Cache发送至请求装置,这种“多并发”的工作模式显著提高了数据读取效率,有效缩短了读取时间。本发明实施例实现了“流水线”读取,即缓存装置、数据存储装置、请求装置、组装装置均只负责本单元的工作,完成一个数据处理后立刻进行下一个数据处理,各自的动作不会受到其他装置的影响,这种“流水线”读取方式,整体工作效率远远高于现有的读取方式,优势十分明显。
实施例2
如图4所示,本发明实施例公开了一种数据组装装置,所述装置的实现原理和效果同前述方法实施例,本发明实施例未述及之处,可参见前述方法实施例相应部分。所述数据组装装置应用于数据读取系统,所述数据读取系统中包括请求装置、数据存储装置和所述组装装置,所述数据存储装置中包括多个存储节点,所述请求装置所需读取的数据由多个子数据构成,所述多个子数据分布式存储在所述多个存储节点中,所述组装装置包括:第一获得单元300,用于获得所述请求装置发送的数据读取请求,所述数据读取请求中包括,构成所述请求装置所需读取的数据的所述多个子数据与所述多个存储节点的对应关系;拆分单元301,用于将所述第一获得单元300获得的所述数据读取请求拆分为多个子请求,所述多个子请求与所述多个子数据一一对应,所述多个子请求分别用于请求读取对应的子数据;第一发送单元302,用于将所述拆分单元301拆分的每个所述子请求发送至该子请求对应的子数据所在的存储节点;第二获得单元303,用于获得所述存储节点反馈的每个子请求的子请求反馈;组装单元304,用于将获得的所有所述子请求反馈进行组装,获得所述数据读取请求的读取反馈;第二发送单元305,用于将所述组装单元304组装的所述读取反馈发送至所述请求装置。
其中,由于缓存装置进行数据收发的效率较高,能有效提高数据收发效率,因而,本实施例中,第二发送单元305优选先将组装单元304组装后的读取反馈发送至缓存装置,再通过缓存装置发送至请求装置,从而在将一个线程的工作分为了多个子线程的工作提高了数据读取效率的基础上,进一步提高了读取反馈的发送效率,从而从整体上显著提高了请求装置获得读取反馈的效率。
为了避免传输拥堵,本实施例中,优选第一发送单元302用于,采用滑动窗口将每个所述子请求发送至该子请求对应的子数据所在的存储节点;第二获得单元303用于,采用滑动窗口获得所述存储节点反馈的每个子请求的子请求反馈;第二发送单元305用于,采用滑动窗口将所述读取反馈发送至所述缓存装置,采用滑动窗口通过所述缓存装置将所述读取反馈发送至所述请求装置。
在上述基础上,若请求装置与存储装置相互“不识别”,例如:请求装置发送的数据读取请求无法被数据存储装置中的各存储节点识别,各存储节点返回的数据请求装置亦无法识别,则组装装置还需进行“格式转换”,例如:数据存储装置的各存储节点能够识别的是逻辑页,请求装置发送的数据读取请求要求的是读取物理数据页信息,那么,如图5所示,组装装置还需包括转换单元306,用于在所述第一获得单元300获得所述请求装置发送的数据读取请求之后,将所述数据读取请求转换成逻辑页序列。相应地,拆分单元301用于,将所述逻辑页序列拆分为多个子请求,所述多个子请求与所述多个子数据一一对应,所述多个子请求分别用于请求读取对应的子数据。各存储节点接收到各子请求后,返回的是读取的物理数据页信息,因而,第二发送单元305接收到存储节点反馈回的物理数据页信息后,需将物理数据页信息转换成逻辑页数据,转换的目的是因为,用户看到的云存储数据都是逻辑页数据,例如:逻辑(Logical Block Address,LBA)地址信息,因而,所述第二发送单元305用于,将获得的所述读取反馈转换成逻辑页,将所述逻辑页发送至所述缓存装置,通过所述缓存装置将所述逻辑页发送至所述请求装置。
为了确保所有的子请求均发送至对应的存储节点,并且都被存储节点所接受,避免因某个子请求请求失败造成数据读取失败,本实施例中,组装装置优选包括第三获得单元,用于在所述第一发送单元302将每个所述子请求发送至该子请求对应的子数据所在的存储节点之后,针对每个子请求,获得所述存储节点的应答反馈,当获得所有所述子请求的应答反馈之后,向所述请求装置发送所述数据读取请求发送成功的信息;当超过预设时限,未获得针对某一个子请求,所述存储节点的应答反馈时,重新将所述子请求发送至所述子请求用于读取的所述子数据对应的存储节点。
本发明实施例中,巧妙地将一个“大”的数据读取请求拆分为多个“小”的子请求,将原本的一个读取线程拆分为了多个子读取线程,由多个子读取线程进行读取,且获得的读取反馈会先发送至Cache,通过Cache发送至请求装置,这种“多并发”的工作模式显著提高了数据读取效率,有效缩短了读取时间。本发明实施例实现了“流水线”读取,即缓存装置、数据存储装置、请求装置、组装装置均只负责本单元的工作,完成一个数据处理后立刻进行下一个数据处理,各自的动作不会受到其他装置的影响,这种“流水线”读取方式,整体工作效率远远高于现有的读取方式,优势十分明显。
需要说明的是,在本申请所提供的几个实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
参见图6,本发明实施例还提供的另一种组装装置,包括:处理器400,存储器404,总线402和通信接口403,所述处理器400、通信接口403和存储器404通过总线402连接;。
其中,存储器404可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口403(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
处理器400用于执行存储器404中的可执行模块,例如计算机程序401;处理器400通过通信接口403接收数据流;
总线402可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器404用于存储程序401,所述处理器400在接收到执行指令后,执行所述程序401,前述本发明实施例任一实施例揭示的过程定义的装置所执行的方法可以应用于处理器400中,或者由处理器400实现。
在具体实现中,程序401可以包括程序代码,所述程序代码包括计算机操作指令和算法等;
处理器400可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器400中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器400可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器404,处理器400读取存储器404中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的进行装置中的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。