Sentinel最全详解(图文全面总结)

微服务是大型架构的核心,下面我重点详解Sentinel @mikechen

Sentinel

Sentinel 是阿里巴巴开源的一款面向微服务架构的,轻量级流量控制组件,

主要用于限流、熔断降级和系统负载保护等多维度保障微服务的稳定性。

Sentinel最全详解(图文全面总结)

Sentinel继承了阿里双十一大促多年的流量控制经验,支持秒杀、流量削峰、集群限流等场景。

并提供实时监控和规则动态下发功能,能与Spring Cloud,Dubbo等主流框架无缝集成。

 

Sentinel核心

Sentinel 核心,主要由以下组件构成:

Sentinel最全详解(图文全面总结)

Sentinel限流

限流(Flow Control)用于控制请求通过的速率,从而防止突发流量压垮系统。

Sentinel通过多种算法实现流量限制以防过载:

  • 阈值限流:基于QPS或线程数的限制,超过阈值请求会被直接拒绝。

  • 多维度限流:支持根据请求来源、请求参数等维度细粒度限流。

  • 热点参数限流:针对某些热门参数进行限流,避免局部热点导致整体过载。

  • 系统自适应限流:结合系统负载、CPU使用率、平均响应时间等指标动态调节入口流量。

比如:置热点参数限流规则后,可实现对不同参数(如 userId)的限流控制。

@SentinelResource(value = "getUserInfo", blockHandler = "blockHandlerForHotKey")
public String getUserInfo(@RequestParam String userId) {
    return "User: " + userId;
}

public String blockHandlerForHotKey(String userId, BlockException e) {
    return "请求过于频繁,请稍后再试";
}

 

 

Sentinel熔断降级

熔断机制,通过监控接口的异常比例、异常数、响应时间等指标。

当触发条件达标时,自动断开请求,保护下游或本服务,避免雪崩效应。

@SentinelResource(value = "orderService", fallback = "fallbackHandler")
public String orderService() {
    if (new Random().nextInt(10) > 7) {
        throw new RuntimeException("模拟异常");
    }
    return "下单成功";
}

public String fallbackHandler(Throwable e) {
    return "服务繁忙,请稍后重试";
}

其状态包含关闭、开启、半开启三种状态。

降级策略分为:

  • 异常比例降级;

  • 异常数降级;

  • 响应时间降级;

当返回触发条件,服务自动降级到预定义逻辑(例如返回默认值),保障核心业务可用。

一句总结:Spring Cloud Alibaba Sentinel 是微服务流量治理的核心武器。

能为系统提供“限流 + 熔断 + 降级 + 动态监控”的全方位保护,是构建高可用架构的必备组件。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