1 个不稳定版本
0.0.1 | 2024年5月25日 |
---|
34 in #limiter
4KB
Nenya
Nenya 是一个正在进行中的项目,旨在通过PID控制器提供一个强大且灵活的限流器。Nenya组织成一个Cargo工作区,包含两个主要组件
- Nenya: 使用PID控制器进行限流的Rust包。
- Nenya-Sentinel: 一个独立的限流器,最终将开发成一个gRPC服务,旨在作为现有服务的sidecar运行。
概述
Nenya
Nenya是一个Rust包,提供由PID控制器驱动的限流功能。该包旨在提供一种动态且高效的方式来管理请求速率,使其适用于高吞吐量服务。
功能
- PID控制器: 利用比例-积分-微分(PID)控制器根据当前的流量模式动态调整速率限制。
- 可配置的滑动窗口: 使用可配置的滑动窗口来确定每秒事务数(TPS),确保精确和自适应的限流。
- 配置: 允许对PID参数(
kp
、ki
、kd
)、错误限制、输出限制和更新间隔进行微调。
Nenya-Sentinel
Nenya-Sentinel 将是一个独立的限流服务,它将支持gRPC,以便轻松集成到微服务架构中作为sidecar。尽管开发尚未开始,但它已包含在工作区中,作为本项目路线图的一部分。
入门
运行示例
目前,Nenya包含一个用于测试和调整的模拟示例。您可以使用以下命令运行模拟
cargo run --example request_simulator -- \
--base_tps 80.0 \
--min_tps 1.0 \
--max_tps 60.0 \
--target_tps 40.0 \
--trailing_window 5 \
--duration 120 \
--amplitudes 40.0,10.0 \
--frequencies 0.1,0.5 \
--kp 0.5 \
--ki 0.1 \
--kd 0.05 \
--error_limit 100.0 \
--output_limit 5.0 \
--update_interval 1000
许可证
本项目采用MIT许可证。有关详细信息,请参阅LICENSE 文件。