【微服务】sentinel+gateway 实现限流
概述
Sentinel
是阿里巴巴开源的流量防卫组件,支持对微服务流量进行实时监控和保护,特别适用于
Spring Cloud Gateway
、Zuul
等主流 API 网关的限流
、熔断
等场景。
功能
Sentinel
提供流量控制
、熔断降级
、系统自适应保护
、热点参数限流
等核心功能,帮助开发者应对高并发流量及微服务系统的稳定性挑战
。
优点
Sentinel 具备轻量化、易集成、实时性强、规则灵活配置等优点,支持多语言、多框架,并提供可视化的控制台,方便动态管理限流规则。
## 限流规则的维度
Sentinel 支持多种限流规则维度,灵活应对不同的流量控制需求,包括网关维度和 API 分组维度。
需求如下:假设有两个服务的多个 URL:
A服务:
http://ip:port/a/xxx
- 要求:60秒内最多访问60次http://ip:port/a/yyy
- 要求:60秒内最多访问60次http://ip:port/a/zzz
- 要求:60秒内最多访问30次
B服务:
http://ip:port/b/eee
- 要求:60秒内最多访问30次http://ip:port/b/fff
- 要求:60秒内最多访问60次http://ip:port/b/ggg
- 要求:60秒内最多访问60次
利用 Sentinel 的 API 分组维度,可以将所有限流规则设置为分组。例如:将“60秒内最多访问30次”的规则归为一组,无论 URL 是否属于同一微服务,都可以实现分组限流。
网关维度
针对整个网关或某个微服务的全局限流规则。
适用于粒度较粗的限流场景,例如对某个微服务的所有请求进行统一限流。
比如:某微服务的限流规则:60秒内最多访问60次,无论具体 URL。
API 分组维度
针对一系列特定 URL 的限流规则,URL 可以跨微服务。
适用于粒度较细的限流场景,例如针对某些业务关键接口进行单独限流。
比如:将 http://ip:port/a/zzz
和
http://ip:port/b/eee
配置为同一分组,限流规则为60秒内最多访问30次。
集成
下面的案例基于Spring Cloud Gateway+Sentinel 实现系统限流
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.