分布式存储系统中服务质量保障方法、控制节点及系统与流程

文档序号:16692405发布日期:2019-01-22 19:01阅读:203来源:国知局
分布式存储系统中服务质量保障方法、控制节点及系统与流程

本发明涉及分布式数据存储技术领域,尤其涉及分布式存储系统中服务质量保障方法、控制节点及系统。



背景技术:

服务质量(qualityofservice,qos),顾名思义,是为用户提供的“服务质量”,有时也称为服务等级(servicelevelagreement,sla)。存储系统在将i/o请求下发到存储节点前需要进行调度或流控的处理,从而保证不同应用i/o的服务质量不同,qos现在流行的主要衡量指标有上限流控(limit)、下限保障(reservation)、比例保障(share)等。简而言之,qos就是保障应用的性能,将有限的存储系统处理能力供用户进行合理的分配。

dmclock算法是一种细粒度的qos控制算法,能够支持下限保障、上限流控和比例保障三种特性。然而dmclock算法为在分布式存储系统中针对每个请求的tag计算,都需要获取其他存储节点上处理请求个数,存储节点之间通信的开销大。



技术实现要素:

本发明实施例提供了一种分布式存储系统中服务质量保障方法、控制节点及系统,能够降低网络通信开销。

第一方面,本发明实施例提供了一种分布式存储系统中服务质量保障方法,应用于控制节点侧,该方法包括:控制节点根据目标存储节点在单位时间内剩余的输入输出i/o请求个数、存储资源在单位时间内距离达成下限保障所需的i/o请求个数以及存储资源在单位时间内需要目标存储节点处理的i/o请求个数获得目标存储节点在单位时间内能够为存储资源处理的下限i/o请求个数。其中,分布式存储系统包含提供存储资源的n个存储节点。目标存储节点为n个存储节点中的一个,其中,n为正整数。控制节点根据目标存储节点在单位时间内能够为存储资源处理的下限i/o请求个数为存储资源分配在目标存储节点上且在单位时间内的下限令牌数。控制节点将下限令牌数发送给目标存储节点。

实施第一方面所描述的方法,对分布式存储系统中每一个存储节点,可以由控制节点为该存储节点分配存储资源在该存储节点上的令牌,因此该存储节点只需要按照控制节点分配的令牌相应调度并处理具有令牌的i/o请求,不具有令牌的i/o请求则该存储节点对其暂不处理。与现有技术中针对每个请求的tag计算,都需要获取其他节点上处理请求个数的信息不同,本发明实施例在计算存储资源在目标存储节点上的令牌数时,只需要关注目标存储节点的能力以及存储资源对目标存储节点的需求即可,无需关注其他存储节点的能力,因此可以降低网络通信开销,在存储节点规模较大的情况下,通信开销的降低会更加显著;同时也会降低计算的复杂度。

可选的,控制节点根据目标存储节点在单位时间内剩余的i/o请求个数、存储资源在单位时间内距离达成上限流控所需的i/o请求个数、存储资源在单位时间内需要目标存储节点处理的i/o请求个数以及目标存储节点在单位时间内能够为存储资源处理的下限i/o请求个数获得目标存储节点在单位时间内能够为存储资源处理的上限i/o请求个数。控制节点根据目标存储节点在单位时间内能够为存储资源处理的上限i/o请求个数为存储资源分配在目标存储节点上且在单位时间内的上限令牌数。控制节点将上限令牌数依次发送给目标存储节点。

可选的,控制节点根据目标存储节点在单位时间内剩余的输入输出i/o请求个数、存储资源在单位时间内距离达成下限保障所需的i/o请求个数以及存储资源在单位时间内需要目标存储节点处理的i/o请求个数获得目标存储节点在单位时间内能够为存储资源处理的下限i/o请求个数,包括:控制节点根据最大流算法、目标存储节点在单位时间内剩余的输入输出i/o请求个数、存储资源在单位时间内距离达成下限保障所需的i/o请求个数以及需要目标存储节点在单位时间内处理的i/o请求个数计算目标存储节点在单位时间内能够为存储资源处理的下限i/o请求个数。

可选的,控制节点根据目标存储节点在单位时间内剩余的i/o请求个数、存储资源在单位时间内距离达成上限流控所需的i/o请求个数、存储资源在单位时间内需要目标存储节点处理的i/o请求个数以及目标存储节点在单位时间内能够为存储资源处理的下限i/o请求个数获得目标存储节点在单位时间内能够为存储资源处理的上限i/o请求个数,包括:控制节点计算第一数值,第一数值为第二数值与第三数值之差,第二数值为所述存储资源在单位时间内距离达成上限流控所需的i/o请求个数,所述第三数值为所述n个存储节点在单位时间内能够为所述存储资源处理的下限i/o请求个数之和;控制节点计算第四数值,第四数值为第五数值与第三数值之差,第五数值为所述目标存储节点在单位时间内剩余的i/o请求个数;控制节点计算第六数值,第六数值为第七数值与第三数值之差,第七数值为所述存储资源在单位时间内需要目标存储节点处理的i/o请求个数;控制节点根据第一数值、第四数值和第六数值获得目标存储节点在单位时间内能够为存储资源处理的上限i/o请求个数。

可选的,控制节点根据目标存储节点在单位时间内能够为存储资源处理的上限i/o请求个数为存储资源分配在目标存储节点上且在单位时间内的上限令牌数,包括:控制节点根据如下公式为存储资源分配在目标存储节点上且在单位时间内的超额分配值;存储资源在目标存储节点上且在单位时间内的其中,所述第八数值为所述目标存储节点在单位时间内能够为所述存储资源处理的上限i/o请求个数,所述第九数值为所述n个存储节点在单位时间内能够为所述存储资源处理的上限i/o请求个数之和,所述第十数值为所述存储资源在单位时间内需要所述n个存储节点处理的i/o请求个数之和;所述控制节点根据如下公式为所述存储资源分配所述存储资源在所述目标存储节点上且在单位时间内的上限令牌数:所述存储资源在所述目标存储节点上且在单位时间内的上限令牌数为所述存储资源在所述目标存储节点上且在单位时间内的超额分配值与所述存储资源在所述目标存储节点上且在单位时间内的下限令牌数之和。

