当前位置:   article > 正文

【SpringCloud Alibaba】Sentinel持久化结合Nacos_springcloudalibaba2021.0.5.0加nacos加sentinel

springcloudalibaba2021.0.5.0加nacos加sentinel

        在前面学习完Sentinel的流控规则以及Nacos时,就是最后的Sentinel持久化了。需要持久化的原因是因为每次启动Sentinel都会使之前配置的规则就清空了,这样每次都要再去设定规则显得非常的麻烦。

        思路就是:将流控规则配置进Nacos服务注册中心中,这样每次启动Sentinel无需配置规则就有规则,但前提是启动完Sentinel后要先进入方法才看得到规则,因为Sentinel是懒加载机制

一、引入依赖

  1. <!--SpringCloud Alibaba Sentinel-datasource-nacos 持久化技术-->
  2. <dependency>
  3. <groupId>com.alibaba.csp</groupId>
  4. <artifactId>sentinel-datasource-nacos</artifactId>
  5. <version>1.8.1</version>
  6. </dependency>

二、启动类注解

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. public class CloudAlibabaSentinelService {
  4. public static void main(String[] args) {
  5. SpringApplication.run(CloudAlibabaSentinelService.class, args);
  6. }
  7. }

三、改yml

  1. server:
  2. port: 8401
  3. spring:
  4. application:
  5. name: cloud-sentinel-service
  6. cloud:
  7. nacos:
  8. discovery:
  9. server-addr: localhost:8848 #Nacos服务注册中心地址
  10. sentinel:
  11. transport:
  12. dashboard: localhost:8080 #配置 dashboard监控平台地址
  13. port: 8719 #默认8719端口 如果被占用就自增直至找到未被占用的端口
  14. datasource:
  15. ds1:
  16. nacos:
  17. server-addr: localhost:8848
  18. dataId: ${spring.application.name}
  19. groupId: DEFAULT_GROUP
  20. data-type: json
  21. rule-type: flow
  22. #暴露监控断点
  23. management:
  24. endpoint:
  25. sentinel:
  26. enabled: true
  27. endpoints:
  28. web:
  29. exposure:
  30. include: '*'

四、写控制层逻辑

  1. @RestController
  2. public class SentinelController {
  3. @GetMapping("/persistence")
  4. @SentinelResource("persistence")
  5. public R persistence(){
  6. return new R(200,"持久化测试正常",new Payment(2022L,"testPersistence"));
  7. }
  8. }

五、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持久化成功了,感谢观看。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/512608
推荐阅读
相关标签
  

闽ICP备14008679号