1、RateLimiter实现了对于队列元素的重试规则,包括三个函数When获取某个元素应该等待的时间,Forget释放某个元素不再监测,NumRequeues返回该元素已经失败重试的次数。

2、RateLimiter主要有四种类型:

主要行为表现在当某一事件元素失败后,等待时间的计算规则不一致。

  • BucketRateLimiter令牌桶算法,可以处理尖峰流量,实现平滑限流,可以控制在一定频率来执行;
  • ItemExponentialFailureRateLimiter根据失败次数按指数延时;
  • ItemFastSlowRateLimiter先快后慢;
  • MaxOfRateLimiter包含多个限流器,并返回所有RateLimiter的最坏值。

3、默认的DefaultControllerRateLimiter是MaxOfRateLimiter取最坏值,其中并包括两个限流器,

BucketRateLimiter限流器是一个令牌桶算法处理尖峰流量,实现平滑限流,令牌桶大小是100,生成令牌速度是10QPS,拿令牌是没有速度限制的;

ItemExponentialFailureRateLimiter:等待时间=min(1000s,5ms*2^n),与失败次数n呈指数关系;

备注:k8s controller的重试等待时间是5ms*2的n次方,n是重试次数,但是不超过1000s,并且还有一个令牌桶算法处理尖峰流量实现平滑限流,所以流量暴增时等待时间可能比1000s更长。

K8s之ControllerRateLimiter简单理解相关推荐

  1. k8s之kubebuilder简单理解

    kubebuilder流程 1.创建manager,ctrl.NewManager,包括设置 shemme和端口.选主信息等配置.NewCluster(用来访问k8s,主要包括newCache和New ...

  2. k8s之informer简单理解

    informer简介 Informer是一个能够缓存apiserver的对象到本地.具有索引机制.并可以注册 EventHandler 的 client.使用 informer 的目的是为了减轻 ap ...

  3. k8s之VelaQL简单理解

    kubevela中利用Application对象对底层资源进行了封装,屏蔽了底层基础架构,但是这样对Application创建的资源状态的监控,就只能依赖Application的状态透出,但状态信息简 ...

  4. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  5. 【转载】Deep learning:十九(RBM简单理解)

    Deep learning:十九(RBM简单理解) 这篇博客主要用来简单介绍下RBM网络,因为deep learning中的一个重要网络结构DBN就可以由RBM网络叠加而成,所以对RBM的理解有利于我 ...

  6. 学习:双机热备、集群、负载均衡、SQL故障转移群集简单理解(转)

    双机热备.集群.负载均衡.SQL故障转移群集简单理解平常,大家常提到几个技术名词:双机热备.集群.负载均衡.SQL故障转移群集.这里,就我的理解,和大家简单探讨下,有不足或错误之处还请各位指出! 这些 ...

  7. 字符串匹配算法Java_如何简单理解字符串匹配算法?

    这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...

  8. python yield的简单理解

    2019独角兽企业重金招聘Python工程师标准>>> yield是个生成器,它可以使一个方法变成可迭代的方法,每次迭代返回yield后面的值 简单理解: >>>d ...

  9. linun——SElinux的简单理解

    SElinux简单理解 一.什么是SElinux? SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Co ...

最新文章

  1. python绘制散点图-matplotlib在python上绘制3D散点图实例详解
  2. sqlserver表变量
  3. ThinkPhp学习13
  4. Python实战2 - 200行Python代码实现2048(控制台)
  5. VTK:在多面体数据上使用裁剪和封盖用法实战
  6. 如何获得物体的主要方向?
  7. [深度学习-实践]BP神经网络的Helloworld(手写体识别和Fashion_mnist)
  8. 思科警告:IOS 路由器中含有多个严重缺陷,可导致“系统完全受陷”
  9. Django的Ajax加额外操作
  10. 不必害怕人工智能,它会让我们变成“超人”
  11. 【翻译】Fast Patch-based Style Transfer of Arbitrary Style
  12. 封装win7系统,安装系统时提示:windows无法完成系统配置,若要尝试恢复配置,请重新启动计算机?
  13. IBM面试题:海盗分金算法及其思想
  14. 做计算机的小卫士教案,小学信息技术教案四年级上环保小卫士
  15. Microsoft.VisualStudio.MinShell.Msi安装失败(2017与2019)
  16. Settings.settings文件的用处
  17. 计算机硬件更新向导,windows Xp系统取消硬件更新向导提示框的方法
  18. 设计没灵感,一定要逛这5个网站。
  19. odf-File and xdf-File
  20. 开博尔智能android播放器C3,开博尔C3四核最新固件Android4.4_KIUI7.0_v1.0.4

热门文章

  1. HDU 1407 测试你是否和LTC水平一样高 (HASH)
  2. 人工智能学习体系大纲(src:http://blog.sina.com.cn/s/blog_7dbb766f0102xdwu.html)
  3. 在ISA 2006标准版上定制带宽和限制流量(测试)
  4. Java并发编程:Lock和Synchronized 转
  5. 【开发管理类软件必备知识视频教程之二】登录窗体后台注意事项
  6. my understanding for love
  7. 你好,脂肪肝!来自22岁的大学生的体检报告
  8. 怎么在坐标上面找outliner的异常检测方法,非监督学习
  9. AndroidStudio3.4+Unity2018.3,导出JAR包给UNITY使用
  10. U3D的结构体堆分配栈分配