分布式存储系统的数据传输方法、装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种分布式存储系统的数据传输方法、装置。
背景技术
在分布式存储系统中,一个数据包由多片数据单元组成,每片数据单元至少多个备份,有写入请求时,必须要完成多份数据的写入。当用户向客户端发送请求,客户端向元数据服务器发送写请求数据块,元数据服务器接收到请求数据块,在磁盘中读出这多份请求数据块的各自的地址信息,然后只能按照既定的顺序依次访问多份请求数据块的各自的地址信息,造成数据传输速率效率不高。
发明内容
本发明的目的在于提供一种分布式存储系统的数据传输方法、装置,以改善现有的分布式存储系统的数据传输过程中,数据传输速率效率不高的问题。
本发明是这样实现的:
第一方面,本发明实施例提供了一种分布式存储系统的数据传输方法,应用于分布式存储系统,所述分布式存储系统包括数据传输装置以及元数据服务器,所述数据传输方法包括:
所述数据传输装置向所述元数据服务器发送存储地址分配请求指令,接收所述元数据服务器返回的存储节点的地址信息;
把欲传输的数据切分为若干个数据单元,把所述若干个所述数据单元依次添加到预先建立的缓冲队列中;
将所述缓存队列中的多个所述数据单元发送给所述存储节点,所述发送的多个所述的数据单元的数据量之和与滑动窗口的长度相同,所述滑动窗口的长度根据当前传输信道的吞吐量调节。
结合第一方面,本发明实施例提供了第一方面的第一种实施方式,其中,所述将所述缓存队列中的多个所述数据单元发送给所述存储节点,包括:
所述数据传输装置把所述缓冲队列中多个所述数据单元并行发送给所述存储节点。
结合第一方面或第一方面的第一种实施方式,本发明实施例提供了第一方面的第二种实施方式,其中,所述数据单元为数据页,所述把欲传输的数据切分为若干个数据单元,把所述若干个所述数据单元依次添加到预先建立的缓冲队列中,包括:
所述数据传输装置把欲传输的数据分为数据量相同的若干个数据页;
把若干个数据量相同的所述数据页依次添加到预先建立的缓冲队列中。
结合第一方面,本发明实施例提供了第一方面的第三种实施方式,其中,所述根据所述确认接受数调整所述滑动窗口的长度,包括:
当在预设的阀值时间内,每次传输的所述确认接受数等于本次传输的所述数据单元的数量时,增大所述滑动窗口的长度。
结合第一方面,本发明实施例提供了第一方面的第四种实施方式,其中,所述根据所述确认接受数调整所述滑动窗口的长度,包括:
当所述确认接受数小于本次传输的所述数据单元的数量时,减小所述滑动窗口的长度。
第二方面,一种分布式存储系统的数据传输装置,应用于分布式存储系统,所述数据传输装置,包括:
存储地址获得单元,用于向所述元数据服务器发送存储地址分配请求指令,接收所述元数据服务器返回的存储节点的地址信息;
数据切分单元,用于把欲传输的数据切分为若干个数据单元
数据加载单元,用于把所述若干个所述数据单元依次添加到预先建立的缓冲队列中
数据发送单元,用于将所述缓存队列中的多个所述数据单元发送给所述存储节点,所述发送的多个所述的数据单元的数据量之和与滑动窗口的长度相同,所述滑动窗口的长度根据当前传输信道的吞吐量调节。
结合第二方面,本发明实施例提供了第二方面的第一种实施方式,其中,所述数据发送单元,包括:
数据并行发送子单元,用于把所述缓冲队列中多个所述数据单元并行发送给所述存储节点。
结合第二方面或第二方面的第一种实施方式,本发明实施例提供了第二方面的第二种实施方式,其中,所述数据单元为数据页,所述数据切分单元,包括:
数据页切分子单元,用于把欲传输的数据分为若干个数据页;把若干个所述数据页依次添加到预先建立的缓冲队列中。
结合第二方面,本发明实施例提供了第二方面的第三种实施方式,其中,所述滑动窗口长度调节单元,包括:
滑动窗口长度增大子单元用于当在预设的阀值时间内,每次传输的所述确认接受数等于本次传输的所述数据单元的数量时,增大所述滑动窗口的长度。
结合第二方面,本发明实施例提供了第二方面的第四种实施方式,其中,所述根据所述确认接受数调整所述滑动窗口的长度,包括:
滑动窗口长度减小子单元,用于当所述确认接受数小于本次传输的所述数据单元的数量时,减小所述滑动窗口的长度。
本发明实施例提供的分布式存储系统的数据传输方法,通过把本系统中欲传输的数据切分为若干个数据单元,并把若干个数据单元依次加载到缓冲队列中,并使缓冲队列中处于发送状态的数据单元的数据量之和与当前滑动窗口的长度实时相等,从而使得缓冲队列中的数据单元处于连续发送的状态,极大的提高了数据传输效率,从而改善现有的分布式存储系统的数据传输过程中,数据传输速率效率不高的问题。
附图说明
图1示出了本发明实施例提供的一种分布式存储系统的数据传输方法流程图;
图2示出了本发明实施例提供的一种分布式存储系统的数据传输装置结构框图;
图3示出了本发明实施例提供的另一种分布式存储系统的数据传输装置结构框图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例提供的一种分布式存储系统的数据传输方法,所述方法应用于分布式存储系统,所述分布式存储系统包括数据传输装置、元数据服务器以及若干存储节点,所述方法包括:
步骤S101:所述数据传输装置向所述元数据服务器发送存储地址分配请求指令,接收所述元数据服务器返回的存储节点的地址信息。
当用户需要向本分布式存储系统存储数据时,为了获取到欲存储数据的存储节点的地址信息,本发明实施例中的数据传输装置需要先向元数据服务器发送存储地址分配请求指令,然后再获得元数据服务器返回的存储节点的地址信息。例如,在本分布式存储系统中有存储节点D1、D2、D3、D4等,则元数据服务器在收到存储地址分配请求指令后,根据欲存储数据的数据量大小,把欲存储数据的一部分存储于D1,另外的部分存储与D2,则元数据服务器则会把D1和D2的地址信息返回给本数据传输装置,然后本数据传输放置则根据该地址传输欲存储数据到既定的存储节点。
步骤S102:把欲传输的数据切分为若干个数据单元,把所述若干个所述数据单元依次添加到预先建立的缓冲队列中。
本步骤中的缓冲队列是一种逻辑上的数据结构,用于加载处于发送状态的数据单元。而其他未处于发送状态的数据单元则排列在缓冲队列外等待发送。而在实践过程中,为了便于数据单元的传输和数据单元的数据量统计,较佳的,可以把预传输的数据切分为数据量相同的若干个数据单元。而数据单元的实施方式也有多种,例如,可以是数据块,也可以是数据页。而数据单元的具体实施方式,可以根据信道的吞吐量等实际情况确定。
步骤S103:将所述缓存队列中的多个所述数据单元发送给所述存储节点,所述发送的多个所述的数据单元的数据量之和与滑动窗口的长度相同,所述滑动窗口的长度根据当前传输信道的吞吐量调节。滑动窗口机制用于使数据传输装置创建的缓冲队列在不用等待接受端的反馈信息的条件下,能够实时发送数据单元。
而在实践过程中,本实施例提供的滑动窗口是基于无连接的UDP(User Datagram Protocol,用户数据报协议)实现的逻辑管理结构,不仅处理速度更快,效率更高,而且对于同一个逻辑窗口的数据,可以多线程并发传输,大大提升处理效率。
例如,当把预发送的数据且切分为10个数据单元时,而此时滑动窗口的长度为5,则把依次排列的10个数据包中的前5个加载到缓冲队列中发送,而其他的5个数据包则在缓冲队列外等待发送,当缓冲队列中有1个数据包发送完成后,在滑动窗口机制作用下,把已经发送的数据包移出缓冲队列,而把在缓冲队列外的等待的数据包加载到缓冲队列中,以保证缓冲队列中处于发送状态的数据包的数据量之和和滑动窗口的当前长度相等,以利于缓冲队列中有数据单元实时发送,从而提高了数据传输效率。
而在实施过程中,滑动窗口的长度会随着传输信道的吞吐量而改变,因此,步骤S103还包括,所述数据传输装置获得所述存储节点返回的本次数据传输的确认接受数,根据所述确认接受数调整所述滑动窗口的长度,即可以增大或者减小滑动窗口的长度,在实施过程中,当预设的阀值时间内,每次传输的所述确认接受数等于本次传输的所述数据单元的数量时,增大所述滑动窗口的长度,而正大的长度可以根据实际情况确定,例如可以增大1/3或者1/2;而当所述确认接受数小于本次传输的所述数据单元的数量时,则减小所述滑动窗口的长度,减小的长度依然可以根据实际情况而确定。
本发明实施例提供的分布式存储系统的数据传输方法,通过把本系统中欲传输的数据切分为若干个数据单元,并把若干个数据单元依次加载到缓冲队列中,并使缓冲队列中处于发送状态的数据单元的数据量之和与当前滑动窗口的长度实时相等,从而使得缓冲队列中的数据单元处于连续发送的状态,极大的提高了数据传输效率,从而改善现有的分布式存储系统的数据传输过程中,数据传输速率效率不高的问题。
如图2所示,本发明实施例提供的分布式存储系统的数据传输装置,所述数据传输装置包括存储地址获得单元201、数据切分单元202、数据加载单元203以及数据发送单元204。其中,
所述存储地址获得单元201,用于向所述元数据服务器发送存储地址分配请求指令,接收所述元数据服务器返回的存储节点的地址信息。
所述数据切分单元202,用于把欲传输的数据切分为若干个数据单元。而在数据切分过程中,为了便于数据传输,较佳的,可以把预传输的数据切分为数据量相等的若干个数据单元,相应的,所述数据切分单元202包括数据等量切分子单元,用于把欲传输的数据切分为数据量相同的若干个数据单元。而数据单元的实施方式也有多种,例如,可以是数据块,也可以是数据页。较佳的,在本实施例中采用数据页作为数据单元,相应的,数据切分单元202还包括数据页切分子单元,用于把欲传输的数据分为若干个数据页。
所述数据加载单元203,用于把所述若干个所述数据单元依次添加到预先建立的缓冲队列中。
所述数据发送单元204,用于将所述缓存队列中的多个所述数据单元发送给所述存储节点,所述发送的多个所述的数据单元的数据量之和与滑动窗口的长度相同,所述滑动窗口用于确定每次所传输数据的大小,所述滑动窗口的长度不超过上一次传输带宽数据吞吐量的大小。
而在数据发送的过程中,滑动窗口的长度会随着传输信道的吞吐量而改变,而为了便于调节滑动窗口的长度,较佳的,数据发送单元204包括滑动窗口长度调节单元,用于获得所述存储节点返回的本次数据传输的确认接受数,根据所述确认接受数调整所述滑动窗口的长度。而滑动窗口的长度可以根据实际情况增大或者减小,则在所述滑动窗口长度调节单元中,包括滑动窗口长度增大子单元,用于当预设的阀值时间内,每次传输的所述确认接受数等于本次传输的所述数据单元的数量时,增大所述滑动窗口的长度;所述滑动窗口长度调节单元包括滑动窗口长度减小子单元,用于当所述确认接受数小于本次传输的所述数据单元的数量时,减小所述滑动窗口的长度。
本发明实施例提供的分布式存储系统的数据传输装置,通过把本系统中欲传输的数据切分为若干个数据单元,并把若干个数据单元依次加载到缓冲队列中,并使缓冲队列中处于发送状态的数据单元的数据量之和与当前滑动窗口的长度实时相等,从而使得缓冲队列中的数据单元处于连续发送的状态,极大的提高了数据传输效率,从而改善现有的分布式存储系统的数据传输过程中,数据传输速率效率不高的问题。
参见图3,本发明实施例还提供的另一种分布式存储系统的数据传输装置500,包括:处理器501,存储器502,总线503和通信接口504,所述处理器501、通信接口504和存储器502通过总线503连接;处理器501用于执行存储器502中存储的可执行模块,例如计算机程序。
其中,存储器502可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口504(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线503可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器502用于存储程序,所述处理器501在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器501中,或者由处理器501实现。
处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成上述方法的步骤。
需要说明的是,本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
需要说明的是,在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
需要说明的是,所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。