可选的,控制节点根据所述第一数值、所述第四数值和所述第六数值获得所述目标存储节点在单位时间内能够为所述存储资源处理的上限i/o请求个数,包括:

所述控制节点根据最大流算法、所述第一数值、所述第四数值和所述第六数值计算所述目标存储节点在单位时间内能够为所述存储资源处理的上限i/o请求个数。

可选的,上述方法还包括:控制节点从目标存储节点接收目标存储节点在单位时间内剩余的i/o请求个数以及存储资源在单位时间内需要目标存储节点处理的i/o请求个数。

第二方面,本发明实施例提供了一种分布式存储系统中服务质量保障方法,应用于目标存储节点侧,分布式存储系统包含提供存储资源的n个存储节点。n个存储节点包括目标存储节点,n为正整数,该方法包括:目标存储节点从控制节点接收第一存储资源在目标存储节点上且在单位时间内的下限令牌数。目标存储节点获取i/o请求队列中的第一i/o请求,第一i/o请求为第一存储资源需要目标存储节点处理的i/o请求。若第一存储资源在目标存储节点上的下限令牌数大于0,则目标存储节点处理第一i/o请求。

实施第二方面所描述的方法,可以由控制节点为各个目标存储节点分配存储资源在各个目标存储节点上的令牌,因此目标存储节点只需要按照控制节点分配的令牌相应调度并处理具有令牌的i/o请求,不具有令牌的i/o请求则目标存储节点对其暂不处理,能够提高控制精度、降低网络通信开销以及计算开销。

可选的,上述方法还包括:若第一存储资源以及除第一存储资源以外的其他存储资源在目标存储节点上的下限令牌数均等于零,则目标存储节点获取i/o请求队列中的第二i/o请求,第二i/o请求为第二存储资源需要目标存储节点处理的i/o请求。若第二存储资源在目标存储节点上的上限令牌数大于0,则目标存储节点处理第二i/o请求,上限令牌数为目标存储节点从控制节点接收的。

可选的,目标存储节点从控制节点接收第一存储资源在目标存储节点上且在单位时间内的下限令牌数之前,还包括:目标存储节点向控制节点发送目标存储节点在单位时间内剩余的i/o请求个数以及第一存储资源在单位时间内需要目标存储节点处理的i/o请求个数,目标存储节点在单位时间内剩余的i/o请求个数以及第一存储资源在单位时间内需要目标存储节点处理的i/o请求个数用于控制节点为第一存储资源分配第一存储资源在目标存储节点上且在单位时间内的令牌数。

第三方面,本发明实施例提供了一种控制节点,该控制节点包括用于实现上述第一方面或第一方面任一种可能的实施方式描述的单元。单元可以通过硬件实现,例如,处理器等,也可以通过硬件执行相应的软件实现,也可以由软件实现。

第四方面,本发明实施例提供了一种存储节点,具有实现上述第二方面或第二方面任一种可能的实施方式描述的单元。单元可以通过硬件实现,例如,处理器等,也可以通过硬件执行相应的软件实现,也可以由软件实现。

第五方面,本发明实施例提供了一种控制节点,用于执行第一方面描述的分布式存储系统中服务质量保障方法。所述控制节点包括:处理器和通信接口,所述处理器和所述通信接口通信,所述处理器用于执行第一方面所提供的方法,或者第一方面可能的实施方式中的任意一种所提供的方法。

第六方面,本发明实施例提供了一种存储节点,用于执行第二方面描述的分布式存储系统中服务质量保障方法。所述控制节点可包括:处理器和通信接口,所述处理器和所述通信接口通信,所述处理器用于执行第二方面所提供的方法,或者第二方面可能的实施方式中的任意一种所提供的方法。

第七方面,本发明实施例提供了一种分布式存储系统,包括控制节点和存储节点,其中,控制节点用于执行第一方面所提供的方法,或者第一方面可能的实施方式中的任意一种所提供的方法。

第八方面,本发明实施例提供一种可读存储介质,所述可读存储介质中存储有指令,当所述可读存储介质中存储的指令在设备上运行时,使得所述设备执行第一方面或第二方面所述的分布式存储系统中服务质量保障方法。

第九方面,本发明实施例提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面或第二方面所述的分布式存储系统中服务质量保障方法。

附图说明

为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。

图1是本发明实施例提供的一种分布式存储系统的架构示意图;

图2是本发明实施例提供的分布式存储系统中服务质量保障方法的原理示意图;

图3是本发明实施例提供的计算机设备示意图;

图4是本发明实施例提供的一种分布式存储系统中服务质量保障方法的流程图;

图5是本发明实施例提供的有向图的示意图;

图6是本发明实施例提供的一种分布式存储系统、控制节点及存储节点的结构框图。

具体实施方式

下面结合本发明实施例中的附图对本发明实施例进行描述。

请参见图1,图1是本发明实施例提供的一种分布式存储系统的架构示意图,该分布式存储系统100包括一个或多个存储节点102以及控制节点103。客户端可以访问图1所示的分布式存储系统,其中,客户端101可以为一个或多个。

存储节点102可以为服务器。控制节点103也可以为服务器。客户端101可以是指租户/客户/用户使用的设备,例如计算机。客户端101可以向存储节点102申请存储资源,用于存储数据。存储资源可以为块存储中的逻辑单元号(logicalunitnumber,lun)、文件存储中的文件系统等或对象存储系统中的桶等。客户端101还可以向存储节点102发送输入/输出(inputoutput,i/o)请求,用于向存储资源写入数据或从存储资源读取数据。存储节点用于提供分布式存储系统中的存储资源。

