SpringCloud Alibaba——Sentinel服务熔断与限流(六规则持久化配置)

Posted 张起灵-小哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud Alibaba——Sentinel服务熔断与限流(六规则持久化配置)相关的知识,希望对你有一定的参考价值。

1.开篇

前面陆陆续续5篇都在说sentinel服务降级、限流、熔断功能,这是最后一篇了,来聊一聊sentinel中的持久化配置吧。

首先说一下什么是持久化?——之前我们在做测试的时候,会在sentinel的界面中添加一些配置信息。但是当我们重启这些微服务之后,再到sentinel中查看,会发现之前配置的东西已经不存在了。

可能我们现在写的这些小项目顶多一两个配置文件,每次重启配置文件没了,我们就重新再新建这些配置文件。但是后面进了企业,配置文件肯定会越来越多,你还想去重新新建这些配置文件吗?你还有时间去再写一遍这些配置文件吗?肯定是:不!!!

这就引出了sentinel中的持久化规则配置。也就是说生产环境上需要对配置规则进行持久化。


2.项目源码

github源码地址:https://github.com/2656307671/SpringCloud-Alibaba-Sentinel

gitee源码地址:https://gitee.com/szh-forever-young/SpringCloud-Alibaba-Sentinel

下面的测试对应了git仓库中的8401这个微服务模块。

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

首先需要在pom中添加 sentinel-datasource-nacos 依赖;在yml中的sentinel标签下添加nacos数据源datasource下的配置,详情参考git仓库。

我们在nacos中添加配置。配置信息解释:

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

启动8401微服务模块,访问一次 /rateLimit/byUrl 请求,然后到sentinel中可以看到簇点链路已经有了。

因为我在nacos中的配置规则中定义的是 QPS > 1 则触发降级限流,多次访问,则出现下图的sentinel默认降级页面信息。

然后我们将8401微服务模块停掉,此时再到sentinel中查看,可以看到刚刚配置的的流控规则已经没了。

因为我们进行了规则持久化配置,也就是pom依赖 + yml起到了作用,再次重启8401微服务模块,稍等一会(同时多次访问 /rateLimit/byUrl 请求),之后刷新sentinel页面,可以看到刚刚的 /rateLimit/byUrl 请求对应的流控规则又出现了,此时就说明持久化验证通过。


3.服务熔断与限流框架的比较

以上是关于SpringCloud Alibaba——Sentinel服务熔断与限流(六规则持久化配置)的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud整合Alibaba环境搭建

SpringCloud整合Alibaba环境搭建

SpringCloud整合Alibaba环境搭建

SpringCloud整合Alibaba环境搭建

SpringCloud Alibaba组件

SpringCloud Alibaba Sentinel实现熔断与限流