1. 首页 > 软件下载 > 正文

Sentinel下载-Alibaba Sentinel流量控制下载地址-Sentinel下载方法

1. Sentinel简介与版本说明

Sentinel是阿里巴巴开源的流量控制组件,面向云原生微服务的高可用流控防护组件。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保障微服务的稳定性。更多学习教程www.fgedu.net.cn。

Sentinel已经在阿里巴巴的生产环境中大规模使用,覆盖了双十一购物节的所有核心场景,如秒杀、消息削峰填谷、集群流量控制、下游不可用服务熔断等。学习交流加群风哥微信: itpux-com。

Sentinel核心特性:

– 丰富的应用场景:秒杀限流、消息削峰填谷、熔断降级、集群流控等
– 实时监控:单机实时监控,集群小于500节点的聚合监控
– 广泛的开源生态:支持Spring Cloud、Dubbo、gRPC、Quarkus等框架
– 多语言支持:提供Java、Go、C++、Rust原生支持
– SPI扩展机制:支持自定义规则管理、数据源适配等扩展
– 控制台可视化:提供实时监控、规则配置的可视化管理界面

Sentinel核心概念:

– 资源(Resource):Sentinel保护的目标,可以是方法、代码块、API接口等
– 规则(Rule):定义资源保护策略,包括流控规则、熔断规则、系统规则等
– 上下文(Context):资源调用的上下文环境,包含调用链信息
– Entry:资源访问的入口,通过SphU.entry()获取
– BlockException:当资源被限流或熔断时抛出的异常
– Slot Chain:责任链模式的处理插槽,包括统计、规则检查、日志记录等

2. Sentinel版本选择与下载地址

Sentinel提供多个版本供用户选择,生产环境建议使用稳定版本。

Sentinel版本状态:

版本系列 状态 最新版本 发布日期 Java版本 说明
2.0.x Preview 2.0.0-alpha 2024-XX-XX Java 8+ 流量路由与负载均衡预览版
1.8.x Stable 1.8.9 2025-10-17 Java 8+ 生产推荐版本
1.8.x Stable 1.8.8 2024-XX-XX Java 8+ 稳定版本
1.8.x Stable 1.8.7 2024-XX-XX Java 8+ 稳定版本
1.8.x Stable 1.8.6 2023-XX-XX Java 8+ 稳定版本

Sentinel 1.8.9主要更新:

– 支持JDK 21和JDK 17运行测试
– 添加webmvc-6x-adapter模块支持Spring Boot 3.x
– 使用DateTimeFormatter替换ThreadLocal
– 修复反射异常问题
– 升级Jackson、Spring等依赖版本

官方下载地址:

Sentinel官网:https://sentinelguard.io/
GitHub发布页:https://github.com/alibaba/Sentinel/releases
中文文档:https://sentinelguard.io/zh-cn/docs/introduction.html

3. Sentinel下载方式详解

方式一:GitHub直接下载Dashboard

$ cd /fgeudb/software
$ wget https://github.com/alibaba/Sentinel/releases/download/1.8.9/sentinel-dashboard-1.8.9.jar

输出示例如下:
–2026-04-04 10:00:00– https://github.com/alibaba/Sentinel/releases/download/1.8.9/sentinel-dashboard-1.8.9.jar
Resolving github.com (github.com)… 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443… connected.
HTTP request sent, awaiting response… 302 Found
Location: https://objects.githubusercontent.com/… [following]
–2026-04-04 10:00:01– https://objects.githubusercontent.com/…
Length: 198765432 (189M) [application/java-archive]
Saving to: ‘sentinel-dashboard-1.8.9.jar’

sentinel-dashboard-1.8.9.jar 100%[======================================================================>] 189.52M 6.5MB/s in 29s

2026-04-04 10:00:30 (6.5 MB/s) – ‘sentinel-dashboard-1.8.9.jar’ saved [198765432/198765432]

方式二:下载源码编译

