Spring Cloud Alibaba Sentinel之持久化篇

目录

一、简介

二、sentinel持久化案例

三、总结


一、简介

Sentinel Dashboard中添加的规则是存储在内存中的,只要服务重启流控规则就丢失了,一旦我们重启应用,sentinel规则将消失,生产环境需要将配置规则进行持久化。下面我们就来看看如何持久化sentinel流控规则。

二、sentinel持久化案例

我们先来看看没有配置持久化规则的情况:

启动【springcloudalibaba-sentinel-service8401】服务,浏览器访问:http://localhost:8401/sentinel

在sentinel控制台配置/sentinel资源对应的流控规则:

然后我们停掉【springcloudalibaba-sentinel-service8401】服务然后再重新启动,回到sentinel控制台观察流控规则是否还存在:

我们发现,当我们重启服务后,sentinel控制台配置的流控规则消失了,可见sentinel控制台配置的流控规则时临时的。

下面我们来看下如何将sentinel流控规则进行持久化。我们需要稍微改造一下模块【springcloudalibaba-sentinel-service8401】

【a】pom.xml加入如下依赖

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

【b】application.yml:添加sentinel持久化配置

server:
  port: 8401
spring:
  application:
    name: springcloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848   #指定nacos服务器地址
    sentinel:
      transport:
        dashboard: localhost:8080   #指定sentinel控制台的地址t
        port: 8719  #sentinel api端口, 默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848   #指定nacos服务器地址
            dataId: ${spring.application.name}
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow
management:
  endpoints:
    web:
      exposure:
        include: '*'   #配置对外暴露端口

【c】添加nacos业务规则配置

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

【d】重启8401服务

启动完成后浏览器访问:http://localhost:8401/sentinel

然后我们去sentinel控制台看下是否存在刚刚的流控规则:

我们发现,sentinel控制台的流控规则已经有了。

【e】快速访问业务接口http://localhost:8401/sentinel

可以看到,流控规则已经成功生效。 

【f】停止8401服务

我们停止8401服务,发现sentinel控制台里面的流控规则又没有了。

然后我们重启8401服务, 重新请求几次对应资源接口http://localhost:8401/sentinel,再看sentinel控制台:

我们发现sentinel流控规则又出现了,这样就成功实现了sentinel规则的持久化。

三、总结

本篇文章主要介绍了如何将sentinel配置的流控规则持久化进nacos,这样保证每次重启服务后资源对应的流控规则都不会消失,在生产环境中,肯定是要将sentinel规则进行持久化的。以上相关项目的代码我已经放在Gitee上,有需要的小伙伴可以去拉取进行学习:https://gitee.com/weixiaohuai/springcloud_Hoxton,由于笔者水平有限,如有不对之处,还请小伙伴们指正,相互学习,一起进步。

下面是笔者总结的关于Spring Cloud Alibaba教程系列文章目录,有需要的小伙伴可以前往学习:

1. Spring Cloud Alibaba入门简介

2. Spring Cloud Alibaba Nacos之服务注册中心

3. Spring Cloud Alibaba Nacos之服务配置中心

4. Spring Cloud Alibaba Nacos集群和持久化配置

5. Spring Cloud Alibaba Sentinel之入门篇

6. Spring Cloud Alibaba Sentinel之流控规则篇

7. Spring Cloud Alibaba Sentinel之服务降级篇

8. Spring Cloud Alibaba Sentinel之热点参数限流篇

9. Spring Cloud Alibaba @SentinelResource配置详解

10. Spring Cloud Alibaba Sentinel之服务熔断篇

11. Spring Cloud Alibaba Sentinel之持久化篇

12. Spring Cloud Alibaba Seata处理分布式事务及案例实战

13. Spring Cloud Alibaba Seata工作原理

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值