1. Sentinel
- Sentinel 是阿里巴巴开源的限流、熔断、降级组件,旨在为分布式系统提供可靠的保护机制。
- 它设计用于解决高并发流量下的稳定性问题,并且支持与 Dubbo、Spring Cloud 等多种框架集成。
Sentinel 的功能:home | Sentinel
- 限流:支持基于 QPS(每秒查询数)、并发数量等条件的限流。支持滑动窗口、预热、漏桶等算法。
- 熔断降级:支持失败率、慢调用比例等指标触发熔断,并提供自动恢复机制。
- 热点参数限流:可以基于特定的参数进行限流,如限制特定用户 ID 的请求频率。
- 系统负载保护:可以根据系统的实际负载(如 CPU、内存)动态调整流量。
- 丰富的规则配置:通过配置中心或控制台动态调整限流和熔断规则。
优势
- 功能丰富、提供控制台、更新较频繁、社区活跃、文档清晰,能够快速入门上手。
2. Hystrix
- Hystrix 是 Netflix 开源的一个限流、熔断和降级库。
- 它通过熔断器模式在检测到下游服务失败率过高时中断请求,以防止系统资源耗尽。
目前已经停止维护
3、Resilience4j
Resiience4j 是一个轻量级的熔断、限流、隔离、重试库,它设计灵感来源于 Netflix 的 Hystrix 框架,专门设计为响应式编程和 Java 8+风格下的熔断库。
优点: 它很轻量级,没有外部依赖,特别适合响应式编程风格,
缺点: 相比 Sentinel,功能相对较少,尤其在限流功能上不够丰富。
4、Guava RateLimiter
Ratelimiter 是 Guava 提供的一个限流工具,基于令牌桶算法实现,主要用于对系统的流量进行控制。
缺点:它仅支持限流,且功能相对单一,不能处理熔断等复杂场景。适合不需要复杂熔断或隔离功能的小型项目,主要用于 单机系统 的流量控制。
5、Redisson RRateLimiter
Redisson 是一个基于 Redis 的 Java 驱动程序,它提供了丰富的分布式工具和数据结构,其中包括分布式锁、计数器、队列、信号量,以及限流(Rate Limiter)等功能。
Redisson 提供了 Ratelimiter 接口来支持限流操作。你可以定义时间窗口内允许的最大请求数,超出限制的请求将被阳塞或拒绝。它的限流基于 Redis 的计数器来控制访问频率,确保即使在多台服务器之间,也能有效地限制请求速率。
总结
- Sentinel 是目前最成熟、功能最强大的分布式限流、熔断、降级组件,适合大规模分布式系统。
- Resilience4j 专为响应式编程设计,适合轻量级应用和微服务架构。
- Guava RateLimiter 适合单机环境下的简单限流需求。
- Redisson RRateLimiter 适合已有 Redis 基础设施的分布式系统,提供高效的分布式限流功能。
- Hystrix 已经停止维护,建议在新项目中避免使用,但对于遗留系统可以继续维护。