存储节点102还可以向控制节点103发送存储资源在存储节点102上的需求信息以及存储节点102的能力。这里,需求信息可以是存储资源在单位时间内(例如每秒钟)需要存储节点102处理的i/o请求个数。能力还可以是指存储节点102基于单位时间内剩余存储资源、计算资源等在单位时间内还能处理的i/o请求个数。

控制节点103收集存储节点102上报的需求信息以及存储节点102的能力。此外,控制节点103还需要获取存储资源在单位时间内距离达到下限保障还需完成的i/o请求个数以及存储资源在单位时间内距离满足上限流控还能完成的i/o请求个数。例如,每个客户端在向存储节点102申请存储资源时,可以设置单位时间内的下限保障值和上限流控值。本发明实施例中,单位时间内的下限保障值可以理解为存储资源在单位时间内(例如每秒钟)需要存储节点处理的i/o请求最小个数,如每秒钟输入输出(inputoutputpersecond,iops)的最小值。相应的,单位时间内的上限流控值可以理解为存储资源单位时间内(例如每秒钟)需要存储节点处理的i/o请求最大个数。存储资源在单位时间内距离达到下限保障还需完成的i/o请求个数还可以理解为客户端或租户设置的下限保障值与单位时间内存储资源已经完成的i/o数量之间的差距。存储资源在单位时间内距离达到下限保障还需完成的i/o请求个数也称为存储资源在单位时间内距离达成下限保障所需的i/o请求个数。同理,存储资源在单位时间内距离满足上限流控还能完成的i/o请求个数还可以理解为客户端或租户设置的上限保障值与在单位时间内存储资源已经完成的i/o数量之间的差距。例如,客户端1申请存储资源1时,设置的下限保障值为每秒钟200个i/o请求,例如控制节点需要计算存储节点1在第1秒到第2秒这1秒时间内需要为存储资源1处理的i/o请求个数,首先需要预先计算存储资源1在当前时刻距离达成下限保障所需的i/o请求个数,假设当前时刻为第1.5秒,控制节点统计出其他存储节点,假设为存储节点2和存储节点3已经为存储资源1处理了100个i/o请求,则控制节点计算出存储资源1在第1-第2秒之间距离达到下限保障还需完成的i/o请求个数等于200-100=100。又例如,以5秒为例,假设客户端1在申请存储资源1时,设置的下限保障值为每秒钟200个i/o请求,则在5秒钟内需要最少为存储资源1处理200*5=1000个i/o请求。例如控制节点需要计算存储节点1在第2秒到第3秒这1秒时间内需要为存储资源1处理的i/o请求个数,首先需要预先计算存储资源1在当前时刻距离达成下限保障所需的i/o请求个数,假设当前时刻为第2秒,控制节点统计出其他存储节点,假设为存储节点2和存储节点3已经为存储资源1处理了300个i/o请求,则控制节点计算出存储资源1在第2-第3秒之间距离达到下限保障还需完成的i/o请求个数等于1000-300=700。

控制节点103根据各个存储节点102上报的单位时间内的需求信息、存储节点102单位时间内的能力、存储资源在单位时间内距离达到下限保障需要的i/o请求个数以及存储资源在单位时间内距离满足上限流控需要的i/o请求个数计算存储资源在存储节点102上且在单位时间内的服务质量(qualityofservice,qos)控制参数值,该控制参数值包括存储资源在存储节点102上且在单位时间内的下限令牌数以及上限令牌数。例如,控制节点103根据存储节点102上报的在单位时间内的需求信息、存储节点102在单位时间内的能力以及存储资源在单位时间内距离达到下限保障需要的i/o请求个数计算存储资源在存储节点102上且在单位时间内的下限令牌数。控制节点103根据存储节点102上报的在单位时间内的需求信息、存储节点102在单位时间内的能力以及存储资源在单位时间内距离满足上限流控需要的i/o请求个数计算存储资源在存储节点102上且在单位时间内的上限令牌数。其中,单位时间内的下限令牌数是指:为实现存储资源在单位时间内达到下限保障值,存储节点102在单位时间内最少还能为租户或存储资源处理的i/o请求个数,因此单位时间内的下限令牌数也称为在单位时间内令牌数的下限,或者在单位时间内租户或存储资源处理的i/o请求个数的下限(最小值)。单位时间内的上限令牌数是指:为满足存储资源在单位时间内达到上限流控值,存储节点102在单位时间内最多还能为存储资源处理的i/o请求个数,因此单位时间内的上限令牌数也称为在单位时间内令牌数的上限,或者在单位时间内租户或存储资源处理的i/o请求个数的上限(最大值)。控制节点103在完成控制参数值的分配后,将控制参数值分发给各个存储节点102。每个存储节点102根据接收到的控制参数值,达成qos保障目标。

需要说明的是,存储节点单位时间内剩余的i/o请求个数是指存储节点还能够处理/执行的i/o请求个数。

例如,参见图2所示,是本发明实施例提供的分布式存储系统中服务质量保障方法的原理示意图。如图2所示,客户端向存储节点102发送i/o请求,用于读/写数据。存储节点102根据客户端发送的i/o请求存储数据或读取数据。图2中,字母a代表客户端a向存储节点102发送的i/o请求,字母b代表客户端b向存储节点102发送的i/o请求。每个存储节点102会将接收到的i/o请求按照接收的先后顺序进行队列排序。例如,存储节点1的i/o队列排序为a0、a1、b0、a2、a3、b1、b2、a4,其中,越靠前的i/o请求代表存储节点1越早接收到的请求,越靠后的i/o请求代表存储节点1越晚接收到的请求。a1-a4是客户端a向存储节点1发送的i/o请求,b0-b2是客户端b向存储节点1发送的i/o请求。同理,存储节点2的i/o队列排序为a5、b3、b4、b5、a6、a7、b6、b7。a5-a7是客户端a向存储节点2发送的i/o请求,b3-b7是客户端b向存储节点2发送的i/o请求。存储节点3的i/o队列排序为b8、b9、b10、b11、a8、a9。a8-a9是客户端a向存储节点3发送的i/o请求,b8-b11是客户端b向存储节点3发送的i/o请求。