克隆源码仓库:
$ git clone https://github.com/alibaba/Sentinel.git
$ cd Sentinel/

切换到指定版本分支:
$ git checkout 1.8.9

编译打包:
$ mvn clean package -DskipTests

输出示例如下:
[INFO] Scanning for projects…
[INFO] ————————————————————————
[INFO] Building Sentinel Parent 1.8.9
[INFO] ————————————————————————

[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 08:23 min
[INFO] Finished at: 2026-04-04T10:08:30+08:00

查看编译结果:
$ ls -la sentinel-dashboard/target/

输出示例如下:
total 198765
drwxr-xr-x 2 root root 4096 Apr 4 10:08 .
drwxr-xr-x 3 root root 4096 Apr 4 10:08 ..
-rw-r–r– 1 root root 198765432 Apr 4 10:08 sentinel-dashboard.jar

方式三:Maven依赖引入(客户端SDK)

在pom.xml中添加依赖:

com.alibaba.csp
sentinel-core
1.8.9

其他常用模块:

com.alibaba.csp
sentinel-annotation-aspectj
1.8.9


com.alibaba.csp
sentinel-transport-simple-http
1.8.9


com.alibaba.csp
sentinel-datasource-nacos
1.8.9

Spring Cloud Alibaba集成:

com.alibaba.cloud
spring-cloud-starter-alibaba-sentinel
2023.0.1.0

方式四:使用Docker镜像部署

拉取Sentinel Dashboard镜像:
$ docker pull bladex/sentinel-dashboard:1.8.9

输出示例如下:
1.8.9: Pulling from bladex/sentinel-dashboard
Digest: sha256:abc123def456…
Status: Downloaded newer image for bladex/sentinel-dashboard:1.8.9

启动Sentinel Dashboard容器:
$ docker run –name sentinel-dashboard \
-p 8858:8858 \
-e JAVA_OPTS=”-Dserver.port=8858 -Dcsp.sentinel.dashboard.server=localhost:8858 -Dproject.name=sentinel-dashboard” \
-d bladex/sentinel-dashboard:1.8.9

输出示例如下:
abc123def456789…

查看容器状态:
$ docker ps | grep sentinel

输出示例如下:
abc123def456 bladex/sentinel-dashboard:1.8.9 “java -jar app.jar” 10 seconds ago Up 9 seconds 0.0.0.0:8858->8858/tcp sentinel-dashboard

4. Sentinel Dashboard安装部署实战

步骤1:环境准备

检查Java版本:
$ java -version

输出示例如下:
openjdk version “17.0.13” 2026-01-21
OpenJDK Runtime Environment (build 17.0.13+11-Ubunt-1)
OpenJDK 64-Bit Server VM (build 17.0.13+11-Ubunt-1, mixed mode, sharing, from:www.itpux.com)

设置JAVA_HOME环境变量:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
$ echo “export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64” >> ~/.bashrc
$ source ~/.bashrc

步骤2:创建安装目录

创建安装目录:
# mkdir -p /fgeudb/sentinel
# mkdir -p /fgeudb/sentinel/logs

复制安装包:
$ cp /fgeudb/software/sentinel-dashboard-1.8.9.jar /fgeudb/sentinel/
$ cd /fgeudb/sentinel
$ ln -s sentinel-dashboard-1.8.9.jar sentinel-dashboard.jar

查看目录结构:
$ ls -la /fgeudb/sentinel/

输出示例如下:
total 198765
drwxr-xr-x 2 root root 4096 Apr 4 10:03 .
drwxr-xr-x 3 root root 4096 Apr 4 10:03 ..
lrwxrwxrwx 1 root root 27 Apr 4 10:03 sentinel-dashboard.jar -> sentinel-dashboard-1.8.9.jar
-rw-r–r– 1 root root 198765432 Apr 4 10:03 sentinel-dashboard-1.8.9.jar
drwxr-xr-x 2 root root 4096 Apr 4 10:03 logs

步骤3:启动Sentinel Dashboard

前台启动(用于测试):
$ cd /fgeudb/sentinel
$ java -Dserver.port=8858 \
-Dcsp.sentinel.dashboard.server=localhost:8858 \
-Dproject.name=sentinel-dashboard \
-Dsentinel.dashboard.auth.username=admin \
-Dsentinel.dashboard.auth.password=admin123 \
-jar sentinel-dashboard.jar

输出示例如下:
____ _ _ _ _
/ ___| _ ___| |_| | | |_ _| |__
\___ \ / | __| ‘_ \| | | | | | ‘_ \
___) | |_| | | | | | |_| | |_| | | |
|____/ \__,_|_| |_|_|\__, |\__,_| |_|
|___/
Sentinel Dashboard 1.8.9 starting…
INFO: Starting Sentinel Dashboard…
INFO: Sentinel Dashboard started successfully on port 8858
INFO: Dashboard is available at http://localhost:8858

