概述

Sentinel 是阿里巴巴开源的流量防卫组件,支持对微服务流量进行实时监控和保护,特别适用于 Spring Cloud GatewayZuul主流 API 网关的限流熔断等场景。

功能

Sentinel 提供流量控制熔断降级系统自适应保护热点参数限流等核心功能,帮助开发者应对高并发流量及微服务系统的稳定性挑战

优点

Sentinel 具备轻量化、易集成、实时性强、规则灵活配置等优点,支持多语言、多框架,并提供可视化的控制台,方便动态管理限流规则。

## 限流规则的维度

Sentinel 支持多种限流规则维度,灵活应对不同的流量控制需求,包括网关维度和 API 分组维度。

需求如下:假设有两个服务的多个 URL:

A服务:

  1. http://ip:port/a/xxx - 要求:60秒内最多访问60次
  2. http://ip:port/a/yyy - 要求:60秒内最多访问60次
  3. http://ip:port/a/zzz - 要求:60秒内最多访问30次

B服务:

  1. http://ip:port/b/eee - 要求:60秒内最多访问30次
  2. http://ip:port/b/fff - 要求:60秒内最多访问60次
  3. http://ip:port/b/ggg - 要求:60秒内最多访问60次

利用 Sentinel 的 API 分组维度,可以将所有限流规则设置为分组。例如:将“60秒内最多访问30次”的规则归为一组,无论 URL 是否属于同一微服务,都可以实现分组限流。

网关维度

针对整个网关或某个微服务的全局限流规则。

适用于粒度较粗的限流场景,例如对某个微服务的所有请求进行统一限流。

比如:某微服务的限流规则:60秒内最多访问60次,无论具体 URL。

API 分组维度

针对一系列特定 URL 的限流规则,URL 可以跨微服务。

适用于粒度较细的限流场景,例如针对某些业务关键接口进行单独限流。

比如:将 http://ip:port/a/zzzhttp://ip:port/b/eee 配置为同一分组,限流规则为60秒内最多访问30次。

集成

下面的案例基于Spring Cloud Gateway+Sentinel 实现系统限流

image-20241215225935911