Sentinel 有6 种核心流量控制规则,针对不同场景保护服务:流控规则(限制 QPS/ 线程数,防止流量过载)、熔断降级规则(故障隔离,避免服务雪崩)、热点参数规则(对高频请求参数限流,防爬虫)、系统规则(从 CPU/ 负载全局防护)、授权规则(设置调用源黑白名单)、集群流控规则(分布式环境统一限流)。所有规则可组合使用,覆盖单机、集群、网关、接口、参数全维度,精准管控流量,是微服务高可用的基础保障。
Sentinel 提供3 种熔断降级策略:慢调用比例(统计超时请求占比,适合接口响应不稳定场景)、异常比例(统计异常请求占比,适合业务报错频繁场景)、异常数(单位时间异常数量达标熔断,适合小流量接口)。熔断后服务暂时关闭,等待窗口期后半开探测,恢复正常则放行。策略无侵入、可动态配置,触发后执行降级逻辑,保障核心服务可用,彻底解决微服务级联故障问题。
自定义限流逻辑有两种方式:注解方式,使用@SentinelResource指定blockHandler和fallback方法,分别处理限流、降级;编程方式,手动捕获BlockException,自定义返回结果。支持全局异常处理器统一处理,返回标准化提示。逻辑与业务代码解耦,可自定义返回值、页面、日志,适配不同业务需求,零成本实现个性化限流响应。
Sentinel 支持5 种规则持久化方式:Nacos(推荐,动态配置、高可用)、Apollo(携程配置中心,企业级)、Redis(内存存储,高性能)、ZooKeeper(分布式协调,一致性强)、本地文件(单机测试用)。生产环境首选 Nacos,规则修改后实时推送、持久化不丢失,支持多服务共享规则,完美解决重启后规则失效的痛点,是动态规则管理的标准方案。
相比 Hystrix,Sentinel 轻量无依赖、性能更高,支持更多限流维度,规则可动态配置,自带控制台;Hystrix 已停更,仅支持异常熔断。相比 Guava RateLimiter,Sentinel 支持集群、熔断、降级、热点、系统防护全功能,适配微服务分布式场景,Guava 仅支持单机限流。Sentinel 是一站式流量治理组件,功能全、易集成、云原生适配,是微服务流量管控的最优选择。
Sentinel 通过滑动时间窗口统计请求数据,实时采集 QPS、线程数、响应时间、异常数指标。数据存储在本地内存,定时上报控制台,支持秒级监控。底层用原子变量高效统计,无性能损耗。监控数据可对接 Prometheus、Grafana,实现可视化大盘、告警。无需额外采集器,自动埋点无侵入,实时展示服务运行状态,快速定位流量异常。
流量控制是预防型,限制请求 QPS/ 线程数,防止服务被流量打垮,主动拦截超额请求;熔断降级是故障型,当服务出现慢调用、异常时,自动切断调用,防止故障扩散。流控针对流量峰值,降级针对服务故障;流控是流量整形,降级是服务容错。两者配合使用,流控保稳定,降级防雪崩,共同构建微服务高可用体系。
热点参数限流针对请求中的高频参数(如商品 ID、用户 ID)限流,自动统计热门参数的访问频率。使用@SentinelResource标注接口,在控制台配置参数索引、阈值,支持特殊参数例外放行。配置后精准限制恶意请求,不影响正常用户。适用于秒杀、商品详情等高并发场景,规则支持 Nacos 动态更新,零代码侵入,是精细化限流的核心功能。
集成只需三步:引入sentinel-spring-cloud-starter依赖;配置 Sentinel 控制台地址;在接口上添加@SentinelResource定义资源。自动适配 Feign、Gateway、Dubbo,无需手动埋点。支持配置中心动态规则、自动服务发现、监控上报。开箱即用,兼容 Spring Cloud 全生态,5 分钟完成集成,快速实现微服务流量治理。
Sentinel 核心是客户端嵌入式,无中心化依赖,控制台宕机不影响服务限流规则生效。规则持久化到 Nacos 等配置中心,本地缓存备份,控制台恢复后自动同步。集群流控用独立 Token Server,主从部署无单点。客户端规则本地生效,不依赖外部服务,自身无状态可水平扩展。架构极简,客户端自治,彻底避免限流组件本身成为系统瓶颈。
动态规则源是 Nacos/Apollo 等外部配置,Sentinel 客户端监听配置变更,实时拉取加载规则。实现方式:引入对应数据源依赖,配置规则存储地址,客户端自动订阅更新。规则修改后秒级生效,无需重启服务。支持多数据源切换、规则优先级配置,集中管理所有服务规则,是生产环境动态流量管控的必备能力。
系统规则从服务器全局维度防护,基于 CPU 使用率、系统负载、内存、入口 QPS、线程数 5 个指标。当指标达到阈值,自动拦截所有入口流量,保护服务器不崩溃。区别于接口级限流,系统规则是最后一道防线,防止整体资源耗尽。无需针对单个接口配置,全局生效,适用于高并发、资源敏感的生产服务器,保障系统底层稳定。
核心注解是@SentinelResource,用于定义限流资源:value 指定资源名,blockHandler 处理限流,fallback 处理降级,exceptionsToIgnore 忽略指定异常。可标注在 Controller、Service 方法上,自动埋点。配合@RefreshScope实现动态规则。注解无侵入,简化代码,支持全局统一处理,是 Spring 环境中使用 Sentinel 的标准方式。
Sentinel 控制台是可视化管理平台,核心功能:实时监控服务指标、配置 / 管理各类规则、查看链路调用关系、管理集群流控、查询日志、配置机器列表。支持规则推送、查询、删除,实时生效。界面简洁易用,中文友好,无需命令行操作,集中管控所有微服务流量规则,是运维、开发的必备工具。
FlowSlot 是流量控制插槽,负责统计 QPS/ 线程数,执行限流逻辑,拦截超额请求,预防流量过载;DegradeSlot 是熔断降级插槽,统计慢调用、异常指标,执行熔断逻辑,隔离故障服务。两者都是 Sentinel 责任链的核心节点,FlowSlot 处理流量问题,DegradeSlot 处理故障问题,按顺序执行,共同保障服务高可用。
Sentinel 支持三种限流算法:快速失败(默认,超额直接拒绝)、预热冷启动(适合服务刚启动,逐步放开流量,避免冷启动故障)、排队等待(请求排队,固定间隔放行,适合流量削峰)。底层基于滑动窗口实现,预热用令牌桶算法逐步增加令牌,排队用漏桶算法平滑流量。可根据接口特性选择,适配启动、秒杀、稳定流量等不同场景。
Sentinel 有两种资源隔离策略:线程池隔离(为每个资源分配独立线程池,故障不扩散)、信号量隔离(限制并发线程数,轻量高性能)。默认使用信号量隔离,无额外线程开销,适合微服务;线程池隔离适合第三方调用场景。隔离后单个资源故障不会影响其他资源,实现服务内部容错,是熔断降级的基础能力。
集群流控让分布式服务统一限流,避免单机限流导致整体超量。分为 Token Server(令牌分发)和 Token Client(客户端申请令牌)。客户端请求限流时,向 Token Server 申请令牌,全局统一管控。支持点对点、广播模式,Token Server 主从高可用。适用于微服务集群、网关统一限流,精准控制全局总流量,解决分布式限流不均问题。
Sentinel 原生支持异步调用限流,通过AsyncEntry标注异步资源,自动追踪异步上下文。统计异步请求的 QPS、线程数,执行限流、降级规则。兼容 Spring @Async、CompletableFuture,无需手动处理上下文。异步与同步限流规则一致,统一管控,避免异步请求耗尽资源,适配微服务异步化、响应式编程场景。
BlockException是 Sentinel 的限流 / 降级异常,包含 FlowException(限流)、DegradeException(降级)等子类。处理方式:注解指定 blockHandler、全局异常捕获、自定义异常处理器。统一返回友好提示、默认值或缓存数据,不抛出原始异常。优雅处理异常,提升用户体验,避免业务中断,是 Sentinel 接入的必备配置。
Sentinel 性能优化:开启本地规则缓存,减少远程调用;使用热点限流替代全局限流,降低统计开销;关闭无用插槽,精简责任链;异步上报监控数据,不阻塞业务;合理设置时间窗口,减少内存占用;网关层集中限流,减轻服务压力;升级最新版本,使用优化后的滑动窗口。优化后支持百万级 QPS,性能损耗低于 1%,无业务感知。
Sentinel 原生适配云原生:支持 K8s 容器化部署、动态扩缩容;集成 Istio、Gateway 实现网格流量管控;规则持久化适配 ConfigMap;监控对接 Prometheus 生态;无状态设计适配容器弹性调度。轻量无依赖,自动感知服务上下线,完美适配容器、微服务、Service Mesh 架构,是云原生流量治理的标准组件。
在 Gateway/Spring Cloud Gateway 中集成 Sentinel,实现网关统一限流:配置路由级、API 级流控规则,支持集群限流、IP 限流、参数限流。网关作为流量入口,统一拦截超额请求,保护后端微服务。支持自定义限流响应、灰度流量管控,集中治理入口流量,避免单个服务配置繁琐,是微服务网关的核心防护方案。
Sentinel 提供 Prometheus 监控端点,自动暴露指标。引入依赖后,Prometheus 定时拉取 QPS、限流、熔断指标,Grafana 配置可视化大盘,展示实时流量、异常趋势。配置告警规则,限流、熔断触发时通知运维。无缝对接云原生监控体系,实现全方位流量监控、告警,替代原生控制台,满足企业级监控需求。
通过熔断降级 + 系统规则处理级联故障:下游服务异常时,自动熔断上游调用,防止故障扩散;开启系统规则,保护服务器资源;配置线程隔离,避免单个服务耗尽线程;接入降级逻辑,返回兜底数据。多层防护,从接口、服务、系统三个维度阻断故障,彻底解决微服务雪崩问题,保障核心业务持续可用。
QPS 限流限制每秒请求数,适合 IO 密集型、短请求接口(如查询接口),控制请求总量;线程数限流限制并发线程数,适合 CPU 密集型、长请求接口(如计算接口),防止线程耗尽。QPS 侧重流量总量,线程数侧重并发度。Sentinel 支持两种模式自由切换,根据接口类型选择,实现精细化限流。
规则持久化到 Nacos 等分布式配置中心,利用其强一致性保证多服务规则同步;客户端监听配置变更,实时加载,无延迟;控制台推送规则时原子更新,避免中间状态;本地缓存规则,配置中心宕机时继续使用。支持规则版本管理、回滚,确保所有服务节点规则一致、准确,杜绝规则错乱导致的限流异常。
Sentinel 与 Seata 无缝集成,实现流量管控 + 分布式事务协同:Sentinel 限流保护事务接口,避免高并发导致事务故障;Seata 保证数据一致性,Sentinel 防止流量过载。两者共用 Spring Cloud 生态,无配置冲突。在订单、支付等核心业务中,流量管控保障事务稳定性,分布式事务保证数据安全,双重防护提升业务可靠性。
非 Spring 项目手动接入 Sentinel:引入核心依赖,手动用SphU.entry()定义资源,捕获 BlockException;手动配置规则(本地文件 / 硬编码)。支持 Java SE、Dubbo 独立项目,无需 Spring 环境。核心 API 简单易用,手动埋点实现限流、降级,适配传统项目、嵌入式应用,通用性极强。