一、源码下载
官方源码地址:Sentinel的源码托管在GitHub上,可以通过以下地址下载:
https://github.com/alibaba/Sentinel
版本选择:建议选择稳定版本,1.8.6。可以通过GitHub的releases页面下载特定版本:
https://github.com/alibaba/Sentinel/releases
二、源码修改(以Nacos持久化为例,修改好的源码放在文章最后)
1. 基础环境准备
- 使用IDEA或Eclipse导入
sentinel-dashboard
项目 - 确保Java版本为1.8或以上
2. 主要修改步骤
- 修改pom.xml:
- 注释掉
sentinel-datasource-nacos
依赖的test scope
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> <!--<scope>test</scope>--> </dependency>
- 注释掉
移动测试代码:
- 将
test/com.alibaba.csp.sentinel.dashboard.rule.nacos
下的文件复制到main/java
对应目录
- 将
修改nacos地址:
在sentinel–dashboard的application.properties中添加nacos地址配置:
修改规则发布/拉取实现:
修改控制台页面:
打包发布:
最后在运行jar包的时候可以指定nacos的地址
- 客户端的配置:
引入依赖:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
在application.yml增加sentinel以下配置:
spring:
# profiles:
# active: company
application:
name: order-service # 服务名称
cloud:
datasource:
flow:
nacos:
server-addr: 192.168.56.11:8848
data-id: order-service-flow-rules
group-id: SENTINEL_GROUP
rule-type: flow
最后运行客户端程序。
- 测试效果:
在控制台添加流控规则:
查看nacos上的配置文件,可以看到已经将规则配置持久化到nacos里了:
用jmeter测试客户端规则是否生效,可以看到已经触发限流规则:
至此,sentinel的规则持久化就已经实现
3. 其他持久化方案
除了Nacos,还可以改造支持:
- Apollo:类似Nacos改造方式,使用
apollo-openapi
依赖 - MySQL:修改源码实现监控数据持久化到数据库
改造后的源码连接:git源码