后台启动:
$ nohup java -Dserver.port=8858 \
-Dcsp.sentinel.dashboard.server=localhost:8858 \
-Dproject.name=sentinel-dashboard \
-Dsentinel.dashboard.auth.username=admin \
-Dsentinel.dashboard.auth.password=admin123 \
-Xms512m -Xmx1g \
-jar sentinel-dashboard.jar > /fgeudb/sentinel/logs/dashboard.log 2>&1 &

查看启动日志:
$ tail -f /fgeudb/sentinel/logs/dashboard.log

输出示例如下:
2026-04-04 10:05:00.000 INFO [main] Sentinel Dashboard starting…
2026-04-04 10:05:05.000 INFO [main] Sentinel Dashboard started successfully
2026-04-04 10:05:05.000 INFO [main] Dashboard is available at http://localhost:8858

步骤4:配置系统服务

创建systemd服务文件:
# vi /etc/systemd/system/sentinel.service

[Unit]
Description=Sentinel Dashboard
After=syslog.target network.target

[Service]
Type=simple
User=root
WorkingDirectory=/fgeudb/sentinel
ExecStart=/usr/lib/jvm/java-17-openjdk-amd64/bin/java \
-Dserver.port=8858 \
-Dcsp.sentinel.dashboard.server=localhost:8858 \
-Dproject.name=sentinel-dashboard \
-Dsentinel.dashboard.auth.username=admin \
-Dsentinel.dashboard.auth.password=admin123 \
-Xms512m -Xmx1g \
-jar /fgeudb/sentinel/sentinel-dashboard.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

重载服务配置:
# systemctl daemon-reload

启动服务:
# systemctl start sentinel

设置开机自启:
# systemctl enable sentinel

查看服务状态:
# systemctl status sentinel

输出示例如下:
● sentinel.service – Sentinel Dashboard
Loaded: loaded (/etc/systemd/system/sentinel.service; enabled)
Active: active (running) since Fri 2026-04-04 10:05:00 CST; 10s ago
Main PID: 12345 (java)
Tasks: 25 (limit: 4915)
Memory: 512.0M
CGroup: /system.slice/sentinel.service
└─12345 /usr/lib/jvm/java-17-openjdk-amd64/bin/java -Dserver.port=8858…

5. Sentinel生产环境配置优化

步骤1:配置JVM内存参数

生产环境JVM参数配置:
-Xms1g 初始堆内存1GB
-Xmx2g 最大堆内存2GB
-XX:+UseG1GC 使用G1垃圾收集器
-XX:MaxGCPauseMillis=200 最大GC停顿时间200ms
-XX:+HeapDumpOnOutOfMemoryError 内存溢出时生成堆转储
-XX:HeapDumpPath=/fgeudb/sentinel/logs/heapdump.hprof

