Gubernator:分布式限流服务的未来
项目介绍
Gubernator 是一款分布式、高性能、云原生且无状态的限流服务。它旨在为现代云环境提供一个简单、高效的限流解决方案。Gubernator 通过在集群中均匀分布限流请求,确保系统可以通过简单地增加节点来扩展。此外,Gubernator 不依赖外部缓存(如 memcached 或 Redis),因此无需与依赖服务进行部署同步,这使得在 Kubernetes 或 Nomad 等编排系统中动态扩展或缩减集群变得非常简单。
项目技术分析
技术架构
Gubernator 的核心架构设计遵循了分布式系统的最佳实践,主要包括以下几个方面:
- 无状态设计:Gubernator 不依赖磁盘存储,所有配置和状态信息都通过客户端请求传递,这使得服务在扩展和缩减时无需担心数据同步问题。
- 一致性哈希:通过一致性哈希算法,Gubernator 能够将请求均匀分布到集群中的各个节点,确保负载均衡。
- 批处理机制:Gubernator 支持批处理请求,这在大流量环境下可以显著提高吞吐量和降低延迟。
- 全局缓存:对于极高吞吐量的环境,Gubernator 提供了全局缓存选项,实现最终一致性。
限流算法
Gubernator 支持两种限流算法:
- 令牌桶算法:适用于需要处理突发流量的场景,一旦达到限流阈值,所有请求将被拒绝,直到限流周期重置。
- 漏桶算法:适用于需要持续流量的场景,即使达到限流阈值,请求仍会以恒定速率通过,不会完全阻塞。
项目及技术应用场景
Gubernator 适用于多种应用场景,特别是那些需要高性能、高可用性和动态扩展能力的系统。以下是一些典型的应用场景:
- API 限流:在微服务架构中,Gubernator 可以用于限制 API 请求速率,防止服务过载。
- 邮件发送限流:在邮件服务中,Gubernator 可以限制用户在特定时间段内发送的邮件数量,防止滥用。
- 分布式系统限流:在分布式系统中,Gubernator 可以用于全局限流,确保系统资源在多个服务之间公平分配。
项目特点
无状态配置
Gubernator 的无状态设计是其最大的特点之一。每个请求都包含限流配置,这虽然增加了请求的负载,但实际上限流配置仅由几个 64 位整数组成,对性能影响微乎其微。
高性能
在生产环境中,Gubernator 单节点可以处理超过 2000 次请求每秒,且大部分批处理响应时间在 1 毫秒以内。对于转发到主节点的请求,响应时间通常在 30 微秒以内。
灵活部署
Gubernator 可以作为独立服务运行,也可以作为服务的边车(Sidecar)部署,甚至可以直接作为库集成到现有服务中,提供了极大的灵活性。
易于扩展
由于不依赖外部缓存,Gubernator 的扩展非常简单,只需增加节点即可实现水平扩展。
多种行为模式
Gubernator 提供了多种行为模式,包括批处理、非批处理和全局缓存,用户可以根据实际需求选择最合适的模式。
总结
Gubernator 是一款设计精良、性能卓越的分布式限流服务,适用于各种需要高性能限流的场景。其无状态设计、高性能、灵活部署和易于扩展的特点,使其成为云原生应用的理想选择。无论你是开发微服务、邮件服务还是其他分布式系统,Gubernator 都能为你提供强大的限流支持。
立即尝试 Gubernator,体验分布式限流服务的未来!
# 下载 docker-compose 文件
$ curl -O https://raw.githubusercontent.com/mailgun/gubernator/master/docker-compose.yaml
# 运行 docker 容器
$ docker-compose up -d
现在,你可以通过 CURL 向 Gubernator 发送限流请求:
# 访问 HTTP API 接口
$ curl http://localhost:9080/v1/HealthCheck
# 发送限流请求
$ curl http://localhost:9080/v1/GetRateLimits \
--header 'Content-Type: application/json' \
--data '{
"requests": [
{
"name": "requests_per_sec",
"uniqueKey": "account:12345",
"hits": "1",
"limit": "10",
"duration": "1000"
}
]
}'
Gubernator,让你的限流服务更加高效、灵活和可靠!
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0153- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0112