首页
/ Gubernator:分布式限流服务的未来

Gubernator:分布式限流服务的未来

2024-09-07 15:47:50作者:邵娇湘

项目介绍

Gubernator 是一款分布式、高性能、云原生且无状态的限流服务。它旨在为现代云环境提供一个简单、高效的限流解决方案。Gubernator 通过在集群中均匀分布限流请求,确保系统可以通过简单地增加节点来扩展。此外,Gubernator 不依赖外部缓存(如 memcached 或 Redis),因此无需与依赖服务进行部署同步,这使得在 Kubernetes 或 Nomad 等编排系统中动态扩展或缩减集群变得非常简单。

项目技术分析

技术架构

Gubernator 的核心架构设计遵循了分布式系统的最佳实践,主要包括以下几个方面:

  1. 无状态设计:Gubernator 不依赖磁盘存储,所有配置和状态信息都通过客户端请求传递,这使得服务在扩展和缩减时无需担心数据同步问题。
  2. 一致性哈希:通过一致性哈希算法,Gubernator 能够将请求均匀分布到集群中的各个节点,确保负载均衡。
  3. 批处理机制:Gubernator 支持批处理请求,这在大流量环境下可以显著提高吞吐量和降低延迟。
  4. 全局缓存:对于极高吞吐量的环境,Gubernator 提供了全局缓存选项,实现最终一致性。

限流算法

Gubernator 支持两种限流算法:

  1. 令牌桶算法:适用于需要处理突发流量的场景,一旦达到限流阈值,所有请求将被拒绝,直到限流周期重置。
  2. 漏桶算法:适用于需要持续流量的场景,即使达到限流阈值,请求仍会以恒定速率通过,不会完全阻塞。

项目及技术应用场景

Gubernator 适用于多种应用场景,特别是那些需要高性能、高可用性和动态扩展能力的系统。以下是一些典型的应用场景:

  1. API 限流:在微服务架构中,Gubernator 可以用于限制 API 请求速率,防止服务过载。
  2. 邮件发送限流:在邮件服务中,Gubernator 可以限制用户在特定时间段内发送的邮件数量,防止滥用。
  3. 分布式系统限流:在分布式系统中,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,让你的限流服务更加高效、灵活和可靠!

热门项目推荐
相关项目推荐

项目优选

收起
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
33
24
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
830
0
redis-sdkredis-sdk
仓颉语言实现的Redis客户端SDK。已适配仓颉0.53.4 Beta版本。接口设计兼容jedis接口语义,支持RESP2和RESP3协议,支持发布订阅模式,支持哨兵模式和集群模式。
Cangjie
376
32
advanced-javaadvanced-java
Advanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。
JavaScript
75.92 K
19.09 K
qwerty-learnerqwerty-learner
为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers
TSX
15.62 K
1.45 K
easy-eseasy-es
Elasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本.底层采用RestHighLevelClient,兼具低码,易用,易拓展等特性,支持es独有的高亮,权重,分词,Geo,嵌套,父子类型等功能...
Java
19
2
杨帆测试平台杨帆测试平台
扬帆测试平台是一款高效、可靠的自动化测试平台,旨在帮助团队提升测试效率、降低测试成本。该平台包括用例管理、定时任务、执行记录等功能模块,支持多种类型的测试用例,目前支持API(http和grpc协议)、性能、CI调用等功能,并且可定制化,灵活满足不同场景的需求。 其中,支持批量执行、并发执行等高级功能。通过用例设置,可以设置用例的基本信息、运行配置、环境变量等,灵活控制用例的执行。
JavaScript
9
1
Yi-CoderYi-Coder
Yi Coder 编程模型,小而强大的编程助手
HTML
57
7
RuoYi-VueRuoYi-Vue
🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
Java
147
26
anqicmsanqicms
AnQiCMS 是一款基于Go语言开发,具备高安全性、高性能和易扩展性的企业级内容管理系统。它支持多站点、多语言管理,能够满足全球化跨境运营需求。AnQiCMS 提供灵活的内容发布和模板管理功能,同时,系统内置丰富的利于SEO操作的功能,帮助企业简化运营和内容管理流程。AnQiCMS 将成为您建站的理想选择,在不断变化的市场中保持竞争力。
Go
78
5