存储节点1会向控制节点103发送客户端a在单位时间内(例如1秒钟)需要存储节点1处理的i/o请求个数、客户端b在单位时间内需要存储节点1处理的i/o请求个数以及存储节点1在单位时间内剩余的i/o请求个数。存储节点在单位时间内剩余的i/o请求个数是指存储节点在单位时间内还能处理的i/o请求个数。同样的,存储节点2会向控制节点103发送客户端a在单位时间内需要存储节点1处理的i/o请求个数、客户端b在单位时间内需要存储节点2处理的i/o请求个数以及存储节点2在单位时间内剩余的i/o请求个数。存储节点3会向控制节点103发送客户端a在单位时间内需要存储节点3处理的i/o请求个数、客户端b在单位时间内需要存储节点3处理的i/o请求个数以及存储节点3在单位时间内剩余的i/o请求个数。此外,控制节点103还需要获取客户端a的存储资源在单位时间内距离达到下限保障还需完成的i/o请求个数、客户端a的存储资源在单位时间内距离满足上限流控还能完成的i/o请求个数、客户端b的存储资源在单位时间内距离达到下限保障还需完成的i/o请求个数以及客户端b的存储资源在单位时间内距离满足上限流控还能完成的i/o请求个数。控制节点103根据客户端a在单位时间内需要存储节点1处理的i/o请求个数、存储节点1在单位时间内剩余的i/o请求个数以及客户端a的存储资源在单位时间内距离达到下限保障还需完成的i/o请求个数计算客户端a在存储节点1上且在单位时间内的下限令牌数。控制节点103根据客户端a在单位时间内需要存储节点1处理的i/o请求个数、存储节点1在单位时间内还能处理的i/o请求个数以及客户端a的存储资源在单位时间内距离达到上限保障剩余的i/o请求个数计算客户端a在存储节点1上且在单位时间内的上限令牌数。相应的,控制节点103根据客户端b在单位时间内需要存储节点1处理的i/o请求个数、存储节点1在单位时间内剩余的i/o请求个数以及客户端b的存储资源在单位时间内距离达到下限保障还需完成的i/o请求个数计算客户端b在存储节点1上且在单位时间内的下限令牌数。控制节点103根据客户端b在单位时间内需要存储节点1处理的i/o请求个数、存储节点1在单位时间内剩余的i/o请求个数以及客户端b的存储资源在单位时间内距离达到上限保障剩余的i/o请求个数计算客户端b在存储节点1上且在单位时间内的上限令牌数。控制节点103计算客户端a或客户端b在存储节点2或存储节点3上的下限令牌数的方式与控制节点103计算客户端a或客户端b在存储节点1上的下限令牌数的方式类似,控制节点103计算客户端a或客户端b在存储节点2或存储节点3上限令牌数的方式与控制节点103计算客户端a或客户端b在存储节点1上的上限令牌数的方式类似,此次不再赘述。

控制节点103在计算出客户端a或客户端b在存储节点1上且在单位时间内的下限令牌数后,将下限令牌数发送给存储节点1。控制节点103在计算出客户端a或客户端b在存储节点2上且在单位时间内的下限令牌数后,将下限令牌数发送给存储节点2。控制节点103在计算出客户端a或客户端b在存储节点3上且在单位时间内的下限令牌数后,将下限令牌数发送给存储节点3。本发明实施例服务质量保障方法,减少了存储节点之间的通信,从而降低了通信开销。

同理,控制节点在计算出客户端a或客户端b在存储节点上且在单位时间内的上限令牌数后,将上限令牌数发送给相应的存储节点。

在存储节点上,针对同一存储资源,存在与该存储资源对应的下限令牌桶和上限令牌桶。下限令牌桶中的令牌即为下限令牌,上限令牌桶中的令牌即为上限令牌。存储节点1的调度器按照先入先出策略(firstinputfirstoutput,fifo)将下一个(next)指针指向i/o请求队列中的第一个(即排在最前)i/o请求(即图2中的a0),判断a0是否具有下限令牌。例如,判断方式可以是判断客户端a在存储节点1上的下限令牌桶中的令牌数是否大于0,若大于0,则表明a0这一请求具有下限令牌,若等于0,则表明a0这一请求不具有下限令牌。若a0具有下限令牌,则调度器请求a0出列,处理(或执行)该a0请求,并且调度器将客户端a在存储节点1上的下限令牌桶中的令牌减1。例如,a0请求用于请求读取客户端a的数据1,则调度器从数据库中获取客户端a的数据1,并返回数据1给客户端a。调度器执行a0请求后,将next指针指向队列中的下一个请求,即图2中的a1。若a0不具有下限令牌,则调度器将next指针指向队列中的下一个请求,即图2中的a1。之后,判断a1是否具有下限令牌。判断方式与a0类似,此处不再赘述。之后,调度器将next指针指向队列中的下一个请求,即图2中的b0,判断b0是否具有下限令牌。例如,判断方式可以是判断客户端b在存储节点1上的下限令牌数是否大于0,若大于0,则表明b0这一请求具有下限令牌,若等于0,则表明b0这一请求不具有下限令牌。若b0具有下限令牌,则调度器请求b0出列,处理(或执行)该b0请求,并且调度器将客户端b在存储节点1上的下限令牌数减1。调度器执行b0请求后,将next指针指向队列中的下一个请求。若b0不具有下限令牌,则调度器将next指针指向队列中的下一个请求。

