SpringCloud 面试题, Sentinel 是怎么实现限流的?
SpringCloud 面试题, Sentinel 是怎么实现限流的?
QA
Step 1
Q:: SpringCloud 中的 Sentinel 是如何实现限流的?
A:: Sentinel 是 Alibaba 开源的一款流量防护组件,用于在分布式系统中实现限流、熔断、降级等功能。Sentinel 通过定义流量控制规则来实现限流。这些规则可以基于 QPS(每秒查询次数)、线程数、调用关系等维度来进行定义。当请求量超过设定的阈值时,Sentinel 会根据预先配置的处理策略(如拒绝请求、排队等待等)进行相应的处理,从而避免系统被突发流量冲垮。
Step 2
Q:: Sentinel 的核心组件有哪些?
A:: Sentinel 的核心组件包括以下几个部分:
1.
资源:表示要保护的业务逻辑,通常是方法或接口。
2.
规则:定义了如何对资源进行保护,包括限流规则、降级规则、系统规则等。
3.
SlotChain:规则链条,Sentinel 在对请求进行控制时,会按顺序执行这些规则。
4.
Node:统计节点,保存每个资源的实时调用数据,用于判断是否触发限流或熔断。
Step 3
Q:: 如何在 SpringCloud 中集成和使用 Sentinel?
A:: 要在 SpringCloud 中集成 Sentinel,通常需要以下步骤:
1. 引入 Sentinel 依赖,如 spring-cloud-starter-alibaba-
sentinel。
2.
在应用的配置文件中进行基础配置,指定 Sentinel 控制台地址等信息。
3. 通过注解如 @
SentinelResource 在方法上定义限流、降级等策略。
4.
配置 Sentinel 控制台,用于实时查看和管理流量控制规则。
Step 4
Q:: Sentinel 支持的限流策略有哪些?
A:: Sentinel 支持多种限流策略,包括:
1.
基于 QPS 限流:根据每秒请求数量限制流量。
2.
基于线程数限流:通过限制同时访问某资源的线程数量来控制流量。
3.
基于调用关系限流:对不同调用链路上的请求进行限流,比如特定服务之间的调用量控制。
4.
基于系统负载限流:根据系统的总体负载情况动态调整限流策略。
Step 5
Q:: Sentinel 是如何实现熔断的?
A:: Sentinel 通过定义熔断降级规则来实现熔断。当某个资源的调用失败率或响应时间超过设定阈值时,Sentinel 会将该资源的调用切换到熔断状态,直接返回预设的处理结果,避免进一步影响系统的稳定性。熔断的主要策略包括基于错误比例、错误数或响应时间的熔断。