#rate-limiting #limiter #client #contention #overactive #caused #minimizes

simple-rate-limiter

一个旨在最小化由过活跃客户端引起的争用的简单速率限制器

1 个稳定版本

1.0.0 2022年7月12日

#9 in #limiter

每月下载 22

MIT 许可证

9KB
114

simple-rate-limiter

一个旨在最小化由过活跃客户端引起的争用的简单速率限制器。

设计

本速率限制器旨在实现以下目标

  1. 恶意过活跃客户端降低其他客户端服务能力的潜力有限

  2. 在 CPU 缓存之间的同步成本最小化,同时对于平滑流量突增也相当准确

  3. 内存开销与活跃密钥的数量呈线性关系

API

pub struct RateLimiter<K: Eq + Hash>;

impl<K: Eq + Hash> RateLimiter<K> {
    pub fn new(limit: usize, slots: usize) -> Arc<Self>;
    pub fn rotate_slots(&self);
    pub fn check_limited(&self, key: K) -> bool;
}

微基准测试(不可信,请自行测试您的应用程序)

机器详情:AMD® Ryzen 5 3600,x86_64-pc-linux-gnu,SMT 开启

依赖项

~0.4–5.5MB
~11K SLoC