调度器遍历完i/o请求队列后,具有下限令牌的i/o请求已全部进行处理,不具有下限令牌数的i/o请求则暂不处理。之后,存储节点1的调度器将下一个(next)指针重新指向i/o请求队列中的第一个(即排在最前)i/o请求(假设为图2中的b0),判断b0是否具有上限令牌,例如,判断方式可以是判断客户端b在存储节点1上的上限令牌桶中的令牌数是否大于0,若大于0,则表明b0这一请求具有上限令牌,若等于0,则表明b0这一请求不具有上限令牌。若b0具有上限令牌,则调度器请求b0出列,处理(或执行)该b0请求,并且调度器将客户端b在存储节点1上的上限令牌桶中的令牌减1。之后,调度器将next指针指向队列中的下一个请求,直至遍历完整个i/o请求队列。调度器遍历完i/o请求队列后,具有上限令牌的i/o请求已全部进行处理,不具有上限令牌数的i/o请求则暂不处理。

调度器根据存储节点上存储资源的下限令牌数和上限令牌数决定该存储资源执行i/o请求的数量,从而实现i/o请求调度。

实施上述分布式存储系统中服务质量保障方法,在每存储个节点上,通过部署令牌控制机制和调度器实现i/o请求的调度,进行分布式存储系统下限保障目标,从而实现qos保障。同时也可以实现上限流控。以下实施例将具体阐述。

如图2中的控制节点和存储节点102可以参考图3所示的服务器结构。计算机设备300包括至少一个中央处理单元(centralprocessingunit,cpu)301,通信总线302,存储器303以及至少一个通信接口304。图3所示的服务器还包括存储设备,如机械硬盘和/或固态硬盘。

cpu301执行存储器303中的计算机指令用于实现本发明实施例。另外,为节省cpu301的计算资源,现场可编程门阵列(fieldprogrammablegatearray,fpga)或其他硬件也可以用于执行本发明实施例中cpu301全部操作,或者,fpga或其他硬件与cpu301分别用于执行本发明实施例cpu301的操作。为方便描述,本发明实施例将cpu301与存储器303称为处理器、或将fpga及其他替代cpu301的硬件称为处理器,或将fpga及其他替代cpu201的硬件与cpu301的组合统称为处理器,处理器与通信接口304通信。通信接口304通信可以为网络接口卡(networkinginterfacecard,nic)、主机总线适配器(hostbusadaptor,hba)等。

通信总线302可包括一通路,在上述组件之间传送信息。所述通信接口304,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radioaccessnetwork,ran),无线局域网(wirelesslocalareanetworks,wlan)等。

存储器303可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。

在具体实现中,作为一种实施例,处理器301以cpu为例,可以包括一个或多个cpu,例如图3中的cpu0和cpu1。

如图2中的存储节点102可以为图3所示的设备,存储节点102的存储器中存储了一个或多个软件模块(如交互模块和处理模块)。如图2中的控制节点103也可以为图3所示的设备,控制节点103的存储器中存储了一个或多个软件模块(如交互模块和处理模块)。存储节点或者控制节点可以通过处理器以及存储器中的程序代码来实现软件模块,实现分布式存储系统中服务质量保障。

基于上述图1所述的分布式存储架构、图3所示存储节点、控制节点的结构示意图,本发明实施例提供了一种分布式存储系统中服务质量保障方法,参见图4,为本发明实施例提供的一种分布式存储系统中服务质量保障方法的流程图,该方法包括如下步骤。

s401:控制节点根据目标存储节点在单位时间内剩余的输入输出i/o请求个数、存储资源在单位时间内距离达成下限保障所需的i/o请求个数以及存储资源在单位时间内需要目标存储节点处理的i/o请求个数获得目标存储节点在单位时间内能够为存储资源处理的下限i/o请求个数;其中,分布式存储系统包含提供存储资源的n个存储节点;目标存储节点为n个存储节点中的一个,其中,n为正整数。

为了便于描述,以n个存储节点中的存储节点j作为目标存储节点为例进行描述,其他存储节点类似。为方便描述,将存储节点j在单位时间(假设为第1-第2秒这1秒钟内)内剩余可处理的i/o请求个数用rcj表示。将存储资源i在该单位时间内距离达成下限保障所需的i/o请求个数用rri表示。将存储资源i在该单位时间内需要存储节点j处理的i/o请求个数用dij表示。将存储节点j在该单位时间内能够为存储资源i处理的下限i/o请求个数用fij表示。

在一种实现方式中,可以采用最大流算法、rcj、rri、dij计算存储节点j在该单位时间内能够为存储资源i处理的下限i/o请求个数。

例如,基于如下算法计算存储节点j在该单位时间内能够为存储资源i处理的下限i/o请求个数:

构造图5所示有向图,其中,有向图由4类节点组成,其中,源节点和目的节点为虚拟节点,分别表示有向图的起始节点和终止节点,资源节点表示存储资源。从源节点到资源节点的边的权重表示该资源节点在单位时间内对应的qos参数,资源节点到存储节点的边的权重表示该存储资源在单位时间内对该存储节点的需求值,存储节点到终止节点的边的权重表示该存储节点在单位时间内的节点能力。

对于有向图中的每一条边(u,v),设置默认流量f(u,v)=0。其中,u,v表示的是构造的有向图中的节点,u表示一条边的起始节点,v表示一条边的终止节点。对应到图5中,如果u是源节点,那么v就表示资源节点;如果u表示资源节点,那么v表示存储节点。f(u,v)表示从节点u到节点v的边流量大小,也就是分配的令牌数量(或令牌速度)。采用广度优先搜索算法,得到一条从源节点到终止节点的路径,源节点→存储资源i→存储节点j→终止节点;计算该路径上每个相邻节点间剩余流量cf(u,v)=c(u,v)-f(u,v),其中,c(u,v)为初始设置的边的权重,例如源节点到资源节点i的权重为rri,资源节点i到存储节点j的边的权重为rcij,存储节点j到终止节点的权重为dj;如果找到了这么一条路径,而且每个cf(u,v)都大于0,则计算cf(p)等于这些cf(u,v)中的最小值,然后计算每条边的f(u,v)=f(u,v)+cf(p)。

如果没有搜索到路径,输出从资源节点i到资源节点j的边的流量f(资源节点i,存储节点j)=f(u,v),算法结束。

