limiteron 0.2.7

Unified flow control framework for Rust
Documentation

Limiteron

CI crates.io docs.rs downloads license rust

English

Rust 统一流量控制框架 — 限流、配额管理、熔断、封禁一体化解决方案。


✨ 核心特性

  • 多种限流算法:令牌桶(Token Bucket)、固定窗口(Fixed Window)、滑动窗口(Sliding Window)、并发控制、GCRA
  • 封禁管理:IP / User / MAC / Geo 封禁、自动封禁、优先级体系、YAML 文件批量加载与热重载
  • 配额控制:周期性配额分配、配额预警、配额透支
  • 熔断器:自动故障转移、状态恢复、降级策略
  • 标识符匹配:IP、用户 ID、设备 ID、API Key、地理位置、设备信息、自定义匹配器
  • 多存储后端:内存存储开箱即用;通过 DBNexus 支持 PostgreSQL 持久化;缓存经 oxcache 统一管理
  • 可观测性:Prometheus 指标、OpenTelemetry 追踪、审计日志、日志脱敏
  • 高性能:P99 延迟 < 200μs,令牌桶吞吐 12M+ ops/s
  • 声明式宏:#[flow_control] 宏简化限流配置
  • Tower 中间件:HTTP 中间件层集成
  • Admin REST API:封禁 / 配额 / 状态管理端点

📦 快速开始

安装

cargo add limiteron

或手动添加到 Cargo.toml:

[dependencies]
limiteron = { version = "0.2.6", features = ["macros"] }

基础使用

令牌桶限流器:

use limiteron::limiters::{Limiter, TokenBucketLimiter};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 10 个令牌,每秒补充 1 个
    let limiter = TokenBucketLimiter::new(10, 1);

    match limiter.allow(1).await? {
        true => println!("✅ 请求允许"),
        false => println!("❌ 请求被限流"),
    }
    Ok(())
}

声明式宏:

use limiteron::flow_control;

#[flow_control(rate = "100/s", quota = "10000/m", concurrency = 50)]
async fn api_handler(user_id: &str) -> Result<String, limiteron::error::LimiteronError> {
    Ok(format!("处理用户 {} 的请求", user_id))
}

Governor 端到端控制:

use limiteron::Governor;

let governor = Governor::new().await;

更多示例见 examples/ 目录。

🔧 特性标志

Limiteron 默认不启用任何可选功能,按需开启:

预设 说明 启用的特性
minimal 核心限流(无外部存储依赖)
standard 核心 + 基础高级功能 postgres, ban-manager, quota-control, circuit-breaker
full 所有功能 全部特性

常用单独特性:

特性 描述
postgres PostgreSQL 存储(DBNexus)
ban-manager 封禁管理
quota-control 配额控制
circuit-breaker 熔断器
cache-storage 缓存存储(oxcache Redis 集成)
macros #[flow_control] 宏支持
telemetry OpenTelemetry 追踪
monitoring Prometheus 指标
tower-middleware Tower HTTP 中间件
admin-api 管理 REST API
multi-tenant 多租户支持
geo-matching 地理位置匹配
device-matching 设备信息匹配
distributed 分布式限流器支持(DistributedLimiter trait + InMemoryDistributedLimiter 实现)
kit trait-kit AsyncKit integration (LimiteronModule)
i18n Internationalization support
inklog inklog log integration

完整特性列表见 Cargo.toml 的 [features] 段。

🏗️ 架构

graph TB
    A[请求] --> B[API 层 / Tower 中间件]
    B --> C[Governor 主控制器]
    C --> D[标识符提取 Matchers]
    C --> E[决策链 DecisionChain]
    D --> F[规则匹配]
    E --> G[限流器]
    E --> H[封禁管理]
    E --> I[配额控制]
    E --> J[熔断器]
    G --> K[L1/L2/L3 缓存]
    H --> K
    I --> K
    K --> L[存储层]
    L --> M[PostgreSQL via DBNexus]
    L --> N[内存存储]

核心模块:

模块 路径 说明
Governor src/governor.rs 主控制器,端到端流量控制
Limiters src/limiters/ 限流算法(令牌桶、固定窗口、滑动窗口、GCRA、并发)
Matchers src/matchers/ 标识符提取与规则匹配
Ban src/ban/ 封禁管理、文件加载、热重载
Quota src/quota/ 配额控制
Circuit src/circuit/ 熔断器
Storage src/storage/ 存储 trait 与内存实现
Adapters src/adapters/ DBNexus 存储适配器(PostgreSQL)
Cache src/cache/ oxcache 统一缓存服务
DecisionChain src/decision_chain/ 策略决策引擎
Middleware src/middleware/ Tower HTTP 中间件
Admin src/admin/ 管理 REST API
Telemetry src/telemetry/ 指标与追踪

📚 文档

API 文档:docs.rs/limiteron

🤝 贡献

欢迎贡献!详见 CONTRIBUTING.md。

📋 更新日志

详见 CHANGELOG.md。

📄 许可证

MIT License, Copyright (c) 2026 Kirky.X。详见 LICENSE。