作者在之前关于用 GCRA 进行速率限制,无桶的漏桶的帖子之后,回顾了Exim 的速率限制旧笔记,并希望写一篇更广泛感兴趣的新文章。
指数速率限制:使用指数加权移动平均来测量客户端的速率,先测量速率再与限制比较,算法允许更灵活的策略执行,空间与漏桶类似但需复杂浮点运算,有最大速率、突发大小和平均周期三个配置参数,最大速率由其他两个参数得出。
- 算法:为每个客户端存储上次更新时间和平均速率,请求到达时计算相关参数并更新平均速率,确保稀有请求被完整计数。
- 行为:客户端快速发送请求时平均速率快速上升,速率适中时平均速率变化较小,客户端减速时测量速率指数衰减。
- 执行:客户端超过限制时需等待一定时间,允许或拒绝请求与计算平均速率分开,可实现“漏”或“严格”策略。
- 原理:解释了算法在各种情况下的工作细节,如处理很慢的客户端、不同间隔、惩罚时间和快速突发等。
- 讨论:作者于 2005 - 2006 年开发该算法用于限制出站电子邮件垃圾邮件泛滥,解释了算法的推导和行为,多年后才理解其数学原理,不知是否为重新发明,希望听到其他指数速率限制的使用案例。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。