其中,资源节点i到资源节点j的边的流量即为存储节点j单位时间内(例如1秒钟)能够为存储资源i处理的下限i/o请求个数。

s402:控制节点根据目标存储节点在单位时间内能够为存储资源处理的下限i/o请求个数为存储资源分配存储资源在目标存储节点上且在单位时间内的下限令牌数。

在一种实现方式中,存储资源在目标存储节点上且在单位时间内的下限令牌数等于目标存储节点在单位时间内能够为存储资源处理的i/o请求个数。

在另一种实现方式中,存储资源在目标存储节点上且在单位时间内的下限令牌数等于目标存储节点在单位时间内能够为存储资源处理的i/o请求个数加或减去预定值,该预定值可以是控制节点预设的值。

s403:控制节点将存储资源在目标存储节点上且在单位时间内的下限令牌数发送给目标存储节点,目标存储节点从控制节点接收存储资源在目标存储节点上且在单位时间内的下限令牌数。

例如,控制节点将存储资源1在存储节点1上且在单位时间内的下限令牌数发送给存储节点1,将存储资源1在存储节点2上且在单位时间内的下限令牌数发送给存储节点2,将存储资源1在存储节点3上且在单位时间内的下限令牌数发送给存储节点3,等等。

s404:存储节点获取i/o请求队列中的第一i/o请求,第一i/o请求为存储资源需要目标存储节点处理的i/o请求。

存储节点获取i/o请求队列排在最前的i/o请求,判断该i/o请求是否具有下限令牌,若是,执行步骤s405,若否,存储节点将next指针指向i/o请求队列的下一个i/o请求,继续判断i/o请求是否具有下限令牌。直至遍历完i/o请求队列中的所有i/o请求。其中,存储节点判断i/o请求是否具有下限令牌的方式可以是:判断i/o请求对应的存储资源在存储节点上的下限令牌数是否大于0,若大于0,则表明该i/o请求具有下限令牌,若等于0,则表明该i/o请求不具有下限令牌。其中,i/o请求对应的存储资源意思是指:该i/o请求是该存储资源需要存储节点处理的请求。

s405:若第一i/o请求具有下限令牌数,则目标存储节点处理第一i/o请求。

可选的,除了下限令牌数,控制节点还可以为存储资源分配存储资源在目标存储节点上的上限令牌数。具体的,控制节点根据目标存储节点在单位时间内剩余的i/o请求个数(rcj)、存储资源在单位时间内距离达成上限流控所需的i/o请求个数(rli)、存储资源在单位时间内需要目标存储节点处理的i/o请求个数(dij)以及目标存储节点在单位时间内能够为存储资源处理的下限i/o请求个数之和(∑jfij)计算目标存储节点在单位时间内能够为存储资源处理的上限i/o请求个数(gij)。控制节点根据目标存储节点在单位时间内能够为存储资源处理的上限i/o请求个数为存储资源分配存储资源在目标存储节点上且在单位时间内的上限令牌数。控制节点将存储资源在目标存储节点上且在单位时间内的上限令牌数发送给目标存储节点。目标存储节点从控制节点接收存储资源在目标存储节点上且在单位时间内的上限令牌数。

为了便于描述,将存储节点j在单位时间内剩余可处理的i/o请求个数用rcj表示。将存储资源i在单位时间内距离达成上限流控所需的i/o请求个数用rlj表示。将存储资源i在单位时间内需要存储节点j处理的i/o请求个数用dij表示。将存储节点j在单位时间内能够为存储资源i处理的下限i/o请求个数用fij表示。n个存储节点在单位时间内能够为存储资源i处理的下限i/o请求个数之和等于将存储节点j在单位时间内能够为存储资源i处理的上限i/o请求个数用gij表示。

在一种实现方式中,控制节点计算存储节点j在单位时间内能够为存储资源i处理的上限i/o请求个数的方式可以是:

计算第一数值,计算第四数值,计算第六数值,之后,根据第一数值、第四数值和第六数值计算存储节点j在单位时间内能够为存储资源i处理的上限i/o请求个数。可选的,根据第一数值、第四数值和第六数值计算存储节点j在单位时间内能够为存储资源i处理的上限i/o请求个数的方式可以是:根据最大流(maxflow)算法、第一数值、第四数值和第六数值计算存储节点j在单位时间内能够为存储资源i处理的下限i/o请求个数。

在一种实现方式中,控制节点根据存储节点j在单位时间内能够为存储资源i处理的上限i/o请求个数为存储资源i分配存储资源i在存储节点j上且在单位时间内的上限令牌数,包括:

控制节点根据如下公式为存储资源i分配存储资源i在存储节点j上且在单位时间内的超额分配值:其中,hij表示存储资源i在存储节点j上且在单位时间内的超额分配值。gij表示存储节点j在单位时间内能够为存储资源i处理的上限i/o请求个数。表示n个存储节点在单位时间内能够为存储资源i处理的上限i/o请求个数之和。dij表示存储资源i在单位时间内需要存储节点j处理的i/o请求个数,表示存储资源i需要n个存储节点在单位时间内处理的i/o请求个数之和。

控制节点根据如下公式为存储资源i分配存储资源i在存储节点j上且在单位时间内的上限令牌数:

存储资源i在存储节点j上且在单位时间内的上限令牌数=hij+fij。fij表示存储节点j在单位时间内能够为存储资源i处理的下限i/o请求个数。

可选的,上述rcj和dij可以是存储节点j发送给控制节点的,控制节点可以收集各个存储节点上报的需求信息以及存储节点的能力。

可选的,分布式存储系统中服务质量保障方法还包括如下步骤s406和s407。

s406:若全部存储资源在目标存储节点上的下限令牌数均等于零,则目标存储节点获取i/o请求队列中的第二i/o请求。

s407:若第二i/o请求具有上限令牌,则目标存储节点处理第二i/o请求,所述上限令牌的个数为所述目标存储节点从所述控制节点接收的。

