Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】

前面,已经为Sentinel实现了 基于拉模式的规则持久化 ,本文来实现基于 推模式的规则持久化。

文章目录

          • 一、推模式架构图
          • 二、原理简述
          • 三、微服务改造
            • 3.1. 加依赖
            • 3.2. 添加配置
          • 四、Sentinel控制台改造
          • 五、编译 & 启动
          • 六、测试
            • 测试1:
            • 测试2:
            • 测试3:
          • 七、万里长征才进行了第一步…
          • 八、懒人包
          • 九、推模式优缺点分析
          • 十、参考文档
          • 十一、案例测试
            • 11.1. 下载
            • 11.2. 启动
            • 11.3. 清空浏览器缓存
            • 11.4. 访问口控制台
            • 11.5. 接口请求
            • 11.6. 登陆nacos
            • 11.7. 添加降级规则
            • 11.8. nacos查看降级规则
            • 11.9. 内容中心和 Sentinel控制台服务关闭
            • 11.10. 重新启动服务
            • 11.11. 登陆Sentinel控制台查看降级规则

一、推模式架构图

在这里插入图片描述

图片引用自 https://github.com/alibaba/Sentinel/wiki/在生产环境中使用-Sentinel

二、原理简述

控制台推送规则:
将规则推送到Nacos或其他远程配置中心
Sentinel客户端链接Nacos,获取规则配置;并监听Nacos配置变化,如发生变化,就更新本地缓存(从而让本地缓存总是和Nacos一致)
控制台监听Nacos配置变化,如发生变化就更新本地缓存(从而让控制台本地缓存总是和Nacos一致)

三、微服务改造
3.1. 加依赖
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
3.2. 添加配置
spring:cloud:sentinel:datasource:# 名称随意flow:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-flow-rulesgroupId: SENTINEL_GROUP# 规则类型,取值见:# org.springframework.cloud.alibaba.sentinel.datasource.RuleTyperule-type: flowdegrade:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-degrade-rulesgroupId: SENTINEL_GROUPrule-type: degradesystem:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-system-rulesgroupId: SENTINEL_GROUPrule-type: systemauthority:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-authority-rulesgroupId: SENTINEL_GROUPrule-type: authorityparam-flow:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-param-flow-rulesgroupId: SENTINEL_GROUPrule-type: param-flow
四、Sentinel控制台改造

控制台改造主要是为规则实现
DynamicRuleProvider:从Nacos上读取配置
DynamicRulePublisher:将规则推送到Nacos上
修改pom.xml,找到:

<!-- for Nacos rule publisher sample --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><scope>test</scope></dependency>

将 test 这一行注释掉,即改为如下:

<!-- for Nacos rule publisher sample -->
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><!--<scope>test</scope>-->
</dependency>

找到 sentinel-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos目录,将整个目录拷贝到 sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos,如图:
在这里插入图片描述
修改 com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2 ,找到

