zoukankan      html  css  js  c++  java
  • [Alibaba微服务技术入门]_Sentinel持久化_第18讲

    Sentinel持久化问题:Sentinel Dashboard中添加的规则是存储在内存中的,只要项目一重启规则就丢失了

    Sentinel工作模式

    • 在 Sentinel 客户端(微服务)中用代码写的配置,在启动后,当有第一次流量进来的时候,会推送给 Sentinel-Dashboard
    • 在 Sentinel-Dashboard 中的配置,会被推送到 Sentinal 客户端(微服务)
    • 默认情况下,不论 Sentinel-Dashboard 中的配置还是 Sentinal 客户端中的配置,都是在内存中的,一点重启,这些变化过的规则就都消失了

    Sentinel引入配置中心

    此处将规则持久化到nacos中,在nacos中添加规则,然后同步到dashboard中

    • Sentinel-Dashboard 需要知道,当配置发生变化的时候,要把配置推送到配置中心,持久话保存起来 
    • 客户端要知道,配置全在配置中心里存的呢,一旦配置发生变化,配置中心要把配置推给我
    • 这样的话,不论是 Sentinel-Dashboard 还是 Sentinel 客户端重启后,都不会丢失配置

    实现过程

    第一步:导入依赖包

    <!--springcloud ailibaba sentinel-datasource-nacos 后续做持久化用到-->
    <dependency>
        <groupId>com.alibaba.csp</groupId>
        <artifactId>sentinel-datasource-nacos</artifactId>
    </dependency>

    第二步:编写 application.yml,添加 sentinel 注册到 nacos 的配置

    server:
      port: 6001
    
    spring:
      application:
        name: sentinel-service
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8858
        sentinel:
          transport:
            port: 8719
            dashboard: 127.0.0.1:8080
          datasource:
            ds1:
              nacos:
                server-addr: 127.0.0.1:8858
                dataId: sentinel-service
                groupId: DEFAULT_GROUP
                data-type: json
                rule-type: flow
    
    management:
      endpoints:
        web:
          exposure:
            include: '*'

    第三步:在 nacos 后台配置中心进行配置

     

     

    [
        {
            "resource": "/sentinel/service",
            "limitApp": "default",
            "grade": 1,
            "count": 1,
            "strategy": 0,
            "controlBehavior": 0,
            "clusterMode": false
        }
    ]
    • resource:资源名称
    • limitApp:来源应用
    • grade:阈值类型,0表示线程数,1表示QPS
    • count:单机阈值
    • strategy:流控模式,0表示直接,1表示关联,2表示链路
    • controlBehavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待
    • clusterMode:是否集群

     第四步:对 FlowLimitController 接口 /sentinel/service 进行测试,发现项目进行重启,服务限流规则依然存在

     

     

  • 相关阅读:
    堆和栈的区别
    九度OJ 1108 堆栈的使用
    九度OJ 1201 二叉排序树
    jQuery笔记——基础知识
    JavaScript笔记——事件
    一些知识
    JavaScript笔记——BOM的操作和浏览器的检测
    JavaScript笔记——面向对象与原型
    JavaScript笔记——基础知识(二)
    JavaScript笔记——正则表达式
  • 原文地址:https://www.cnblogs.com/liuyangjava/p/15608269.html
Copyright © 2011-2022 走看看