其中,第一i/o请求和第二i/o请求可以是两个不同的存储资源对目标存储节点的需求。例如,第一i/o请求是存储资源1对存储节点1的请求,第二i/o请求是存储资源2对存储节点1的请求。第一i/o请求和第二i/o请求还可以是同一存储资源对目标存储节点的需求。

例如,目标存储节点在从控制节点获取存储资源的下限令牌数和上限令牌数后,按照循环(round-robin)机制执行如下i/o调度过程:

1、将next指针指向队列开始遍历,找到队列中还有下限令牌的i/o请求,使其请求出队,执行该i/o请求;如果没有找到满足要求的i/o请求,则跳转到步骤3。

2、i/o请求出队后,假设该i/o请求是存储资源i需要存储节点j处理的请求,则将存储资源i在存储节点j上的下限令牌个数减1,并且将next指针指向队列中的下一个i/o请求,跳转到步骤1。直至队列中的所有i/o请求都不具有下限令牌。

3、按照round-robin机制将next指针指向队列开始遍历,找到队列中还有上限令牌的i/o请求,使其请求出队,执行该i/o请求;如果没有找到满足要求的i/o请求,则跳转到步骤5。

4、i/o请求出队后,假设该i/o请求是存储资源i需要存储节点j处理的请求,则将存储资源i在存储节点j上的上限令牌个数减1,并且将next指针指向队列中的下一个i/o请求,跳转到步骤1。直至队列中的所有i/o请求都不具有上限令牌。

5、结束。

采用该遍历方式,可以优先满足下限保障要求,在满足下限保障的请求下,再按照上限令牌桶实现上限流控。

采用本发明实施例,控制节点对令牌的分配可以由定时器定时触发,例如5s分配1次。也即是说,由控制节点定时生成令牌,并下发给各个存储节点。控制节点可以控制令牌的生成速度,从而达成各个存储资源的qos目标。例如,针对存储资源1,控制节点每秒钟为其生成1000个令牌,其中,300个令牌发送给存储节点1,300个令牌发送给存储节点2,剩余的400个令牌发送给存储节点3。各个存储节点在收到控制节点为存储资源分配的令牌后,按照前述循环(round-robin)机制执行i/o调度过程。

此外,还可以由控制节点配置令牌生成速度(例如每秒钟生成若干个下限令牌或者每秒钟生成若干个上限令牌),然后各个存储节点负责按照控制节点配置的生成速度来生成相应的下限令牌或者上限令牌。例如,控制节点通知存储节点1每秒钟为存储资源1生成300个下限令牌以及100个上限令牌,控制节点通知存储节点2每秒钟为存储资源1生成300个下限令牌以及100个上限令牌,控制节点通知存储节点3每秒钟为存储资源1生成400个下限令牌以及100个上限令牌,则存储节点1按照300个令牌/秒的速度为存储资源1生成下限令牌以及100个令牌/秒的速度为存储资源1生成上限令牌,按照前述循环(round-robin)机制执行i/o调度过程。存储节点2按照300个令牌/秒的速度为存储资源1生成下限令牌以及100个令牌/秒的速度为存储资源1生成上限令牌,按照前述循环(round-robin)机制执行i/o调度过程。存储节点3按照400个令牌/秒的速度为存储资源1生成下限令牌100个令牌/秒的速度为存储资源1生成上限令牌,按照前述循环(round-robin)机制执行i/o调度过程。

采用本发明实施例,可以由控制节点为各个存储节点分配存储资源的令牌,因此存储节点只需要按照控制节点分配的令牌相应调度并处理具有令牌的i/o请求,不具有令牌的i/o请求则存储节点对其暂不处理。在分布式存储系统中实现了下限保障性能。进一步地,还可以在分布式存储系统中引入存储资源上限流控机制。与现有技术中针对每个请求的tag计算,都需要获取其他节点上处理请求个数的信息不同,本发明实施例在计算存储资源在目标存储节点上的令牌数时,只需要关注目标存储节点的能力以及存储资源对目标存储节点的需求即可,无需关注其他存储节点的能力,因此可以降低网络通信开销。此外,本发明实施例可以定期实现令牌更新,例如每5s更新一次,而现有技术方案需要每i/o都同步。本发明实施例的存储节点在进行i/o请求调度时,不需要做请求tag值的排序,节省了排序的计算开销。

参见图6,图6示出了本发明实施例提供的一种分布式存储系统、控制节点及存储节点的结构框图。分布式存储系统600包括:控制节点700和存储节点800。其中,控制节点700可以为图1实施例中的控制节点103,相应的,存储节点800可以为图1实施例中的存储节点102,分布式存储系统600可以是图1描述的分布式存储系统100。下面分别描述。

如图6所示,控制节点700可包括:计算单元701、分配单元702和发送单元703。

其中,计算单元701,用于根据目标存储节点单位时间内剩余的输入输出i/o请求个数、存储资源在所述单位时间内距离达成下限保障所需的i/o请求个数以及所述存储资源在所述单位时间内需要所述目标存储节点处理的i/o请求个数获得所述目标存储节点在所述单位时间内能够为所述存储资源处理的下限i/o请求个数;其中,所述分布式存储系统包含提供所述存储资源的n个存储节点;所述目标存储节点为所述n个存储节点中的一个,其中,n为正整数;

分配单元702,用于根据所述目标存储节点在所述单位时间内能够为所述存储资源处理的下限i/o请求个数为所述存储资源分配在所述目标存储节点上且在所述单位时间内的下限令牌数;

发送单元703,用于将所述下限令牌数发送给所述目标存储节点。

可选的,计算单元701,还用于根据所述目标存储节点在所述单位时间内剩余的i/o请求个数、所述存储资源在所述单位时间内距离达成上限流控所需的i/o请求个数、所述存储资源在所述单位时间内需要所述目标存储节点处理的i/o请求个数以及所述目标存储节点在所述单位时间内能够为所述存储资源处理的下限i/o请求个数获得所述目标存储节点在所述单位时间内能够为所述存储资源处理的上限i/o请求个数;

