Sentinel

该文章已生成可运行项目,

一、Sentinel 是什么(正确认知)

Sentinel 是阿里开源的:

👉 分布式流量防护组件

核心能力:

  • 限流(Flow Control)
  • 熔断(Circuit Breaker)
  • 降级(Fallback)
  • 热点参数限流
  • 系统自适应保护

🧠 一句话理解:

Sentinel = 微服务的“流量保险丝 + 安全阀门”


二、为什么必须要 Sentinel(生产真实问题)

如果没有 Sentinel:


订单服务
↓
用户服务挂了
↓
线程阻塞
↓
Tomcat线程池耗尽
↓
整个系统崩溃(雪崩)

🚨 真实生产问题:

1️⃣ 突发流量(秒杀)


10万请求瞬间打进来
系统直接崩

2️⃣ 下游服务宕机


支付服务挂了
→ 订单服务全部卡死

3️⃣ 慢请求拖垮系统


数据库慢查询
→ 线程阻塞
→ CPU 100%

🧩 三、Sentinel 的核心架构


请求
 ↓
Slot链(核心)
 ↓
限流 / 熔断 / 系统保护
 ↓
是否放行

核心概念:

概念作用
Resource资源(接口/方法)
Slot拦截器链
Context请求上下文
Rule规则

🚦 四、限流(Flow Control)


1️⃣ 限流原理

Sentinel 使用:

✔ 滑动窗口算法(核心)


示例:


1秒最多 100 请求

超过:


直接拒绝(BlockException)

2️⃣ 三种限流模式


✅ (1)QPS限流(最常用)


@SentinelResource(value = "orderApi", blockHandler = "blockHandler")
public String createOrder(){
    return "success";
}

public String blockHandler(BlockException e){
    return "请求过于频繁";
}

📌 规则:


QPS > 10 → 拒绝

✅ (2)并发线程数限流


最多 20 个线程同时执行

适用于:

  • 慢接口
  • DB压力接口

✅ (3)热点参数限流(非常重要)


@SentinelResource(value = "hotKey")
public String getProduct(Long id){
    return "商品:" + id;
}

规则:


id = 1 → 限流更严格(爆款商品)

👉 秒杀系统核心能力


🔥 五、熔断(Circuit Breaker)


1️⃣ 熔断是什么


调用失败太多 → 直接不调用

类比:

电路保险丝


2️⃣ 三种状态(必须背)


CLOSED(关闭)   → 正常调用
OPEN(打开)     → 直接拒绝
HALF_OPEN(半开)→ 尝试恢复

3️⃣ 熔断触发条件


失败比例 > 50%
或
异常数 > 阈值

4️⃣ 生产级示例


@SentinelResource(
    value = "userApi",
    fallback = "fallback",
    blockHandler = "blockHandler"
)
public String getUser(Long id){
    if(id == 1){
        throw new RuntimeException("模拟异常");
    }
    return "user";
}

fallback(业务异常)


public String fallback(Long id){
    return "系统降级返回";
}

blockHandler(限流异常)


public String blockHandler(Long id, BlockException e){
    return "流量过大";
}

🧠 六、限流 vs 熔断(核心区别)

类型作用
限流控制请求进入
熔断阻止调用下游

例子:


限流:入口控制(门禁)
熔断:发现坏服务直接断开

🧱 七、降级(Fallback)


1️⃣ 降级场景

  • DB慢
  • RPC失败
  • 第三方接口挂了

示例:


return "缓存数据 / 默认数据 / 静态数据";

🚨 八、Sentinel 生产级架构(重点)


Gateway
   ↓
Sentinel(网关限流)
   ↓
Feign调用
   ↓
Sentinel(服务级限流)
   ↓
DB / Redis / MQ

⚙️ 九、Sentinel + Gateway(企业常用)


1️⃣ 网关限流


spring:
  cloud:
    gateway:
      routes:
        - id: order
          uri: lb://order-service
          predicates:
            - Path=/order/**
          filters:
            - name: RequestRateLimiter

2️⃣ Sentinel网关整合


API网关统一限流入口

🧠 十、热点商品限流(秒杀核心)


场景:


商品ID = 1(爆款)

规则:


普通商品:10 QPS
爆款商品:1 QPS

🧨 十一、真实秒杀系统(重点)


架构:


Gateway限流
   ↓
Redis库存预扣
   ↓
Sentinel保护
   ↓
MQ异步下单
   ↓
DB落库

防止超卖:


Redis原子扣减库存

🚨 十二、生产级风控结合 Sentinel


1️⃣ IP限流


同IP 1秒 10次

2️⃣ 用户限流


userId + API

3️⃣ 黑名单


黑名单IP直接拒绝

4️⃣ 防刷组合


Sentinel + Redis + Gateway + JWT

🔥 十三、面试标准回答(必须背)


❓ Sentinel作用?

👉 标准回答:

Sentinel 是一个流量控制组件,用于实现微服务的限流、熔断和降级。

它通过 Slot 责任链机制,对请求进行实时统计,基于滑动窗口算法实现 QPS 限流,同时支持基于响应时间和错误比例的熔断机制。

在生产环境中,Sentinel 通常与 Gateway、Feign 结合使用,实现入口限流和服务级保护,防止系统雪崩。


❓ 限流 vs 熔断区别?

限流是控制请求进入系统,熔断是保护下游服务,当错误率过高时直接拒绝请求

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值