Sentinel 详细使用指南(从入门到进阶)

Sentinel 详细使用指南(从入门到进阶)

Sentinel 是阿里巴巴开源的分布式系统流量治理平台,核心能力覆盖流量控制、熔断降级、系统保护、授权控制、热点限流等,旨在解决微服务架构下的流量过载、级联故障等问题。本指南将从核心原理、环境部署、客户端接入、规则配置、进阶特性到生产实践,全方位详细讲解 Sentinel 的使用。

一、核心原理与架构

在使用前需理解 Sentinel 的底层逻辑,避免配置踩坑:

1. 核心架构

Sentinel 分为 控制台(Dashboard) 和 客户端(应用接入) 两部分:

  • 控制台:负责规则配置、监控数据展示、集群管理,不参与业务流量处理。
  • 客户端:嵌入应用内部,通过 Slot 链 实现流量控制、熔断等核心逻辑(Slot 是 Sentinel 的核心扩展点,按顺序执行)。

2. Slot 链执行顺序(关键)

客户端的核心逻辑通过 Slot 链串联,执行顺序固定:

NodeSelectorSlot(构建调用链)→ ClusterBuilderSlot(集群统计)→ LogSlot(日志记录)→ 
StatisticSlot(指标统计,核心:收集 QPS、异常率等数据)→ AuthoritySlot(授权控制)→ 
SystemSlot(系统保护)→ FlowSlot(流量控制)→ DegradeSlot(熔断降级)→ HotSpotSlot(热点限流)

规则生效依赖对应 Slot,例如:流控规则由 FlowSlot 执行,熔断规则由 DegradeSlot 执行。

3. 核心概念补充

概念 说明
资源 被保护的对象(接口、方法、URL 等),需通过注解 / 代码显式标记。
规则 对资源的控制策略(流控、熔断等),支持动态配置、实时生效。
簇点 已被 Sentinel 监控的资源(懒加载,资源首次被调用后才会显示在控制台)。
调用链 资源的调用路径(如 A 接口 → B 方法 → C 服务),支持链路级规则配置。
令牌桶 / 漏桶 流量控制的底层算法(Sentinel 默认用令牌桶,排队等待模式用漏桶)。
半开状态 熔断后的恢复阶段,允许少量请求尝试,成功则恢复正常,失败则重新熔断。

二、环境部署(控制台 + 客户端)

1. 控制台部署(生产级)

控制台是可视化管理中心,支持多环境部署(单机 / 集群),以下是生产可用的部署方案:

(1)下载控制台

从 Sentinel GitHub Release 下载最新稳定版(推荐 1.8.x 及以上),文件格式为 sentinel-dashboard-xxx.jar

(2)启动参数配置(关键)

默认启动仅适合测试,生产需配置端口、账号密码、日志、集群等参数:

java -jar sentinel-dashboard-1.8.6.jar \
  --server.port=8080 \                  # 控制台端口(默认8080)
  --sentinel.dashboard.auth.username=admin \  # 登录用户名(默认sentinel)
  --sentinel.dashboard.auth.password=123456 \  # 登录密码(默认sentinel)
  --logging.file.name=/data/logs/sentinel/dashboard.log \  # 日志路径
  --sentinel.api.port=8719 \            # 客户端通信端口(默认8719,集群需统一)
  --spring.datasource.url=jdbc:mysql://localhost:3306/sentinel?useSSL=false \  # 持久化数据源(可选)
  --spring.datasource.username=root \
  --spring.datasource.password=root \
  --spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  • 端口说明:8080 是控制台 Web 端口,8719 是客户端与控制台的通信端口(客户端需配置此端口)。
  • 日志配置:建议指定日志路径,便于问题排查。
(3)控制台集群部署(高可用)

生产环境需避免控制台单点故障,支持多实例集群:

  1. 多个控制台实例使用相同的数据源(如 MySQL、Nacos),确保规则同步。
  2. 客户端配置多个控制台地址(用逗号分隔):
    spring:
      cloud:
        sentinel:
          transport:
            dashboard: 192.168.1.100:8080,192.168.1.101:8080
    

2. 客户端接入(多框架适配)

Sentinel 支持 Java 原生、Spring Boot、Spring Cloud、Dubbo、Gateway 等多种框架,以下是最常用的接入方案:

(1)Spring Boot 接入(基础版)
步骤 1:引入依赖
<!-- Sentinel 核心依赖 -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-core</artifactId>
    <version>1.8.6</version> <!-- 与控制台版本一致 -->
</dependency>
<!-- 注解支持(@SentinelResource) -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-annotation-aspectj</artifactId>
    <version>1.8.6</version>
</dependency>
<!-- 控制台通信依赖 -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-transport-simple-http</artifactId>
    <version>1.8.6</version>
</dependency>
步骤 2:配置控制台地址

在 application.yml 中配置:

spring:
  application:
    name: sentinel-demo  # 应用名(控制台显示用)
# Sentinel 配置
sentinel:
  transport:
    dashboard: 192.168.1.100:8080  # 控制台地址
    port: 8719  # 客户端通信端口(默认8719,被占用自动递增)
  eager: true  # 饥饿加载(默认懒加载,启动后立即初始化,避免首次调用不显示簇点)
步骤 3:启用注解支持

添加配置类,启用 @SentinelResource 注解:

import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SentinelConfig {
    // 启用 @SentinelResource 注解
    @Bean
    public SentinelResourceAspect sentinelResourceAspect() {
        return new SentinelResourceAspect();
    }
}
(2)Spring Cloud 接入(推荐,整合更友好)

Spring Cloud Alibaba 提供了专门的 Starter,简化接入:

步骤 1:引入依赖
<!-- Spring Cloud Alibaba Sentinel Starter -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    <version>2.2.10.RELEASE</version> <!-- 适配 Spring Cloud 版本 -->
</de
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

canjun_wen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值