[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 进行测试,发现项目进行重启,服务限流规则依然存在

 

 

原文地址:https://www.cnblogs.com/liuyangjava/p/15608269.html