Sentinel结合Nacos实现数据持久化过程详解
作者:小白的救赎
在前面学习完Sentinel的流控规则以及Nacos时,就是最后的Sentinel持久化了。
思路就是:将流控规则配置进Nacos服务注册中心中,这样每次启动Sentinel无需配置规则就有规则,但前提是启动完Sentinel后要先进入方法才看得到规则,因为Sentinel是懒加载机制。
一、引入依赖
<!--SpringCloud Alibaba Sentinel-datasource-nacos 持久化技术--> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> <version>1.8.1</version> </dependency>
二、启动类注解
@SpringBootApplication @EnableDiscoveryClient public class CloudAlibabaSentinelService { public static void main(String[] args) { SpringApplication.run(CloudAlibabaSentinelService.class, args); } }
三、改yml
server:
port: 8401
spring:
application:
name: cloud-sentinel-service
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
sentinel:
transport:
dashboard: localhost:8080 #配置 dashboard监控平台地址
port: 8719 #默认8719端口 如果被占用就自增直至找到未被占用的端口
datasource:
ds1:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
#暴露监控断点
management:
endpoint:
sentinel:
enabled: true
endpoints:
web:
exposure:
include: '*'
四、写控制层逻辑
@RestController public class SentinelController { @GetMapping("/persistence") @SentinelResource("persistence") public R persistence(){ return new R(200,"持久化测试正常",new Payment(2022L,"testPersistence")); } }
五、Nacos
在Java启动后登录Nacos网页可以看到服务列表已经出现刚刚写的spring.application.name
在配置列表中配置我们需要的信息。
关于JSON中的信息具体含义如下:
resource:资源名称;
limitApp:来源应用;
grade:阈值类型;0表示线程数,1表示QPS;
count:单机阈值;
strategy:流控模式;0表示直接,1表示关联,2表示链路;
controlBehavior:流控效果;0表示快速失败,1表示Warm Up,2表示排队等待;
clusterMode:是否集群。
六、Sentinel
登录Sentinel页面刷新会发现有spring.application.name,但里面空空如也。
因为Sentinel是懒加载机制,所以这时候通过网址调用我们控制层的方法。
这时候回来Sentinel监控平台上刷新就能看到流控规则,正像Nacos中配置的JSON格式一样。
到这里就证明Sentinel持久化成功了
到此这篇关于Sentinel结合Nacos实现数据持久化过程详解的文章就介绍到这了,更多相关Sentinel结合Nacos内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!