完整启动命令:
$ java -Dserver.port=8858 \
-Dcsp.sentinel.dashboard.server=192.168.1.51:8858 \
-Dproject.name=sentinel-dashboard \
-Dsentinel.dashboard.auth.username=admin \
-Dsentinel.dashboard.auth.password=Admin@123 \
-Dsentinel.dashboard.datasource.nacos.server-addr=192.168.1.51:8848 \
-Dsentinel.dashboard.datasource.nacos.namespace=dev \
-Dsentinel.dashboard.datasource.nacos.group-id=SENTINEL_GROUP \
-Dsentinel.dashboard.datasource.nacos.data-id=sentinel-rules \
-Xms1g -Xmx2g -XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/fgeudb/sentinel/logs/heapdump.hprof \
-jar sentinel-dashboard.jar

步骤2:配置Nacos数据源持久化

编辑application.properties配置文件:
# vi /fgeudb/sentinel/conf/application.properties

Nacos数据源配置:
sentinel.dashboard.datasource.nacos.server-addr=192.168.1.51:8848
sentinel.dashboard.datasource.nacos.namespace=dev
sentinel.dashboard.datasource.nacos.group-id=SENTINEL_GROUP
sentinel.dashboard.datasource.nacos.data-id=sentinel-rules
sentinel.dashboard.datasource.nacos.username=nacos
sentinel.dashboard.datasource.nacos.password=nacos

在Nacos中创建配置:
Data ID: sentinel-rules
Group: SENTINEL_GROUP
配置格式: JSON
配置内容:
[
{
“resource”: “test-resource”,
“limitApp”: “default”,
“grade”: 1,
“count”: 100,
“strategy”: 0,
“controlBehavior”: 0,
“clusterMode”: false
}
]

步骤3:配置认证和安全

配置Dashboard认证:
-Dsentinel.dashboard.auth.username=admin
-Dsentinel.dashboard.auth.password=Admin@123

配置服务端地址:
-Dcsp.sentinel.dashboard.server=192.168.1.51:8858

配置客户端连接Dashboard:
在客户端应用中添加JVM参数:
-Dcsp.sentinel.dashboard.server=192.168.1.51:8858
-Dproject.name=your-app-name

步骤4:配置日志和监控

配置日志路径:
-Dcsp.sentinel.log.dir=/fgeudb/sentinel/logs

配置日志级别:
-Dcsp.sentinel.log.level=INFO

查看实时日志:
$ tail -f /fgeudb/sentinel/logs/sentinel-dashboard.log

查看指标日志:
$ tail -f ~/logs/csp/${appName}-metrics.log.{date}

输出示例如下:
|–timestamp-|——date time—-|-resource-|p |block|s |e|rt |occupied
1712217600000|2026-04-04 10:00:00|HelloWorld|20|0 |20|0|0 |0
1712217601000|2026-04-04 10:00:01|HelloWorld|20|5579 |20|0|728 |0
1712217602000|2026-04-04 10:00:02|HelloWorld|20|15698|20|0|0 |0

字段说明:
p: pass,通过的请求数
block: 被拦截的请求数
s: success,成功处理的请求数
e: exception,异常数
rt: response time,平均响应时间(ms)
occupied: 占用的通过QPS

6. Sentinel规则配置与管理

流量控制规则

通过API定义流控规则:
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;

List rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource(“helloResource”);
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule.setCount(20);
rule.setLimitApp(“default”);
rule.setStrategy(RuleConstant.STRATEGY_DIRECT);
rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT);
rules.add(rule);
FlowRuleManager.loadRules(rules);

参数说明:
– resource: 资源名称
– grade: 限流阈值类型(QPS或线程数)
– count: 限流阈值
– limitApp: 来源应用(default表示所有应用)
– strategy: 流控策略(直接、关联、链路)
– controlBehavior: 流控效果(快速失败、Warm Up、排队等待)

通过Dashboard配置:
1. 访问 http://192.168.1.51:8858
2. 登录后选择对应应用
3. 点击”流控规则”菜单
4. 点击”新增流控”按钮
5. 填写资源名、阈值类型、阈值等参数
6. 点击”新增”保存规则

