sentinel配置相关配置后无法持久化,服务重启之后就没了,所以整合nacos,在nacos服务持久化,sentinel实时与nacos通信获取相关配置。
使用上一章节Feign消费者服务实现整合。
版本信息:
nacos:1.4.1
Sentinel 控制台 1.7.2
spring-boot:2.3.3.RELEASE
spring.cloud.version:Hoxton.SR8
spring.cloud.alibaba.version:2.2.3.RELEASE
1、项目POM.xml 引入
<!--sentinel配置数据源nacos-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
2、bootstrap.yml追加Nacos数据源配置:
整个文件内容为:
server:
port: 8083
spring:
profiles:
active: dev
application:
name: tt-sc-feign-consumer
cloud:
nacos:
username: nacos
password: nacos
config:
server-addr: 192.168.10.x:8848
file-extension: yml
discovery:
server-addr: 192.168.10.x:8848
#sentinel看板相关配置
sentinel:
transport:
dashboard: 192.168.10.x:8080
#SpringBoot项目与控制台做交互的端口,默认8719
port: 8723
#配置限流后响应内容
scg:
fallback:
#两种模式:一种是response返回文字提示信息,一种是redirect,重定向跳转,同时配置跳转路径
mode: response
#配置响应状态码
response-status: 666
#响应体
response-body: '{"code":666,"message":"consumer你被限流了"}'
eager: true
#添加Nacos数据源配置
datasource:
#名字自定义即可
ds1:
nacos:
server-addr: 192.168.10.x:8848
username: nacos
password: nacos
#请求频率较高
namespace: public
dataId: tt-sc-feign-consume-sentinel
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
# ds2:
# nacos:
# server-addr: 192.168.10.107:8848
# username: nacos
# password: nacos
# namespace: public
# dataId: tt-public
# groupId: DEFAULT_GROUP
# data-type: json
# rule-type: flow
3、Nacos配置:
[
{
"resource": "/user/getUserSentinel",
"limitApp": "default",
"grade": 1,
"count": 2,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
4、启动feingnconsumer服务:
控制台输出获取nacos的配置
5、sentinel控制台:
获取到nacos的配置信息
7、问题
sentinel若获取不到nacos配置,检查配置文件是否存在问题,若无其他问题大概率原因就是版本不匹配。