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,让你的限流服务更加高效、灵活和可靠!
鸿蒙开发工具大赶集
本仓将收集和展示鸿蒙开发工具,欢迎大家踊跃投稿。通过pr附上您的工具介绍和使用指南,并加上工具对应的链接,通过的工具将会成功上架到我们社区。012hertz
Go 微服务 HTTP 框架,具有高易用性、高性能、高扩展性等特点。Go01每日精选项目
🔥🔥 每日精选已经升级为:【行业动态】,快去首页看看吧,后续都在【首页 - 行业动态】内更新,多条更新哦~🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~029kitex
Go 微服务 RPC 框架,具有高性能、强可扩展的特点。Go00Cangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie058毕方Talon工具
本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python040PDFMathTranslate
PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython06mybatis-plus
mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava03国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区018- DDeepSeek-R1探索新一代推理模型,DeepSeek-R1系列以大规模强化学习为基础,实现自主推理,表现卓越,推理行为强大且独特。开源共享,助力研究社区深入探索LLM推理能力,推动行业发展。【此简介由AI生成】。Python00
热门内容推荐
最新内容推荐
项目优选









