#rate-limiting #pid #standalone #service #limiter #control #nenya

app nenya-sentinel

使用PID控制的独立限流服务

1 个不稳定版本

0.0.1 2024年5月25日

34 in #limiter

MIT 许可证

4KB

Nenya

Nenya 是一个正在进行中的项目,旨在通过PID控制器提供一个强大且灵活的限流器。Nenya组织成一个Cargo工作区,包含两个主要组件

  • Nenya: 使用PID控制器进行限流的Rust包。
  • Nenya-Sentinel: 一个独立的限流器,最终将开发成一个gRPC服务,旨在作为现有服务的sidecar运行。

概述

Nenya

Nenya是一个Rust包,提供由PID控制器驱动的限流功能。该包旨在提供一种动态且高效的方式来管理请求速率,使其适用于高吞吐量服务。

功能

  • PID控制器: 利用比例-积分-微分(PID)控制器根据当前的流量模式动态调整速率限制。
  • 可配置的滑动窗口: 使用可配置的滑动窗口来确定每秒事务数(TPS),确保精确和自适应的限流。
  • 配置: 允许对PID参数(kpkikd)、错误限制、输出限制和更新间隔进行微调。

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 文件。

无运行时依赖项