Sentinel 规则持久化

文章目录

  • Sentinel 规则持久化
    • 一、修改order-service服务
      • 1.引入依赖
      • 2.配置nacos地址
    • 第二步修改非常麻烦,可以略过,直接使用已经打好包的来使用
    • 二、修改sentinel-dashboard源码
      • 1. 解压
      • 2. 修改nacos依赖
      • 3. 添加nacos支持
      • 4. 修改nacos地址
      • 5. 配置nacos数据源
      • 6. 修改前端页面
      • 7. 重新编译、打包项目
      • 8.启动
      • 9. 浏览器端测试
      • 10. 修改好后的sentinel规则可持久化文件

Sentinel 规则持久化

需要大量修改源码,很麻烦,下面也只是修改了一小部分
阿里有一个收费的sentinel云服务,开源sentinel没有实现最佳版本可能就是为了给收费版让路吧

一、修改order-service服务

修改OrderService,让其监听Nacos中的sentinel规则配置。

具体步骤如下:

1.引入依赖

在order-service中引入sentinel监听nacos的依赖:

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

2.配置nacos地址

在order-service中的application.yml文件配置nacos地址及监听的配置信息:

spring:cloud:sentinel:datasource:flow:nacos:server-addr: localhost:8848 # nacos地址dataId: orderservice-flow-rulesgroupId: SENTINEL_GROUPrule-type: flow # 还可以是:degrade、authority、param-flow

直接从datasource开始复制,粘贴过去

在这里插入图片描述


第二步修改非常麻烦,可以略过,直接使用已经打好包的来使用

链接:https://pan.baidu.com/s/1mffAD62BZt3IDp59NxO7OQ
提取码:hzan


二、修改sentinel-dashboard源码

SentinelDashboard默认不支持nacos的持久化,需要修改源码。

1. 解压

解压课前资料中的sentinel源码包:

在这里插入图片描述

然后并用IDEA打开这个项目,结构如下:

在这里插入图片描述

2. 修改nacos依赖

在sentinel-dashboard源码的pom文件中,nacos的依赖默认的scope是test,只能在测试时使用,这里要去除:

在这里插入图片描述

在这里插入图片描述

将sentinel-datasource-nacos依赖的scope去掉:

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

3. 添加nacos支持

在sentinel-dashboard的test包下,已经编写了对nacos的支持,我们需要将其拷贝到main下。

在这里插入图片描述

4. 修改nacos地址

然后,还需要修改测试代码中的NacosConfig类:
复制后的
在这里插入图片描述

修改其中的nacos地址,让其读取application.properties中的配置:

在这里插入图片描述

