温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Gubernator速率限制服务怎么理解

发布时间:2021-10-21 09:20:09 来源:亿速云 阅读:109 作者:柒染 栏目:大数据

Gubernator速率限制服务怎么理解,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Gubernator 是一个分布式,高性能,云原生和无状态的速率限制服务。

关键特性

  1. Gubernator 可以把请求的速率平均限制到整个集群,这意味着,您可以简单的通过增加更多的节点平滑的扩展系统服务能力。

  2. Gubernator不依赖于外部的缓存,如MemCache或者Redis这样的软件,也不依赖于其他的服务,这意味着本服务可以动态的增加服务能力。

  3. Gubernator保持磁盘的无状态能力,基于每个请求的配置处理能力。

  4. Gubernator提供了GPRC和HTTP的访问API接口。

  5. 可以做为一个边缘服务或者分离的服务进行速率限制。

  6. 可以做为自定义服务的库来使用。

  7. 支持可扩展的外部环境进行速率限制。

  8. Gubernator是俄语长官的英语发音,听起来不错吧。

无状态配置

Gubernator是一个无状态的服务,不需要磁盘空间保存历史操作,没有配置和数据会缓存到磁盘,这是因为每一个请求,包括配置信息,速率限制配置信息仅仅是一个64位整数。

例如,对GRPC进行限制

rate_limits:
 #速率限制的名称
 - name: requests_per_sec
 #一个唯一键值,用来标识请求限制的实例名称
 unique_key: account_id=123|source_ip=172.0.0.1
 #请求的命种数量
 hits: 1
 #速度限制的请求总数
 limit: 100
 #限制速度的周期时长(毫秒)
 duration: 1000
 #计算速率限制的算法 0信号桶 1滴漏桶
 algorithm: 0
 #速度限制的行为 0允许每次批量请求 1非止批量请求 2允许全局缓存速率限制
 behavior: 0

如下所示:

rate_limits:
  # 速度限制的状态 OK=0,OVER_LIMIT =1
  - status: 0,
  # 当前配置限制
  limit: 10
  # 请求保持数量
  remaining: 7
  # 桶限制的unix时间戳,如果超过限制,设置时间不再返回OVER_LIMIT
  reset_time: 1551309219226 
  #关于每个请求的速率限制的附加原始信息
  metadata:
     "owner":"api-n03.staging.us-east-1.mailgun.org:9041"

速率限制算法

信号桶

开始是一个空桶,每次命令请求,桶内数据加1,直到桶满了,如果桶满了,将返回OVER_LIMIT,走到计时器清零,然后再开始循环。

沙漏桶

桶满了,返回OVER_LIMIT,然后,桶中的数据通过 时长/限制 算出空余量,此时,如果有空间,可以继续进入数据。

性能

在我们的产品环境中,我们的每个API每个请求限制为2,通过指定的时长进行限制,如下图所示,每秒超过2000个请求的批量响应在1毫秒之内。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI