一种Rados Gateway的细粒度QoS控制方法

文档序号:1893212 发布日期:2021-11-26 浏览:21次 >En<

阅读说明:本技术 一种Rados Gateway的细粒度QoS控制方法 (Fine-grained QoS control method of Rados Gateway ) 是由 曹磊 高传集 王腾飞 李超 于 2021-08-05 设计创作,主要内容包括:本发明公开一种Rados Gateway的细粒度QoS控制方法,涉及网络服务技术领域,包括:开放设置Qos、查询Qos以及删除Qos的API接口;通过API接口,管理员向Rados Gateway发送请求,设置针对用户级别和桶级别两种粒度的QoS,同时记录两种粒度的QoS状态并进行持久化;发送请求后,依次检测两种粒度的QoS,进行请求的处理;请求处理完毕后,归还该请求占用的令牌数。本发明通过用户和桶两种细粒度的QoS,可以更合理的控制资源分配,无需单独开辟线程每秒向令牌桶中添加令牌,通过记录最早令牌时间的方式,将添加令牌的过程放在每次消耗和释放令牌之前的检测里,用少量的存储空间换取了计算时间和减少了cpu消耗,提高了QoS的效率。(The invention discloses a fine-grained QoS control method of Rados Gateway, relating to the technical field of network service and comprising the following steps: opening an API interface for setting Qos, inquiring Qos and deleting Qos; through an API (application program interface) interface, an administrator sends a request to a Rados Gateway, sets QoS (quality of service) aiming at two granularities of a user grade and a bucket grade, and records and persists QoS states of the two granularities; after the request is sent, QoS with two granularities is detected in sequence, and the request is processed; and after the request is processed, returning the number of tokens occupied by the request. The method can more reasonably control resource allocation through two kinds of fine-grained QoS (quality of service) of the user and the bucket, does not need to separately develop threads to add tokens to the token bucket every second, puts the process of adding the tokens into detection before consuming and releasing the tokens each time in a mode of recording the earliest token time, replaces the calculation time with a small amount of storage space, reduces the CPU consumption and improves the QoS efficiency.)

一种Rados Gateway的细粒度QoS控制方法

技术领域

本发明涉及网络服务技术领域,具体的说是一种Rados Gateway的细粒度QoS控制方法。

背景技术

QoS(Quality of Service)是服务质量的简称,网络服务的QoS包含多个方面,如传输的带宽、时延、并发数以及数据的丢包率,常见的QoS方案有设置防火墙规则、路由策略等。网络服务中保证某些业务的服务质量同时也在损害其它业务的服务质量,因为网络资源总是有限的。因此网络服务的QoS更加关注有限资源的合理利用,令牌桶是实现网络服务QoS的一种常见方法,但是对于Rados Gateway来说普通的令牌桶算法并不能满足需求,首先客户端层面的QoS粒度太大,不同用户和桶之间也存在资源竞争,同样需要进行QoS;其次用户和桶的数量十分庞大,为每一个用户和桶建立一个线程维护它的令牌是不实际的,即使硬件支持,在大量分布式锁和分布式变量同步的影响下Rados Gateway的效率也很难保障。

发明内容

本发明针对目前技术发展的需求和不足之处,提供一种Rados Gateway的细粒度QoS控制方法。

本发明的一种Rados Gateway的细粒度QoS控制方法,解决上述技术问题采用的技术方案如下:

一种Rados Gateway的细粒度QoS控制方法,包括如下步骤:

开放设置Qos、查询Qos以及删除Qos的API接口;

通过API接口,管理员向Rados Gateway发送请求,设置针对用户级别和桶级别两种粒度的QoS,同时记录两种粒度的QoS状态并进行持久化;

发送请求后,依次检测两种粒度的QoS,进行请求的处理;

请求处理完毕后,归还该请求占用的令牌数。

可选的,所涉及的三个API接口均为admin接口,供ceph集群的管理员用户调用;

三个API接口都要在URl中指明操作集群中的QoS子资源,且操作中涉及到的具体参数值包含在以XML形式表示的body体中。

进一步可选的,通过API接口设置Qos时,请求的body体中需要包含QoS的粒度、对应粒度的资源实例的名字以及QoS要限制的网络资源的类别、对应网络资源的最大值;

