• sentinel与nacos持久化


    在流量控制那篇文章中,我们在sentinel中配置好A服务对应的限流策略后,如果A服务重启就会导致sentinel中配置好的策略丢失,所以需要持久化操作。

    流量控制可以有三种方法配置:一种是在sentinel控制台进行配置(服务重启则配置的策略丢失),一种是在代码中进行编写控制,还有就是从nacos中读取进行持久化配置。
    限流配置

    1.  [
    2. {
    3. “resource”:"/test", 需要限流的接口
    4. “limitApp”:“default”,
    5. “grade”:1, 阈值类型:1QPS0为线程数
    6. “count”:3, 每秒钟单机阈值,超过就会报错
    7. “strategy”:0, 流控模式 0直接,1关联,2链路
    8. “controlBehavior”:0, 设置流控效果 ,0直接拒接,1 Warm up 预热,2排队等待
    9. “clusterMode”:false
    10. },
    11. ,
    12. {
    13. “resource”:“POST:http://manage-nacos/get/name”,
    14. “limitApp”:“default”,
    15. “grade”:1,
    16. “count”:3,
    17. “strategy”:0,
    18. “controlBehavior”:0,
    19. “clusterMode”:false
    20. }
    21. ]

     对应依赖

    1. <dependency>
    2. <groupId>com.alibaba.cloudgroupId>
    3. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    4. dependency>
    5. <dependency>
    6. <groupId>com.alibaba.cloudgroupId>
    7. <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
    8. <version>${spring-cloud-alibaba.version}version>
    9. dependency>
    10. <dependency>
    11. <groupId>org.springframework.bootgroupId>
    12. <artifactId>spring-boot-starter-actuatorartifactId>
    13. dependency>
    14. <dependency>
    15. <groupId>com.alibaba.cspgroupId>
    16. <artifactId>sentinel-datasource-nacosartifactId>
    17. dependency>

    配置文件中进行配置,从nacos中读取配置信息

    1. spring:
    2. jackson:
    3. default-property-inclusion: non_null # 全局jackson不对null做序列化输出
    4. cloud:
    5. # 将本服务与 sentinel监控进行绑定
    6. sentinel:
    7. transport:
    8. dashboard: 127.0.0.1:8080
    9. datasource:
    10. flow-ds: #sentinel从nacos获取指定的流控规则 这个名字可以自定义,不重复就可以
    11. nacos:
    12. server-addr: 127.0.0.1:8848
    13. dataId: flow-server
    14. groupId: DEFAULT_GROUP
    15. ruleType: flow # flow代表流程控制,degrade代表熔断规则
    16. username: nacos
    17. password: nacos

    熔断配置

    对应参数代表的含义请看 流程控制篇

     

    1. [
    2. {
    3. "resource":"/test", 请求路径
    4. "count":200, 每秒钟请求响应的平均时间,200就是一秒处理五个请求
    5. "grade":0, 降级策略,0RT平均响应时间
    6. "timeWindow":5 熔断时间为5
    7. }
    8. ]

    服务对应的配置文件

    1. spring:
    2. jackson:
    3. default-property-inclusion: non_null # 全局jackson不对null做序列化输出
    4. cloud:
    5. # 将本服务与 sentinel监控进行绑定
    6. sentinel:
    7. transport:
    8. dashboard: 127.0.0.1:8080
    9. datasource:
    10. flow-ds: #sentinel从nacos获取指定的流控规则 这个名字可以自定义,不重复就可以
    11. nacos:
    12. server-addr: 127.0.0.1:8848
    13. dataId: flow-server
    14. groupId: DEFAULT_GROUP
    15. ruleType: flow # flow代表流程控制,degrade代表熔断规则
    16. username: nacos
    17. password: nacos
    18. grade-ds: #sentinel从nacos获取指定的熔断规则 这个名字可以自定义,不重复就可以
    19. nacos:
    20. server-addr: 127.0.0.1:8848
    21. dataId: degrade-server
    22. groupId: DEFAULT_GROUP
    23. ruleType: degrade # flow代表流程控制,degrade代表熔断规则
    24. username: nacos
    25. password: nacos

     

  • 相关阅读:
    两个不相交的闭集并不能保证两个集合可分
    C++ STL 顺序结构 vector
    ModStartCMS v7.3.0 富文本MP3支持,后台组件优化
    ThreadPoolExecutor 源码分析
    音视频发展调研
    笔记 | 算法时间复杂度T(n)的计算方法
    关于智能空气动力学
    飞书开发学习笔记(六)-网页应用免登
    冒泡算法,leetcode第一题
    粒子群算法及其Python实现
  • 原文地址:https://blog.csdn.net/Leon_Jinhai_Sun/article/details/126068410