熔断降级规则

通过API定义熔断规则:
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule;
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager;

List rules = new ArrayList<>();
DegradeRule rule = new DegradeRule(“helloResource”);
rule.setGrade(CircuitBreakerStrategy.ERROR_RATIO.getType());
rule.setCount(0.5);
rule.setTimeWindow(10);
rule.setMinRequestAmount(5);
rule.setStatIntervalMs(1000);
rules.add(rule);
DegradeRuleManager.loadRules(rules);

参数说明:
– grade: 熔断策略(慢调用比例、异常比例、异常数)
– count: 阈值(比例或数量)
– timeWindow: 熔断时长(秒)
– minRequestAmount: 最小请求数
– statIntervalMs: 统计时长(毫秒)

系统保护规则

通过API定义系统规则:
import com.alibaba.csp.sentinel.slots.system.SystemRule;
import com.alibaba.csp.sentinel.slots.system.SystemRuleManager;

List rules = new ArrayList<>();
SystemRule rule = new SystemRule();
rule.setHighestSystemLoad(4.0);
rule.setHighestCpuUsage(0.8);
rule.setAvgRt(1000);
rule.setMaxThread(500);
rule.setQps(1000);
rules.add(rule);
SystemRuleManager.loadRules(rules);

参数说明:
– highestSystemLoad: 系统最大Load
– highestCpuUsage: 最大CPU使用率
– avgRt: 平均响应时间
– maxThread: 最大并发线程数
– qps: 最大入口QPS

热点参数规则

通过API定义热点参数规则:
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRuleManager;

List rules = new ArrayList<>();
ParamFlowRule rule = new ParamFlowRule();
rule.setResource(“helloResource”);
rule.setParamIdx(0);
rule.setCount(10);
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule.setParamFlowItemList(Arrays.asList(
new ParamFlowItem().setObject(“special-user”).setCount(100)
));
rules.add(rule);
ParamFlowRuleManager.loadRules(rules);

参数说明:
– paramIdx: 参数索引
– count: 限流阈值
– paramFlowItemList: 参数例外项

7. Sentinel集群流控配置

集群流控架构说明

集群流控架构:
– Token Client:应用客户端,向Token Server请求令牌
– Token Server:令牌服务器,负责全局流量控制
– Dashboard:控制台,管理集群规则和监控

部署模式:
– 独立模式:Token Server独立部署
– 嵌入模式:Token Server嵌入应用中部署

配置Token Server

创建Token Server配置:
# vi /fgeudb/sentinel/conf/cluster-server.conf

server.port=8859
csp.sentinel.dashboard.server=192.168.1.51:8858
project.name=sentinel-token-server

启动Token Server:
$ java -Dserver.port=8859 \
-Dcsp.sentinel.dashboard.server=192.168.1.51:8858 \
-Dproject.name=sentinel-token-server \
-jar sentinel-cluster-server.jar

配置集群规则:
ClusterFlowRuleManager.loadRules(Collections.singletonList(
new FlowRule(“cluster-resource”)
.setCount(1000)
.setGrade(RuleConstant.FLOW_GRADE_QPS)
.setClusterMode(true)
.setClusterConfig(new ClusterFlowConfig()
.setFlowId(1L)
.setFallbackToLocalWhenFail(true)
.setStrategy(ClusterRuleConstant.FLOW_CLUSTER_STRATEGY_NORMAL)
)
));

配置Token Client

客户端配置连接Token Server:
ClusterClientConfig clientConfig = new ClusterClientConfig();
clientConfig.setRequestTimeout(200);
clientConfig.setServerHost(“192.168.1.51”);
clientConfig.setServerPort(8859);
ClusterClientConfigManager.applyNewConfig(clientConfig);

客户端JVM参数:
-Dcsp.sentinel.dashboard.server=192.168.1.51:8858
-Dproject.name=your-app-name
-Dcsp.sentinel.cluster.client.server.host=192.168.1.51
-Dcsp.sentinel.cluster.client.server.port=8859

