SpringCloud Alibaba之Sentinel的持久化配置

所有代码都在github上:https://github.com/demonruin/cloud2020/tree/master

前面我们进行Sentinel的限流熔断等配置的时候,每次重启微服务后,配置都会消失,都需要重新配置,这说明我们的配置并没有持久化,一旦我们重启应用,sentinel规则将消失,生产环境需要将配置规则进行持久化,那我们每次重启微服务后,都需要配置一遍Sentinel岂不是很蛋疼~~,所以下面进行演示Sentinel的持久化配置,说是Sentinel的持久化,其实实际上是利用了 nacos的持久化机制,这也就是当初为什么说的 nacos和 Sentinel 基本上不分家,要用都一起用~!~~

我们 将限流配置规则持久化进Nacos保存,只要刷新微服务的某个rest地址,sentinel控制台的流控规则就能看到,只要Nacos里面的配置不删除,针对微服务上sentinel上的流控规则持续有效~~~~

1、针对8401微服务,添加pom依赖

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

2、添加Nacos数据源配置,下面是全部配置,后边跟一张截图是就是关键部分配置

server:
  port: 8401

spring:
  application:
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
    sentinel:
      transport:
        dashboard: localhost:8080 #配置Sentinel dashboard地址
        #默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
        port: 8719
      datasource:
        ds1: #数据源1
          nacos:
            server-addr: localhost:8848 #nacos注册中心地址
            dataId: cloudalibaba-sentinel-service #定义的配置名称,就是nacos中自定义的那个dateId配置名称
            groupId: DEFAULT_GROUP #就是nacos配置中的分组
            data-type: json #就是nacos中的格式
            rule-type: flow #流控规则
            
            
#暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: '*'


3、登录Nacos,在配置管理里面,针对2步骤中的配置进行 新建配置,dataid为2步骤中的dataId,group为2步骤中的groupId,配置格式为2步骤中的data-type,配置内容下面给出详解

配置内容:

[{
	"resource": "/testA",
	"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:是否集群。

其实就是将Sentinel面板中的流控配置写成json配置配置到nacos中了

4、此时登录查看Sentinel面板中,是没有流控配置的,然后请求接口testA测试后,再查看sentinel面板中,出现了流控配置

此时再关掉8401微服务,然后刷新sentinel面板,发现流控配置没有了,等我们再重新启动8401微服务后,再调用一次testA接口,会发现sentinel面板中的流控规则又出现了,说明我们配置到nacos中的配置管理帮我们实现了流控的持久化!!

至此sentinel的持久化配置完成!!!!

 

~!!!!但总体来说感觉这个持久化有点鸡肋,sentinel的优势是面板进行配置管理,但是持久化依靠nacos持久化,就需要将面板中的配置写成配置文件形式,然后在配置到nacos中去,这样sentinel面板就失去意义了啊,总感觉像个半成品,纯属个人见解~~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值