分配单元702,还用于根据所述目标存储节点在所述单位时间内能够为所述存储资源处理的上限i/o请求个数为所述存储资源分配在所述目标存储节点上且在所述单位时间内的上限令牌数;

发送单元703,还用于将所述上限令牌数依次发送给所述目标存储节点。

可选的,所述计算单元701具体用于:

根据最大流算法、所述目标存储节点在所述单位时间内剩余的输入输出i/o请求个数、所述存储资源在所述单位时间内距离达成下限保障所需的i/o请求个数以及在所述单位时间内需要所述目标存储节点处理的i/o请求个数计算所述目标存储节点在所述单位时间内能够为所述存储资源处理的下限i/o请求个数。

可选的,所述计算单元701具体用于:

计算第一数值,所述第一数值为第二数值与第三数值之差,所述第二数值为所述存储资源在所述单位时间内距离达成上限流控所需的i/o请求个数,所述第三数值为所述n个存储节点在所述单位时间内能够为所述存储资源处理的下限i/o请求个数之和;

计算第四数值,所述第四数值为第五数值与所述第三数值之差,所述第五数值为所述目标存储节点在所述单位时间内剩余的i/o请求个数;

计算第六数值,所述第六数值为第七数值与所述第三数值之前,所述第七数值为所述存储资源需要所述目标存储节点在所述单位时间内处理的i/o请求个数;

根据所述第一数值、所述第四数值和所述第六数值计算所述目标存储节点在所述单位时间内能够为所述存储资源处理的上限i/o请求个数。

可选的,所述分配单元702具体用于:

根据如下公式为所述存储资源分配所述存储资源在所述目标存储节点上且在所述单位时间内的超额分配值:所述存储资源在所述目标存储节点上且在所述单位时间内的其中,所述第八数值为所述目标存储节点在所述单位时间内能够为所述存储资源处理的上限i/o请求个数,所述第九数值为所述n个存储节点在所述单位时间内能够为所述存储资源处理的上限i/o请求个数之和,所述第十参数为所述存储资源在所述单位时间内需要所述n个存储节点处理的i/o请求个数之和;其中,“-”表示减法运算,即第二数值与第九数值之前;“*”表示乘法运算;

根据如下公式为所述存储资源分配所述存储资源在所述目标存储节点上且在所述单位时间内的上限令牌数:

所述存储资源在所述目标存储节点上且在所述单位时间内的上限令牌数等于所述存储资源在所述目标存储节点上且在所述单位时间内的超额分配值与所述存储资源在所述目标存储节点上且在所述单位时间内的下限令牌之和。

可选的,所述计算单元701具体用于:

根据最大流算法、所述第一数值、所述第四数值和所述第六数值计算所述目标存储节点在所述单位时间内能够为所述存储资源处理的上限i/o请求个数。

可选的,控制节点700还包括:

接收单元,用于从所述目标存储节点接收所述目标存储节点在所述单位时间内剩余的i/o请求个数以及所述存储资源在所述单位时间内需要所述目标存储节点处理的i/o请求个数。

关于控制节点700包括的各个功能单元的具体实现,可以参考前述实施例,这里不再赘述。

如图6所示,存储节点800可包括:接收单元801、获取单元802和处理单元803。

其中,接收单元801,用于从控制节点接收第一存储资源在所述存储节点上且在单位时间内的下限令牌数;

获取单元802,用于获取i/o请求队列中的第一i/o请求,所述第一i/o请求为所述第一存储资源需要所述存储节点处理的i/o请求;

处理单元803,用于若所述第一存储资源在所述存储节点上的下限令牌数大于0,则处理所述第一i/o请求。

可选的,获取单元802,还用于若所述第一存储资源以及除所述第一存储资源以外的其他存储资源在所述存储节点上的下限令牌数均等于零,则获取所述i/o请求队列中的第二i/o请求,所述第二i/o请求为第二存储资源需要所述存储节点处理的i/o请求;

所述处理单元803,还用于若所述第二存储资源在所述存储节点上的上限令牌数大于0,则处理所述第二i/o请求,所述上限令牌数为所述存储节点从所述控制节点接收的。

可选的,存储节点800还包括:

发送单元,用于在所述接收单元801从控制节点接收第一存储资源在所述存储节点上且在所述单位时间内的下限令牌数之前,向控制节点发送所述存储节点在所述单位时间内剩余的i/o请求个数以及所述第一存储资源在所述单位时间内需要所述存储节点处理的i/o请求个数,所述存储节点在所述单位时间内剩余的i/o请求个数以及所述第一存储资源在所述单位时间内需要所述存储节点处理的i/o请求个数用于所述控制节点为所述第一存储资源分配所述第一存储资源在所述存储节点上且在所述单位时间内的令牌数。

关于存储节点800包括的各个功能单元的具体实现,可以参考前述实施例,这里不再赘述。

图6所示的控制节点700和存储节点800中的各单元,具体实现可以参考图3的描述。其中,各单元可以是软件模块,也可以是硬件。本发明实施例对此不作限定。

在本发明的另一实施例中,还提供一种可读存储介质,可读存储介质中存储有计算机执行指令,当一个设备(可以是单片机,芯片等)或者处理器可以调用可读存储介质中存储有计算机执行指令来执行图4所提供的分布式存储系统中服务质量保障方法中控制节点或者存储节点的步骤。前述的可读存储介质可以包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

在本发明的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施图4所提供的分布式存储系统中服务质量保障方法中控制节点或者存储节点的步骤。

在本发明的另一实施例中,还提供一种分布式存储节点,包括控制节点和存储节点。其中,控制节点可以为图6所提供的控制节点,且用于执行图4所提供的分布式存储系统中服务质量保障方法中控制节点的步骤;和/或,存储节点可以为图6所提供的存储节点,且用于执行图4所提供的分布式存储系统中服务质量保障方法中存储节点的步骤。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1