简介:为什么要设置Sentinel数据持久化 因为当服务提供者重新启动以后 创建的流控 降级规则 都没有了 还得重新配置 所以需要持久化 又因为Sentinel不能连接数据库保存数据 所以需要nacos配置中心来保存配置的的规则数据
步骤
一个服务提供者
application.yml 和 app启动类配置
server:
port: 8401
#配置链接 nacos注册中心
#配置连接 sentinel去监控当前服务
spring:
application:
name: cloudalibaba-sentinel-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
sentinel:
transport:
dashboard: localhost:8080
port: 8719 #默认8719,应用与Sentinel控制台交互的端口,应用本地会起一个该端口占用HttpServer
#配置读取配置中心的那个配置文件 dataId groupId 数据类型 规则类型 这些要跟 nacos 配置中心配置的文件的相关属性要一致
datasource:
ds1:
nacos:
server-addr: localhost:8848
dataId: cloudalibaba-sentinel-service
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
management:
endpoints:
web:
exposure:
include: '*'
feign:
sentinel:
enabled: true # 激活Sentinel对Feign的支持
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
//配置将当前服务注册到 nacos 注册中心
@EnableDiscoveryClient
@SpringBootApplication
public class MainApp8401{
public static void main(String[] args) {
SpringApplication.run(MainApp8401.class, args);
}
}
nacos配置中心创建线管配置 保存 流控 降级等规则
当前DataId等信息 需要跟 application.yml 配置文件中的值保持一致
启动服务提供者 并访问接口【懒加载】 查看sentinel控制台 显示流控规则已经被加载出来
重新启动8401再看sentinel
扎一看还是没有,稍等一会儿
多次调用
http://localhost:8401/rateLimit/byUrl
重新配置出现了,持久化验证通过