8. 安装验证与测试

查看Sentinel Dashboard状态

查看进程状态:
$ ps -ef | grep sentinel

输出示例如下:
root 12345 1 5 10:05 ? 00:00:15 /usr/lib/jvm/java-17-openjdk-amd64/bin/java -Dserver.port=8858 -jar sentinel-dashboard.jar

查看端口监听:
$ netstat -tlnp | grep 8858

输出示例如下:
tcp6 0 0 :::8858 :::* LISTEN 12345/java

访问Web管理控制台

打开浏览器访问:
http://192.168.1.51:8858

默认用户名:sentinel
默认密码:sentinel

自定义用户名密码:
-Dsentinel.dashboard.auth.username=admin
-Dsentinel.dashboard.auth.password=admin123

控制台首页显示:
– 实时监控:QPS、响应时间、异常数
– 机器列表:已连接的应用实例
– 规则管理:流控、熔断、系统、热点规则
– 集群流控:Token Server管理

测试流控功能

创建测试资源:
import com.alibaba.csp.sentinel.Entry;
import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.slots.block.BlockException;

public class SentinelTest {
public static void main(String[] args) {
initFlowRules();

for (int i = 0; i < 100; i++) { try (Entry entry = SphU.entry("HelloWorld")) { System.out.println("hello world " + i); } catch (BlockException e) { System.out.println("blocked: " + i); } } } private static void initFlowRules() { List rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource(“HelloWorld”);
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule.setCount(20);
rules.add(rule);
FlowRuleManager.loadRules(rules);
}
}

运行测试:
$ java -cp sentinel-core-1.8.9.jar:. SentinelTest

输出示例如下:
hello world 0
hello world 1

hello world 19
blocked: 20
blocked: 21

9. 客户端集成与使用

Spring Cloud Alibaba集成

Maven依赖:

com.alibaba.cloud
spring-cloud-starter-alibaba-sentinel
2023.0.1.0

application.yml配置:
spring:
application:
name: demo-service
cloud:
sentinel:
transport:
dashboard: 192.168.1.51:8858
port: 8719
datasource:
flow:
nacos:
server-addr: 192.168.1.51:8848
namespace: dev
group-id: SENTINEL_GROUP
data-id: ${spring.application.name}-flow-rules
rule-type: flow

使用@SentinelResource注解:
@RestController
public class DemoController {

@SentinelResource(value = “hello”, blockHandler = “handleBlock”, fallback = “handleFallback”)
@GetMapping(“/hello”)
public String hello(@RequestParam String name) {
if (“error”.equals(name)) {
throw new RuntimeException(“error”);
}
return “Hello ” + name;
}

public String handleBlock(String name, BlockException e) {
return “Blocked: ” + e.getClass().getSimpleName();
}

public String handleFallback(String name, Throwable t) {
return “Fallback: ” + t.getMessage();
}
}

Dubbo集成

Maven依赖:

org.apache.dubbo
dubbo-sentinel
3.3.0

配置文件:
dubbo:
application:
name: demo-service
registry:
address: nacos://192.168.1.51:8848
protocol:
name: dubbo
port: 20880
provider:
filter: sentinel.dubbo.provider.filter
consumer:
filter: sentinel.dubbo.consumer.filter

OpenFeign集成

Maven依赖:

com.alibaba.cloud
spring-cloud-starter-alibaba-sentinel


org.springframework.cloud
spring-cloud-starter-openfeign

配置文件:
spring:
cloud:
sentinel:
transport:
dashboard: 192.168.1.51:8858
openfeign:
sentinel:
enabled: true

Feign客户端:
@FeignClient(name = “remote-service”, fallback = RemoteServiceFallback.class)
public interface RemoteServiceClient {
@GetMapping(“/api/hello”)
String hello(@RequestParam String name);
}

