开源组件,  系统运维

sentinel,kong,envoy关于限流的比较

  • Sentinel

Sentinel 是阿里巴巴开源的一款强大的流量控制组件,它主要提供以下几种维度的限流:

  1. 资源维度:这是 Sentinel 最基本的限流维度。在 Sentinel 中,所有的流量控制规则都是基于资源的。一个资源可以是任何你想保护或者限制的东西,例如一个方法,一个 API,甚至是一个系统功能。

  2. 来源维度:Sentinel 也可以根据调用的来源进行限流。例如,你可以设置规则来限制来自特定 IP 地址的流量。

  3. QPS (Queries Per Second) 维度:Sentinel 可以设置每秒查询次数的限流规则,以防止系统被过载。

  4. 并发线程数维度:Sentinel 可以限制通过某个资源的并发线程数量,这对于保护那些不支持高并发的资源非常有用。

  5. 关联资源维度:在某些情况下,你可能希望当一个资源达到阈值时,限制另一个资源的流量。Sentinel 支持这样的关联资源限流。

  6. 簇点链路:Sentinel 不仅支持对单个资源进行限流,还支持对整个调用链路进行限流。

  7. 系统负载维度:Sentinel 还可以根据系统的负载情况,如 CPU 使用率,总体入口 QPS,系统平均 RT,入口流量等进行动态的流量控制。

这些维度可以组合使用,以创建非常灵活和强大的流量控制策略。

  • kong

Kong 是一个开源的 API 网关,其限流插件提供了多种维度的限流支持,包括:

  1. Consumer 维度:Kong可以对每个 Consumer(也就是API的消费者,通常是一个客户端应用)进行限流。

  2. Credential 维度:如果你使用了身份验证插件,Kong也可以对每个凭证进行限流。

  3. IP 维度:Kong可以对每个IP地址进行限流。

  4. Service & Route 维度:Kong可以对每个Service或者Route进行限流。

限流的具体规则可以基于以下几个参数:

Second:每秒请求数量限制。
Minute:每分钟请求数量限制。
Hour:每小时请求数量限制。
Day:每天请求数量限制。
Month:每月请求数量限制。
Year:每年请求数量限制。

这些参数可以单独使用,也可以组合使用,以达到更精细的限流控制。

此外,Kong 还提供了一个"滑动窗口"的限流计数器,这种计数器可以更平滑地处理突发流量,而不会在每个限流周期的开始产生流量峰值。

  • envoy

Envoy 是一个高性能的开源代理,提供了强大的网络功能,包括动态服务发现,负载均衡,TLS 终止,HTTP/2 和 gRPC 代理,断路器,健康检查,分段/故障注入等。Envoy 的速率限制服务(Rate Limit Service, RLS)提供了一种通用的 HTTP 速率限制框架,可以在多个维度进行限流。

以下是 Envoy 提供的限流维度:

  1. 远程地址:可以根据请求的远程(客户端)IP地址进行限流。

  2. 请求头:可以根据请求头中的任意字段(例如 "User-Agent")进行限流。

  3. 请求路径:可以根据 HTTP 请求的路径进行限流。

  4. 请求方法:可以根据 HTTP 请求方法(例如 GET,POST 等)进行限流。

  5. 任意环境变量:可以根据 Envoy 中的任意环境变量进行限流。

  6. 来源服务:可以根据调用服务的身份进行限流。

这些维度可以单独使用,也可以组合使用,以满足各种复杂的限流需求。

需要注意的是,Envoy 的限流服务需要你自己实现并部署一个独立的 Rate Limit Service 来进行实际的速率限制决策。这意味着你可以在自己的 Rate Limit Service 中定义任何你需要的自定义限流维度。

留言

您的电子邮箱地址不会被公开。 必填项已用*标注

闽ICP备20008591号-1