请解释 Sentinel 的核心概念,并结合你参与过的项目,具体说明在接口限流和熔断场景下你是如何落地使用 Sentinel 的?
考察说明
考察对 Sentinel 核心原理的理解以及在实际项目中应用限流和熔断的能力。
回答思路
- 【回答框架 1】Sentinel 是面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。其核心概念包括资源、规则和 Slot 链,资源是保护的入口,规则定义保护行为,Slot 链则串联各种处理逻辑。
- 【回答框架 2】在实际项目中,我会先引入 Sentinel 依赖,并通过注解或 API 方式定义需要保护的资源,例如对某个核心接口加上 @SentinelResource 注解,并配置 fallback 处理逻辑。对于限流,我会根据接口的 QPS、并发线程数等指标配置 FlowRule,例如设置 QPS 阈值为 100,并选择合适的流控效果如快速失败或排队等待。
- 【回答框架 3】对于熔断,我利用 Sentinel 的熔断降级功能,配置 DegradeRule,基于慢调用比例或异常比例设置阈值,例如当接口的异常比例超过 20% 时触发熔断,并在熔断后调用降级方法,返回预先定义的兜底结果,避免服务雪崩。同时会结合控制台动态调整规则。
- 【回答框架 4】在多实例部署时,我会启用 Sentinel 的集群流控能力,配合 Token Server 实现全局限流;否则单机限流在流量倾斜时效果有限。整体上,Sentinel 提供了实时的监控数据,可以结合 Dashboard 进行规则调整和告警。
- 【回答框架 5】注意事项:Sentinel 的规则默认保存在内存中,重启会丢失,生产环境需要配合持久化方案,如通过 Nacos 或 Apollo 配置中心动态推送规则,保证规则的一致性。此外,降级逻辑要尽量简单且无副作用,避免降级本身拖垮系统。
- 【关键点 1】Sentinel 核心切入点为流量控制、熔断降级和系统负载保护。
- 【关键点 2】实际使用中通过 @SentinelResource 注解定义资源并配置 FlowRule、DegradeRule。
- 【关键点 3】多实例下需要启用集群流控,依赖 Token Server 进行全局统计。
- 【关键点 4】生产环境规则需结合配置中心持久化,避免重启丢失。
- 【关键点 5】熔断策略可基于慢调用比例或异常比例,并配置兜底降级方法。
- 【易错点 1】忽略规则持久化,导致重启后限流熔断失效。
- 【易错点 2】降级方法逻辑过重,影响性能或引发二次故障。
- 【易错点 3】未区分单机与集群限流,流量不均匀时保护效果打折。