spring cloud alibaba系列sentinel规则持久化
“秋来相顾尚飘蓬,未就丹砂愧葛洪。
痛饮狂歌空度日,飞扬跋扈为谁雄”
总结
我上一篇:spring cloud alibaba sentinel
介绍的sentinel可以定义很多的规则,但这些规则都是存在内存中的,下次重启服务,规则就消失了,这肯定是不能在生产环境中使用的,所以我们需要对规则进行持久化。
还没开始,就已经结束。。。翻了很多资料,发现好像最好的办法就是使用阿里提供的在线托管Sentinel控制台(AHAS),果然花钱能解决很多问题
下面搞搞不花钱的
官方文档:生产环境使用sentinel
文档介绍了各种推送模式,以及可以用什么实现,实现代码只是提了一些关键的地方。我这里就不用进行复制粘贴了吧,官网肯定比我写得好,网上基本上都是复制粘贴的官网信息
使用nacos持久化规则
微服务进行改造
- 加依赖
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><version>1.7.2</version>
</dependency>
- 加配置
添加sentinel.datasource的配置
spring:application:name: ts-customerprofiles:active: devcloud:nacos:config:server-addr: ${settings.nacos.addr}namespace: ${settings.nacos.namespace.${spring.profiles.active}}file-extension: yamlshared-configs: shareConfig.yamlrefresh-enabled: true
# extension-configs:
# dataId:
# group:
# refresh: truediscovery:server-addr: ${settings.nacos.addr}namespace: ${settings.nacos.namespace.${spring.profiles.active}}sentinel:transport:dashboard: ${settings.sentinel.dashboard}datasource:flow: #这个名称可以随便取nacos: #限流持久配置server-addr: ${settings.nacos.addr} #使用nacos的持久dataId: ${spring.application.name}-flow-rules #获取限流的数据源的dataIdgroupId: DEFAULT_GROUPrule-type: flowdataType: jsondegrade:nacos: #降级持久配置server-addr: ${settings.nacos.addr}dataId: ${spring.application.name}-degrade-rulesgroupId: SENTINEL_GROUPrule-type: degradesystem:nacos:server-addr: ${settings.nacos.addr}dataId: ${spring.application.name}-system-rulesgroupId: SENTINEL_GROUPrule-type: systemauthority:nacos:server-addr: ${settings.nacos.addr}dataId: ${spring.application.name}-authority-rulesgroupId: SENTINEL_GROUPrule-type: authorityparam-flow:nacos:server-addr: ${settings.nacos.addr}dataId: ${spring.application.name}-param-flow-rulesgroupId: SENTINEL_GROUPrule-type: param-flow##### nacos配置参数 ####
settings:nacos:addr: 192.168.31.37:38001namespace:dev: 190bfcff-e39e-42d7-ae87-af2690a4d409sentinel:dashboard: 192.168.31.37:8808
每个配置,对应控制台的各种规则
- nacos添加配置
在服务的运行日志中我们可以看见他推送了该配置到sentinel
然后在sentinel dashboard中可以看见我们定义的规则,但是如果我们在控制台修改了该规则是没有作用的,因为他不会推送到nacos配置中心,所有如果这样搞,那么sentinel控制台的作用就仅仅是一个展示,而且每个需要配置规则的资源,都需要我们自己去配置中心件文件,加配置,十分的麻烦。比较好的是规则我们都可以定义,想不花钱的话,就只有这样
所以我们要尝试修改sentinel控制台代码 - 改造控制台
这里使用push模式,其他模式可参考:https://www.cnblogs.com/fx-blog/p/11726189.html
下载sentinel-dashboard源码: https://github.com/alibaba/Sentinel/releases
修改pom
<!-- for Nacos rule publisher sample --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>
将test去掉,让配置不仅在测试时生效
然后将test的rule目录下的nacos文件复制到rule目录下
然后修改controller/v2目录下的FlowControllerV2
修改Qualifier注解,原来是defalt,改为nacos
@Autowired
@Qualifier("flowRuleNacosProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
@Qualifier("flowRuleNacosPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;
然后修改src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html
将注释放开
<li ui-sref-active="active" ng-if="entry.appType==0"><a ui-sref="dashboard.flow({app: entry.app})"><i class="glyphicon glyphicon-filter"></i> 流控规则 V1</a></li>
最后修改src/main/webapp/resources/app/scripts/controllers/identity.js
FlowServiceV1改为FlowServiceV2,使用我们改造后的controller
然后重启控制台
为了查看效果,将我们之前在nacos创建的配置文件删掉
然后在刚刚添加的 流控规则 V1里面添加规则
添加后查看nacos控制台,即可看见我们刚刚添加的流控规则
这样就非常的nice,但是目前我们只改造了flow规则,剩下的怎么改造,目前我还不会。。。。这个都是官方提供的代码,有兴趣的可以试一试,每个规则对应一个controller,改造相应的controller即可。
spring cloud alibaba系列sentinel规则持久化相关推荐
- Spring Cloud Alibaba系列博客汇总整理
Spring Cloud Alibaba:Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合. 开发环境 ...
- Spring Cloud Alibaba系列四:集成 seata 实现分布式事务
文章目录 Spring Cloud Alibaba系列四:集成 seata 实现分布式事务 前言 Seata 是什么? Seata 术语 安装 seata 1.创建 seata 数据库,并添加对应的表 ...
- Spring Cloud Alibaba系列之分布式事务Seata
Spring Cloud Alibaba系列之分布式事务Seata 1.分布式事务 分布式事务不是在现在微服务分布式架构上才产生的问题,在单体应用同样存在分布式事务问题,典型的场景就是单体应用使用了多 ...
- Spring Cloud Alibaba:Sentinel 流控规则
文章目录 1. 前言 2. 阈值类型 2.1 QPS 2.2 线程数 3. 流控模式 3.1 直接 3.2 关联 3.3 链路 4. 流控效果 4.1 快速失败 4.2 Warm Up 4.3 排队等 ...
- Spring Cloud Alibaba:Sentinel实现熔断与限流
摘要 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Sentinel 作为其核心组件之一,具有熔断与限流等一系列服务保护功能,本文将对其用法进行详细介绍. Senti ...
- Spring Cloud Alibaba系列使用(二)----Nacos注册中心
1|1Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spri ...
- Dubbo的疑难解答:Spring Cloud Alibaba系列之分布式服务组件
1.分布式理论 1.1.分布式基本定义 <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统" 分布式系统(dis ...
- Spring Cloud Alibaba系列之快速开始搭建Nacos环境
1.前言介绍 前言:本实验介绍如何搭建Spring Cloud Alibaba Nacos的服务端,nacos server是一个服务注册中心也是一个分布式配置中心 2.实验环境准备 实验环境准备 6 ...
- spring cloud alibaba整合sentinel
1. 添加依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-c ...
最新文章
- android 贝塞尔曲线点击区域,白话经典贝塞尔曲线及其在 Android 中的应用
- eclipse java luna,java-如何在Eclipse Luna中配置Lombok
- 兰蔻御用运维总结之一
- java 大端字节序_理解字节序 大端字节序和小端字节序
- 人工智能用python还是java_学会java和python语言,可以开始搞人工智能吗?
- swift源代码兼容开源项目清单
- Jupyter Notebook 常用的快捷键
- ASP.NET Core 中的静态文件
- xampp php5.6 7.1共存,New XAMPP with PHP 7.2.8, 7.1.20, 7.0.31 5.6.37
- SHT1x/SHT7x数字温湿度传感器驱动编写
- 链表——【线性表(二)】
- 可拖动jquery插件
- 数组成员是函数java_在Laravel 5.6中调用数组上的成员函数links()
- python 爬虫生成csv文件和图_Python简单爬虫导出CSV文件的实例讲解
- mysql 优化面试题
- win10系统盘清理彻底的方法
- jde多目标_CVPR 2020 多目标跟踪算法JDE 训练
- 产品经理需要了解的概念【职位篇】
- 驾校考试科目二完整流程
- Windows下vc开发chrome浏览器工程的一点粗浅理解和封装