/*** @author Eric Zhao* @since 1.4.0*/
@Configuration
@ConfigurationProperties(prefix = "nacos")
public class NacosConfig {// nacos地址private String addr;@Beanpublic ConfigService nacosConfigService() throws Exception {return ConfigFactory.createConfigService(addr);}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}@Beanpublic Converter<List<FlowRuleEntity>, String> flowRuleEntityEncoder() {return JSON::toJSONString;}@Beanpublic Converter<String, List<FlowRuleEntity>> flowRuleEntityDecoder() {return s -> JSON.parseArray(s, FlowRuleEntity.class);}}

在sentinel-dashboard的application.properties中添加nacos地址配置:

nacos.addr=localhost:8848

5. 配置nacos数据源

另外,还需要修改com.alibaba.csp.sentinel.dashboard.controller.v2包下的FlowControllerV2类:

在这里插入图片描述

让我们添加的Nacos数据源生效:

在这里插入图片描述

6. 修改前端页面

接下来,还要修改前端页面,添加一个支持nacos的菜单。

修改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;流控规则-NACOS</a>
</li>

7. 重新编译、打包项目

运行IDEA中的maven插件,编译和打包修改好的Sentinel-Dashboard:

在这里插入图片描述

报错就先clean,再package

在这里插入图片描述

打包好的文件如下,可以直接使用,就不要自己动手改了,确实很麻烦

链接:https://pan.baidu.com/s/1YpHITSBC3dUSAj8zQF_niQ
提取码:hzan

复制到一个目录下,并重命名,以示区分

在这里插入图片描述

8.启动

启动方式跟官方一样:

java -jar sentinel-dashboard.jar

如果要修改nacos地址,需要添加参数:(可以动态指定nacos的地址,外部依赖的地址,当然要动态指定啦)

java -jar -Dnacos.addr=localhost:8848 sentinel-dashboard.jar

9. 浏览器端测试

先正常登录nacos,然后访问一个资源,触发一个簇点链路

然后可能地址没换,之前的官方nacos前端有缓存,需要清空一下,清空指定网页缓存操作如下图
在这里插入图片描述

然后就会出现我们修改的基于nacos持久化的流控规则
在这里插入图片描述

那么目前在流控规则-nacos菜单下新建的规则可以持久化
其他菜单还是不行,得一个个修改,所以修改量会非常大,这也只是修改了一小部分

新增试试
在这里插入图片描述

到nacos下面看:多出了一个配置项: orderservice-flow-rules
在这里插入图片描述

访问:http://localhost:10010/order/101?authorization=admin

确实被限流了
在这里插入图片描述

重启OrderApplication微服务,以前会丢失,现在不会丢失了
(其他菜单下新建规则,然后重启OrderApplication微服务,查看确实丢失了)

10. 修改好后的sentinel规则可持久化文件

打包好的文件如下,可以直接使用,就不要自己动手改了,确实很麻烦

链接:https://pan.baidu.com/s/1YpHITSBC3dUSAj8zQF_niQ
提取码:hzan

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

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

相关文章

micropython SSD1306/SSD1315驱动

目录 简介 代码 功能 显示ASCII字符 ​编辑 画任意直线 画横线 画竖线 画矩形 画椭圆 画立方体 画点阵图 翻转 反相 滚动 横向滚动 纵向滚动 奇葩滚动 简介 我重新写了一个驱动&#xff0c;增加了一些功能&#xff0c;由于我的硬件是128*64oled单色I2C&#xff0c;我只…

Hlang--用Python写个编程语言-判断与循环

文章目录 前言语法描述判断循环词法解析语法解析定义节点生成节点判断节点循环节点解释器处理判断节点循环处理前言 okey,很好,在上一篇文章当中,我们实现了这个基本的逻辑运算,所以的话,在这里,我们将可以实现到我们的这个判断和循环了。由于这里的话,我们的操作其实和…

UML图绘制 -- 类图

1.类图的画法 类 整体是个矩形&#xff0c;第一层类名&#xff0c;第二层属性&#xff0c;第三层方法。 &#xff1a;public- : private# : protected空格: 默认的default 对应的类写法。 public class Student {public String name;public Integer age;protected I…

浏览器渲染原理 - 输入url 回车后发生了什么

目录 渲染时间点渲染流水线1&#xff0c;解析&#xff08;parse&#xff09;HTML1.1&#xff0c;DOM树1.2&#xff0c;CSSOM树1.3&#xff0c;解析时遇到 css 是怎么做的1.4&#xff0c;解析时遇到 js 是怎么做的 2&#xff0c;样式计算 Recalculate style3&#xff0c;布局 la…

集群、负载均衡集群、高可用集群简介,LVS工作结构、工作模式、调度算法和haproxy/nginx模式拓扑介绍

一.集群的定义 1.定义 2.分类 &#xff08;1&#xff09;负载均衡集群&#xff08;LBC/LB&#xff09; &#xff08;2&#xff09;高可用集群&#xff08;HAC&#xff09; 二.使用集群的意义 1.高性价比和性能比 2.高可用性 3.可伸缩性强 4.持久和透明性高 三.常见的…

图像去雨-雨线清除-图像处理-(计算机作业附代码)

背景 多年来&#xff0c;图像去雨已经被广泛研究&#xff0c;使用传统方法和基于学习的方法。然而&#xff0c;传统方法如高斯混合模型和字典学习方法耗时&#xff0c;并且无法很好地处理受到严重雨滴影响的图像块。 算法 通过考虑雨滴条状特性和角度分布&#xff0c;这个问…

Mybatis查询数据库返回任意形式的返回结构

Mybatis查询数据库返回任意形式的返回结构 mapper的接口mapper.xml mapper的接口 假如有多个记录&#xff0c;可以将map放到 arraylist里 mapper.xml 主要是通过resultMap定义好映射格式

尼科彻斯定理-C语言/Java

描述 验证尼科彻斯定理&#xff0c;即&#xff1a;任何一个整数m的立方都可以写成m个连续奇数之和。 例如&#xff1a; 1^31 2^335 3^37911 4^313151719 输入一个正整数m&#xff08;m≤100&#xff09;&#xff0c;将m的立方写成m个连续奇数之和的形式输出。&…

vscode远程连接Linux失败,提示过程试图写入的管道不存在(三种解决办法)

vscode报错如下&#xff1a; 一、第一种情况 原因是本地的known_hosts文件记录服务器信息与现服务器的信息冲突了&#xff0c;导致连接失败。 解决方案就是把本地的known_hosts的原服务器信息全部删掉&#xff0c;然后重新连接。 二、第二种情况 在编写配置文件config时&…

RequestRespons

文章目录 Request&Respons1 Request和Response的概述2 Request对象2.1 Request继承体系2.2 Request获取请求数据2.2.1 获取请求行数据2.2.2 获取请求头数据2.2.3 获取请求体数据2.2.4 获取请求参数的通用方式 2.3 IDEA快速创建Servlet2.4 请求参数中文乱码问题2.4.1 POST请…

stable diffusion基础

整合包下载&#xff1a;秋叶大佬 【AI绘画8月最新】Stable Diffusion整合包v4.2发布&#xff01; 参照&#xff1a;基础04】目前全网最贴心的Lora基础知识教程&#xff01; VAE 作用&#xff1a;滤镜微调 VAE下载地址&#xff1a;C站&#xff08;https://civitai.com/models…

Oracle将与Kubernetes合作推出DevOps解决方案!

导读Oracle想成为云计算领域的巨头&#xff0c;但它不是推出自己品牌的云DevOps软件&#xff0c;而是将与CoreOS在Kubernetes端展开合作。七年前&#xff0c;Oracle想要成为Linux领域的一家重量级公司。于是&#xff0c;Oracle主席拉里埃利森&#xff08;Larry Ellison&#xf…

Lnton羚通关于【PyTorch】教程:torchvision 目标检测微调

torchvision 目标检测微调 本教程将使用Penn-Fudan Database for Pedestrian Detection and Segmentation 微调 预训练的Mask R-CNN 模型。 它包含 170 张图片&#xff0c;345 个行人实例。 定义数据集 用于训练目标检测、实例分割和人物关键点检测的参考脚本允许轻松支持添加…

【环境配置】Windows 10 安装 PyTorch 开发环境,以及验证 YOLOv8

Windows 10 安装 PyTorch 开发环境&#xff0c;以及验证 YOLOv8 最近搞了一台Windows机器&#xff0c;准备在上面安装深度学习的开发环境&#xff0c;并搭建部署YOLOv8做训练和测试使用&#xff1b; 环境&#xff1a; OS&#xff1a; Windows 10 显卡&#xff1a; RTX 3090 安…

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片

今日学习0.96寸单色OLED显示屏的自由取模显示: 宋体汉字比较复杂&#xff0c;常用字符可以直接复制存下来&#xff0c;毕竟只有那么几十个字母字符&#xff0c;但汉字实在太多了&#xff0c;基本不会全部放在单片机里存着&#xff0c;一般用到多少个字就取几个字的模&#xff…

codesys和HMI通讯

codesys可视化有2种&#xff1a; 网页web // 类似于路由器管理那样&#xff0c;登录网页就能操作 本地HMI // 其他品牌的触摸屏 符号配置&#xff1a; 1 编译需要的变量 2 导出XML文件 3 触摸屏软件加载XML文件

从零实战SLAM-第八课(非特征点的视觉里程计)

在七月算法报的班&#xff0c;老师讲的蛮好。好记性不如烂笔头&#xff0c;关键内容还是记录一下吧&#xff0c;课程入口&#xff0c;感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…

Eclipse集成MapStruct

Eclipse集成MapStruct 在Eclipse中添加MapStruct依赖配置Eclipse支持MapStruct①安装 m2e-aptEclipse Marketplace的方式安装Install new software的方式安装&#xff08;JDK8用到&#xff09; ②添加到pom.xml 今天拿到同事其他项目的源码&#xff0c;导入并运行的时候抛出了异…

使用 Ansible Galaxy 安装角色

使用 Ansible Galaxy 安装角色 使用 Ansible Galaxy 和要求文件 /home/curtis/ansible/roles/requirements.yml 。从以下 URL 下载角色并安装到 /home/curtis/ansible/roles &#xff1a; http://rhgls.area12.example.com/materials/haproxy.tar 此角色的名称应当为 balancer …

每日一题leetcode--使循环数组所有元素相等的最少秒数

相当于扩散&#xff0c;每个数可以一次可以扩散到左右让其一样&#xff0c;问最少多少次可以让整个数组都变成一样的数 使用枚举&#xff0c;先将所有信息存到hash表中&#xff0c;然后逐一进行枚举&#xff0c;计算时间长短用看下图 考虑到环形数组&#xff0c;可以把首项n放…