管理员向Rados Gateway发送请求后,Rados Gateway解析body体中的参数,并将QoS的资源实例的名字、网络资源的类别以及网络资源的最大值、最早的令牌时间和当前的令牌数记录在元数据池对应对象的attrs属性中。

进一步可选的,所涉及QoS的粒度包括用户级别和桶级别;

(a)如果QoS的粒度为用户级别,则将QoS的资源实例的名字、网络资源的类别以及网络资源的最大值记录在元数据池中users.uid命名空间下用户元数据对象的attrs属性中,同时,将当前时间记录为最早的令牌时间,将令牌数初始化为对应网络资源的最大值,将上述两个令牌相关参数也持久化在uid对象的attrs属性中;

(b)如果QoS的粒度为桶级别,则将QoS的资源实例的名字、网络资源的类别以及网络资源的最大值记录在元数据池中root命名空间下instance对象的attrs属性中。

进一步可选的,查询Qos、删除Qos时,请求的body体中需要指定QoS的粒度、资源实例的名字;

删除QoS时,判断需要删除的QoS的粒度,进而删除对应元数据池中对象的QoS的attrs属性。

进一步可选的,检测用户级别的QoS,进行请求的处理,具体过程为:

进行用户的权限认证;

通过认证后,检查用户的uid对象;

如果存在QoS设置在attrs中,则首先判断当前时间与记录的最早的令牌时间的差值,当差值大于1秒时,更新当前的令牌数为对应网络资源的最大值,同时更新最早的令牌时间为当前时间,然后判断当前的令牌数减去当前请求要消耗令牌数的差:

(i)当差值为非负数时,继续请求的处理过程,

(ii)当差值为负数时,将当前请求重新放回到Rados Gateway前端的工作队列中,等待工作线程下一次取出处理。

进一步可选的,检测桶级别的QoS,进行请求的处理,具体过程为:

查看桶对应的元数据池中的instance的attrs属性中是否存在QoS设置;

如果存在,则首先判断当前时间与记录的最早的令牌时间的差值,当差值大于1秒时,更新当前的令牌数为对应网络资源的最大值,同时更新最早的令牌时间为当前时间,然后判断当前的令牌数减去当前请求要消耗的令牌数的差:

(i)当差值为非负数时,继续请求的处理过程,

(ii)当差值为负数时,将当前请求重新放回到Rados Gateway前端的工作队列中,放回工作队列前需要将请求实例对应的标志位和状态属性还原到请求处理前的状态。

进一步可选的,请求处理完毕后,归还该请求占用的令牌数,具体过程为:

读取当前的令牌状态,同时判断当前时间与记录的最早的令牌时间的差值:

(i)当差值大于1秒时,更新当前的令牌数为对应网络资源的最大值,同时更新最早的令牌时间为当前时间,然后直接返回结果给发出请求的客户端;

(ii)当差值不大于1秒时,将当前的令牌数加上该请求占用的令牌数,如果加和后的值大于对应网络资源的最大值,那么将当前的令牌数作为对应网络资源的最大值,将加和后的令牌数记录在当前的令牌状态中,最后返回结果给发出请求的客户端。

本发明的一种Rados Gateway的细粒度QoS控制方法,与现有技术相比具有的有益效果是:

(1)本发明通过用户和桶两种细粒度的QoS,可以更合理的控制资源分配,无需单独开辟线程每秒向令牌桶中添加令牌,通过记录最早令牌时间的方式,将添加令牌的过程放在每次消耗和释放令牌之前的检测里,用少量的存储空间换取了计算时间和减少了cpu消耗,提高了QoS的效率;

(2)本发明将令牌状态持久化在了元数据池中,避免了分布式锁和分布式变量同步影响Rados Gateway的执行效率,同时解决了系统在机器掉电后令牌状态不可恢复的问题;

(3)本发明将IO并发数和带宽严格分离、解耦控制,对不同网络资源的限制不会相互影响。

附图说明

附图1是本发明的方法流程图;

附图2是本发明中依次检测两种粒度的QoS的流程示意图。

具体实施方式

为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。

实施例一:

