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

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

2024-09-07 18:17:07作者:邵娇湘

项目介绍

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,让你的限流服务更加高效、灵活和可靠!

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
27
11
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
466
3.47 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
10
1
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
65
19
flutter_flutterflutter_flutter
暂无简介
Dart
715
172
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
23
0
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
203
82
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.27 K
695
rainbondrainbond
无需学习 Kubernetes 的容器平台,在 Kubernetes 上构建、部署、组装和管理应用,无需 K8s 专业知识,全流程图形化管理
Go
15
1
apintoapinto
基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。
Go
22
1