“秋来相顾尚飘蓬,未就丹砂愧葛洪。
痛饮狂歌空度日,飞扬跋扈为谁雄”


总结

我上一篇: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>&nbsp;&nbsp;流控规则 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规则持久化相关推荐

  1. Spring Cloud Alibaba系列博客汇总整理

    Spring Cloud Alibaba:Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合. 开发环境 ...

  2. Spring Cloud Alibaba系列四:集成 seata 实现分布式事务

    文章目录 Spring Cloud Alibaba系列四:集成 seata 实现分布式事务 前言 Seata 是什么? Seata 术语 安装 seata 1.创建 seata 数据库,并添加对应的表 ...

  3. Spring Cloud Alibaba系列之分布式事务Seata

    Spring Cloud Alibaba系列之分布式事务Seata 1.分布式事务 分布式事务不是在现在微服务分布式架构上才产生的问题,在单体应用同样存在分布式事务问题,典型的场景就是单体应用使用了多 ...

  4. 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 排队等 ...

  5. Spring Cloud Alibaba:Sentinel实现熔断与限流

    摘要 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Sentinel 作为其核心组件之一,具有熔断与限流等一系列服务保护功能,本文将对其用法进行详细介绍. Senti ...

  6. Spring Cloud Alibaba系列使用(二)----Nacos注册中心

    1|1Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spri ...

  7. Dubbo的疑难解答:Spring Cloud Alibaba系列之分布式服务组件

    1.分布式理论 1.1.分布式基本定义 <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统" 分布式系统(dis ...

  8. Spring Cloud Alibaba系列之快速开始搭建Nacos环境

    1.前言介绍 前言:本实验介绍如何搭建Spring Cloud Alibaba Nacos的服务端,nacos server是一个服务注册中心也是一个分布式配置中心 2.实验环境准备 实验环境准备 6 ...

  9. spring cloud alibaba整合sentinel

    1. 添加依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-c ...

最新文章

  1. android 贝塞尔曲线点击区域,白话经典贝塞尔曲线及其在 Android 中的应用
  2. eclipse java luna,java-如何在Eclipse Luna中配置Lombok
  3. 兰蔻御用运维总结之一
  4. java 大端字节序_理解字节序 大端字节序和小端字节序
  5. 人工智能用python还是java_学会java和python语言,可以开始搞人工智能吗?
  6. swift源代码兼容开源项目清单
  7. Jupyter Notebook 常用的快捷键
  8. ASP.NET Core 中的静态文件
  9. xampp php5.6 7.1共存,New XAMPP with PHP 7.2.8, 7.1.20, 7.0.31 5.6.37
  10. SHT1x/SHT7x数字温湿度传感器驱动编写
  11. 链表——【线性表(二)】
  12. 可拖动jquery插件
  13. 数组成员是函数java_在Laravel 5.6中调用数组上的成员函数links()
  14. python 爬虫生成csv文件和图_Python简单爬虫导出CSV文件的实例讲解
  15. mysql 优化面试题
  16. win10系统盘清理彻底的方法
  17. jde多目标_CVPR 2020 多目标跟踪算法JDE 训练
  18. 产品经理需要了解的概念【职位篇】
  19. 驾校考试科目二完整流程
  20. Windows下vc开发chrome浏览器工程的一点粗浅理解和封装

热门文章

  1. Win10 主题 美化 动漫
  2. 相片墙个人相册图片墙HTML源码
  3. 【51单片机】数码管的静态显示
  4. GIF制作器哪个好,如何制作表情包
  5. 人事管理系统开发功能需求
  6. 计算机网络技术第四版知识点,计算机网络技术知识点总结
  7. 小米4发布了,“小米已江郎才尽”了吗
  8. Hadoop2.8.5详细教程(三) 克隆样机+JDK安装
  9. 前端vue实现上传图片打马赛克功能
  10. 关键词过滤(脏字过滤)Trie Tree(Hash)和FastCheck两种过滤方式java版本