Limiteron
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.toml:
[]
= { = "0.2", = ["macros"] }
基础使用
令牌桶限流器:
use ;
async
声明式宏:
use flow_control;
async
Governor 端到端控制:
use Governor;
let 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。