结合附图1,本实施例提出一种Rados Gateway的细粒度QoS控制方法,包括如下步骤:

(一)开放设置Qos、查询Qos以及删除Qos的API接口。

本实施例中,三个API接口均为admin接口,供ceph集群的管理员用户调用。

三个API接口都要在URl中指明操作集群中的QoS子资源,且操作中涉及到的具体参数值包含在以XML形式表示的body体中。

通过API接口设置Qos时,请求的body体中需要包含QoS的粒度、对应粒度的资源实例的名字以及QoS要限制的网络资源的类别、对应网络资源的最大值。

(二)通过API接口,管理员向Rados Gateway发送请求,设置针对用户级别和桶级别两种粒度的QoS,同时记录两种粒度的QoS状态并进行持久化。

管理员向Rados Gateway发送请求后,Rados Gateway解析body体中的参数,并将QoS的资源实例的名字、网络资源的类别以及网络资源的最大值、最早的令牌时间和当前的令牌数记录在元数据池对应对象的attrs属性中。

本实施例中,QoS的粒度包括用户级别和桶级别;

(a)如果QoS的粒度为用户级别,则将QoS的资源实例的名字、网络资源的类别以及网络资源的最大值记录在元数据池中users.uid命名空间下用户元数据对象的attrs属性中,同时,将当前时间记录为最早的令牌时间,将令牌数初始化为对应网络资源的最大值,将上述两个令牌相关参数也持久化在uid对象的attrs属性中;

(b)如果QoS的粒度为桶级别,则将QoS的资源实例的名字、网络资源的类别以及网络资源的最大值记录在元数据池中root命名空间下instance对象的attrs属性中。

查询Qos、删除Qos时,请求的body体中需要指定QoS的粒度、资源实例的名字。

删除QoS时,判断需要删除的QoS的粒度,进而删除对应元数据池中对象的QoS的attrs属性。

(三)结合附图2,发送请求后,依次检测两种粒度的QoS,进行请求的处理。

(1)检测用户级别的QoS,进行请求的处理,具体过程为:

进行用户的权限认证;

通过认证后,检查用户的uid对象;

如果存在QoS设置在attrs中,则首先判断当前时间与记录的最早的令牌时间的差值,当差值大于1秒时,更新当前的令牌数为对应网络资源的最大值,同时更新最早的令牌时间为当前时间,然后判断当前的令牌数减去当前请求要消耗令牌数的差:

(i)当差值为非负数时,继续请求的处理过程,

(ii)当差值为负数时,将当前请求重新放回到Rados Gateway前端的工作队列中,等待工作线程下一次取出处理。

(2)检测桶级别的QoS,进行请求的处理,具体过程为:

查看桶对应的元数据池中的instance的attrs属性中是否存在QoS设置;

如果存在,则首先判断当前时间与记录的最早的令牌时间的差值,当差值大于1秒时,更新当前的令牌数为对应网络资源的最大值,同时更新最早的令牌时间为当前时间,然后判断当前的令牌数减去当前请求要消耗的令牌数的差:

(i)当差值为非负数时,继续请求的处理过程,

(ii)当差值为负数时,将当前请求重新放回到Rados Gateway前端的工作队列中,放回工作队列前需要将请求实例对应的标志位和状态属性还原到请求处理前的状态。

(四)请求处理完毕后,归还该请求占用的令牌数,具体过程为:

读取当前的令牌状态,同时判断当前时间与记录的最早的令牌时间的差值:

(i)当差值大于1秒时,更新当前的令牌数为对应网络资源的最大值,同时更新最早的令牌时间为当前时间,然后直接返回结果给发出请求的客户端;

(ii)当差值不大于1秒时,将当前的令牌数加上该请求占用的令牌数,如果加和后的值大于对应网络资源的最大值,那么将当前的令牌数作为对应网络资源的最大值,将加和后的令牌数记录在当前的令牌状态中,最后返回结果给发出请求的客户端。

综上可知,采用本发明的一种Rados Gateway的细粒度QoS控制方法,通过用户和桶两种细粒度的QoS,可以更合理的控制资源分配,无需单独开辟线程每秒向令牌桶中添加令牌,提高了QoS的效率。

以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:P4交换机及其数据处理方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!