2025-07-28 start:
Sentinel 限流和熔断原理
限流原理
Sentinel 的限流(Flow Control)主要通过以下几种算法实现:
-
滑动窗口算法:
-
将时间划分为多个小窗口,统计每个窗口的请求量
-
通过滑动的方式合并多个小窗口的统计数据,实现更平滑的限流
-
-
令牌桶算法:
-
系统以恒定速率向桶中添加令牌
-
请求到达时,必须获取令牌才能通过
-
当令牌不足时触发限流
-
-
漏桶算法:
-
请求像水一样流入漏桶,漏桶以固定速率流出请求
-
当桶满时,新请求被限流
-
-
热点参数限流:
-
对特定参数(如用户ID、商品ID)进行细粒度限流
-
统计不同参数值的请求量,对热点参数单独限流
-
熔断原理
Sentinel 的熔断(Circuit Breaking)基于以下几种策略:
-
慢调用比例熔断:
-
统计单位时间内慢调用的比例
-
当比例超过阈值且请求数达到最小请求数时触发熔断
-
熔断时长后进入半开状态,试探性允许部分请求通过
-
-
异常比例熔断:
-
统计单位时间内异常调用的比例
-
当比例超过阈值且请求数达到最小请求数时触发熔断
-
-
异常数熔断:
-
统计单位时间内的异常数量
-
当异常数超过阈值时触发熔断
-
工作流程
-
资源定义:为需要保护的代码块定义资源(如URL、方法调用等)
-
规则配置:为资源配置限流规则或熔断规则
-
指标统计:实时统计资源的QPS、响应时间、异常率等指标
-
规则检查:根据统计指标检查是否触发规则
-
规则执行:触发限流或熔断时执行预定义的行为(如直接拒绝、降级等)
-
状态恢复:熔断器会在设定的时间后进入半开状态尝试恢复
Sentinel 通过这种机制实现了对系统流量的精确控制,防止系统因过载而崩溃。
end
下载dashboard服务:Release v1.8.6 · alibaba/Sentinel · GitHub
将sentinel-dashboard-1.8.6.jar放到服务器的/opt/sentinel(没有就创建)
执行命令:nohup java -jar sentinel-dashboard-1.8.6.jar & 后台运行
访问:http://【ip】:8080/#/login
看到这个界面就表示已经安装完成了。
账号密码:sentinel/sentinel