@Component
public class RemoteServiceFallback implements RemoteServiceClient {
@Override
public String hello(String name) {
return “Fallback: service unavailable”;
}
}

10. 常见问题与解决方案

问题1:Dashboard无法显示客户端应用

症状:Dashboard机器列表为空

解决方案:
1. 检查客户端是否正确配置Dashboard地址:
-Dcsp.sentinel.dashboard.server=192.168.1.51:8858

2. 检查客户端是否配置项目名称:
-Dproject.name=your-app-name

3. 检查客户端端口是否被占用:
-Dcsp.sentinel.api.port=8719

4. 检查防火墙端口:
# firewall-cmd –add-port=8719/tcp –permanent
# firewall-cmd –reload

5. 检查客户端日志:
$ tail -f ~/logs/csp/sentinel-record.log.*

问题2:规则配置不生效

症状:配置规则后请求没有被限流

解决方案:
1. 检查资源名称是否正确:
@SentinelResource(value = “hello”) // 资源名为hello
规则配置的资源名必须与代码中一致

2. 检查规则是否加载成功:
List rules = FlowRuleManager.getRules();
System.out.println(rules);

3. 检查是否使用了正确的Entry:
try (Entry entry = SphU.entry(“hello”)) {
// 业务代码
} catch (BlockException e) {
// 处理限流
}

4. 检查规则参数是否正确:
rule.setGrade(RuleConstant.FLOW_GRADE_QPS); // QPS限流
rule.setCount(20); // 阈值20

问题3:Dashboard登录失败

症状:无法登录Dashboard

解决方案:
1. 检查用户名密码配置:
-Dsentinel.dashboard.auth.username=admin
-Dsentinel.dashboard.auth.password=admin123

2. 默认用户名密码:
用户名:sentinel
密码:sentinel

3. 检查是否开启了认证:
默认不需要认证,配置用户名密码后开启认证

4. 清除浏览器缓存重新登录

问题4:规则持久化失败

症状:重启Dashboard后规则丢失

解决方案:
1. 配置Nacos数据源:
-Dsentinel.dashboard.datasource.nacos.server-addr=192.168.1.51:8848
-Dsentinel.dashboard.datasource.nacos.namespace=dev
-Dsentinel.dashboard.datasource.nacos.group-id=SENTINEL_GROUP
-Dsentinel.dashboard.datasource.nacos.data-id=sentinel-rules

2. 客户端配置数据源:
spring.cloud.sentinel.datasource.flow.nacos.server-addr=192.168.1.51:8848
spring.cloud.sentinel.datasource.flow.nacos.data-id=${spring.application.name}-flow-rules
spring.cloud.sentinel.datasource.flow.nacos.rule-type=flow

3. 检查Nacos中是否存在配置:
$ curl -X GET “http://192.168.1.51:8848/nacos/v1/cs/configs?dataId=sentinel-rules&group=SENTINEL_GROUP”

Sentinel服务管理命令

启动服务:
# systemctl start sentinel

停止服务:
# systemctl stop sentinel

重启服务:
# systemctl restart sentinel

查看服务状态:
# systemctl status sentinel

查看实时日志:
$ tail -f /fgeudb/sentinel/logs/dashboard.log

查看客户端连接:
$ curl -X GET “http://192.168.1.51:8858/machine/list.json”

输出示例如下:
[
{
“app”: “demo-service”,
“ip”: “192.168.1.100”,
“port”: 8719,
“lastHeartbeat”: 1712217600000,
“heartbeatVersion”: 1
}
]

生产环境建议
1. 使用Sentinel 1.8.9稳定版本;2. Dashboard配置强密码认证;3. 使用Nacos等数据源持久化规则;4. 配置合理的JVM内存参数;5. 开启集群流控实现全局限流;6. 配置系统规则保护应用稳定性;7. 监控关键指标并设置告警;8. 定期备份规则配置;9. 测试环境验证规则后再上线;10. 配置系统服务实现自动重启。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息