@Autowired
@Qualifier("flowRuleDefaultProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
@Qualifier("flowRuleDefaultPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

修改为:

@Autowired
@Qualifier("flowRuleNacosProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
@Qualifier("flowRuleNacosPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

修改 sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html,找到:

<!--<li ui-sref-active="active">--><!--<a ui-sref="dashboard.flow({app: entry.app})">--><!--<i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则 V1</a>-->
<!--</li>-->

把注释解开,即改为:

<li ui-sref-active="active"><a ui-sref="dashboard.flow({app: entry.app})"><i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则 V1</a>
</li>

齐活儿啦!终于把流控规则改造成推模式持久化啦!

五、编译 & 启动

执行 mvn clean package -DskipTests
在项目的 target 目录找到sentinel-dashboard.jar ,执行 java -jar sentinel-dashboard.jar 启动控制台。

六、测试
测试1:

用Sentinel控制台【菜单栏的 流控规则 V1 】推送流控规则,规则会存储到Nacos;

测试2:

直接在Nacos上修改流控规则,然后刷新Sentinel控制台,控制台上的显示也会被修改;

测试3:

重启Sentinel控制台,并重启微服务;刷新控制台,可以发现规则依然存在。

七、万里长征才进行了第一步…

以上,其实只实现了流控规则的持久化。Sentinel有若干种规则,例如降级规则、系统规则、授权规则、热点规则等,都需要使用类似的方式,修改 com.alibaba.csp.sentinel.dashboard.controller 包中对应的Controller,才能实现持久化。

八、懒人包

已经基于Sentinel Dashboard 1.6.2做了修改,为如下规则提供了持久化:

  • 流控规则
  • 降级规则
  • 系统规则
  • 授权规则
  • 参数热点规则
    GitHub地址:https://github.com/eacdy/Sentinel-Dashboard-Nacos ,
    使用1.6.2-NACOS分支即可。

使用说明:https://github.com/eacdy/Sentinel-Dashboard-Nacos/releases

修改的文件:
在这里插入图片描述

九、推模式优缺点分析

优点
规则持久化
一致性好
性能优秀
改动多、并且麻烦
引入额外的依赖(Nacos)

十、参考文档
https://github.com/alibaba/Sentinel/wiki/在生产环境中使用-Sentinel
十一、案例测试

如果需要二次开发,请切换到使用1.6.2-NACOS分支下载源码开发即可

11.1. 下载

GitHub地址:https://github.com/eacdy/Sentinel-Dashboard-Nacos/releases

在这里插入图片描述

11.2. 启动
java -jar sentinel-dashboard-1.6.2-NACOS.jar
11.3. 清空浏览器缓存

在这里插入图片描述

11.4. 访问口控制台

http://localhost:8080/
在这里插入图片描述

11.5. 接口请求

Sentine控制台采用懒加载,因此,需要请求一下服务接口,后期可以修改懒加载策略关闭
在这里插入图片描述

11.6. 登陆nacos

http://localhost:8848/nacos
在这里插入图片描述

11.7. 添加降级规则

在这里插入图片描述
在这里插入图片描述

11.8. nacos查看降级规则

刷新nacos,查看降级规则
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.9. 内容中心和 Sentinel控制台服务关闭

11.10. 重新启动服务

重新启动 Sentinel控制台和内容中心

11.11. 登陆Sentinel控制台查看降级规则

在这里插入图片描述
在这里插入图片描述
从上图可以看出,测试通过!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代IM系统中的消息系统架构 - 实现篇

序 消息类场景是表格存储&#xff08;Tablestore&#xff09;主推的方向之一&#xff0c;因其数据存储结构在消息类数据存储上具有天然优势。为了方便用户基于Tablestore为消息类场景建模&#xff0c;Tablestore封装Timeline模型&#xff0c;旨在让用户更快捷的实现消息类场景…

linux 环境 RocketMQ 4.8.0 安装、部署控制台

windows下RocketMQ下载、安装、部署、控制台 https://gblfy.blog.csdn.net/article/details/115734482 文章目录一、软件下载二、启动2.1. Linux/Unix/MacOS安装教程2.2. 验证RocketMQ功能正常&#xff08;可选&#xff09;2.3. 服务停止三、安装可视化插件3.1. github下载3.2.…

数据洪流时代,开发者这样硬核突围!

随着社会信息化的脚步加快&#xff0c;我们每个人无时无刻都在产生数据&#xff1a;刷抖音、聊微信、视频会议、点外卖……拇指轻轻一点击的背后&#xff0c;将引发意想不到的数据洪流&#xff1a;据 IDC 发布《数据时代 2025》的报告显示&#xff0c;全球每年产生的数据将从 2…

机器学习在交通标志检测与精细分类中的应用

导读 数据对于地图来说十分重要&#xff0c;没有数据&#xff0c;就没有地图服务。用户在使用地图服务时&#xff0c;不太会想到数据就像冰山一样&#xff0c;用户可见只是最直接、最显性的产品功能部分&#xff0c;而支撑显性部分所需要的根基&#xff0c;往往更庞大。 地图…

Kubenetes 监控一站式解决方案:阿里云 Prometheus 免费公测

Prometheus是目前企业级云原生应用的首选开源监控工具。作为云原生计算基金会&#xff08;CNCF&#xff09;第二个毕业的项目&#xff08;第一个是Kubernetes&#xff09;&#xff0c;Prometheus对K8s容器环境有很好的原生支持。近日刚刚发布免费公测的阿里云Prometheus&#x…

SpringBoot2.x Nacos RocketMQ 事务消息

需求背景&#xff1a; 现在有内容中心&#xff08;content-center&#xff09;和 用户中心&#xff08;user-center&#xff09;2个微服务&#xff0c;请求内容中心&#xff0c;发送消息给用户中心&#xff0c;完成为指定用户添加积分操作。 文章目录一、准备工作1. 版本对照2.…

阿里云宣布3年再投2000亿

4月20日&#xff0c;阿里云宣布&#xff1a;未来3年再投2000亿&#xff0c;用于云操作系统、服务器、芯片、网络等重大核心技术研发攻坚和面向未来的数据中心建设。 近期&#xff0c;谷歌、美团等相继关闭或收缩云计算业务。在当前经济形势下&#xff0c;阿里云是否会缩减投入&…

JavaScript-Map和Set

ES6新特性 Map var map new Map([[wang, 23],[ht, 22],[test,[1,2,3,yy]],[3,test num]]) // 通过 key获取 value var test1 map.get(test); var num map.get(3); console.log(test1) console.log(num) // 添加新的 键值对 map.set(admin, 123456) console.log(map) // 修…

MaxCompute技术人背后的故事:从ApacheORC到AliORC

2019大数据技术公开课第一季《技术人生专访》来袭&#xff0c;本季将带领开发者们探讨大数据技术&#xff0c;分享不同国家的工作体验。本文整理自阿里巴巴计算平台事业部高级技术专家吴刚的专访&#xff0c;将为大家介绍Apache ORC开源项目、主流的开源列存格式ORC和Parquet的…

JavaScript-Iterable迭代

Iterable ES6新特性 遍历数组 // for of 打印值 &#xff0c; for in 打印下标 var arr [4,5,6] for (const number of arr) {console.log(number) }遍历Map var map new Map([[whl,100],[ht,110],[other,0]]) for (let x of map) {console.log(x)console.log(x[0])consol…

阿里小程序亮相2019上海云峰会:大生态促成许多“小而美”

7月25日下午&#xff0c;在上海世博中心的阿里云峰会上海站上&#xff0c;阿里巴巴小程序繁星计划以展区加开放式论坛形式&#xff0c;与各领域开发者、企业和生态合作伙伴充分交流了小程序一云多端的规划和进展&#xff0c;以及阿里系各端APP向小程序开放的资源和能力。 与会者…

快速验证业务决策,“玩转”用户增长

背景 闲鱼目前已经是国内最大的闲置物品交易平台&#xff0c;每天都有数以千万计的用户过来闲鱼&#xff0c;以C2C交易为主。在闲鱼里面&#xff0c;用户的C2C购物频率其实是很低的&#xff0c;而纯粹地逛商品feed流是一件挺无聊的事情。在业务上做加法&#xff0c;突破闲鱼用…

JavaScript-函数

函数 定义函数 定义方式一 绝对值函数 function abs(x) {if (x>0){return x;}else{return -x;} }一旦执行到return 代表函数结束&#xff0c;返回结果&#xff01; 如果没有执行return&#xff0c;函数执行完也会返回结果&#xff0c;结果就是NaN / undefined 定义方式二…

领航智变时代 2020 NAVIGATE领航者峰会云上起航

4月20日&#xff0c;由紫光集团和旗下新华三集团主办的2020 NAVIGATE领航者峰会首次全面移师线上&#xff0c;盛大启航。本次线上峰会从4月20日到25日持续6天&#xff0c;以“智变”为主题&#xff0c;通过33个专题&#xff0c;超过120场演讲&#xff0c;聚焦探索智能时代的智与…

在阿里,我如何做好技术项目管理?

阿里妹导读&#xff1a;在技术公司、尤其是互联网公司&#xff0c;技术人员作为PM(项目经理)是非常常见的。有些同学得心应手&#xff0c;有条不紊&#xff0c;能得到清晰稳定的预期结果&#xff1b;有些同学则在过程中遇到各种闹心的事&#xff0c;最后不是项目上不了线&#…

云原生化的迁云实战

云原生的时代已经到来&#xff0c;云原生技术正在重塑整个软件生命周期&#xff0c;阿里巴巴是国内最早布局云原生技术的公司之一。 容器服务团队在过去的几年时间内帮助很多用户成功把业务云原生化并迁移上云&#xff0c;其中有现在已经是我们TOP10的大客户&#xff0c;也有需…

超详细!一文告诉你 SparkStreaming 如何整合 Kafka !附代码可实践

来源 | Alice菌责编 | Carol封图 | CSDN 下载于视觉中国相信很多小伙伴已经接触过 SparkStreaming 了&#xff0c;理论就不讲太多了&#xff0c;今天的内容主要是为大家带来的是 SparkStreaming 整合 Kafka 的教程。文中含代码&#xff0c;感兴趣的朋友可以复制动手试试&#…

PerfDog-移动端性能测试-基本使用

常见的腾讯性能测试工具&#xff1a;腾讯gt、腾讯wetest、腾讯perfdog 腾讯perfdog&#xff1a; https://perfdog.qq.com/ 一、介绍&#xff1a; 移动全平台iOS/Android性能测试、分析工具平台。快速定位分析性能问题&#xff0c;提升APP应用及游戏性能和品质。手机无需ROOT/越…

网易云音乐的消息队列改造之路

十年文案老司机&#xff0c;不如网易评论区。 网易云音乐自2013年上线后&#xff0c;业务保持了高速增长。云音乐除了提供好听的音乐外&#xff0c;还留下了我们在乐和人上的美好回忆。本文整理自网易云音乐消息队列负责人林德智在近期 Apache Flink&RocketMQ Meetup 上海…

OSS在线迁移服务剖析

在前迁移说明 目前由于 OSS 数据迁移服务涉及到对目标的 OSS 要有很多 action 的 API 授权&#xff0c;为避免用户产生过多的学习成本&#xff0c;我们直接强制使用主账号进行迁移&#xff1b;该服务正在公测中&#xff0c;目前仍在免费使用阶段&#xff1b;服务使用需要提前工…