微服务框架 SpringCloud微服务架构 微服务保护 34 规则持久化 34.2 实现push 模式

news2024/11/15 15:37:45

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

微服务保护

文章目录

      • 微服务框架
      • 微服务保护
      • 34 规则持久化
        • 34.2 实现push 模式
          • 34.2.1 规则管理模式 - 实现push 模式

34 规则持久化

34.2 实现push 模式

34.2.1 规则管理模式 - 实现push 模式

push模式实现最为复杂,依赖于nacos,并且需要改在Sentinel控制台。整体步骤如下:

在这里插入图片描述

  1. 修改order-service服务,使其监听Nacos配置中心

  2. 修改Sentinel-dashboard源码,配置nacos数据源

  3. 修改Sentinel-dashboard源码,修改前端页面

  4. 重新编译、打包-dashboard源码

【黑马老师给的课前资料】

在这里插入图片描述

步骤一:修改order-service服务,使其监听Nacos配置中心

具体步骤如下:

  1. 引入依赖

在这里插入图片描述

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

在这里插入图片描述

记得刷一下

  1. 配置nacos地址

在这里插入图片描述

修改yaml 配置文件

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: 200039
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice
  cloud:
    inetutils:
      timeout-seconds: 10
    nacos:
      server-addr: localhost:8848 # nacos服务地址

    sentinel:
      transport:
        dashboard: localhost:8080
      web-context-unify: false # 关闭context 整合
      datasource:
        flow:
          nacos:
            server-addr: localhost:8848 # nacos地址
            dataId: orderservice-flow-rules
            groupId: SENTINEL_GROUP
            rule-type: flow # 还可以是:degrade、authority、param-flow

在这里插入图片描述

OK,重启order 服务

在这里插入图片描述

OK

步骤二:修改sentinel-dashboard源码,添加nacos数据源

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

【黑马老师直接跳过了修改步骤,因为太麻烦了,他直接给了一个改好的】

在这里插入图片描述

笔者这里还是把改源码的步骤简单贴一下

① 解压

在这里插入图片描述

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

在这里插入图片描述

② 修改nacos 依赖

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

在这里插入图片描述

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

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

③ 添加nacos 支持

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

在这里插入图片描述

④ 修改nacos 地址

然后,还需要修改测试代码中的NacosConfig类:

在这里插入图片描述

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

在这里插入图片描述

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

nacos.addr=localhost:8848

⑤ 配置nacos 数据源

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

在这里插入图片描述

让添加的Nacos数据源生效:

在这里插入图片描述

【修改前端页面】

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

修改src/main/webapp/resources/app/scripts/directives/sidebar/目录下的sidebar.html文件:

在这里插入图片描述

将其中的这部分注释打开:

在这里插入图片描述

修改其中的文本:

在这里插入图片描述

⑦ 重新编译、打包项目

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

在这里插入图片描述

⑧ 启动

启动方式跟官方一样:

java -jar sentinel-dashboard.jar

如果要修改nacos地址,需要添加参数:

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

OK,这里笔者也就直接用老师做好的jar 包了

先把之前用的官方 sentinel 停掉

在这里插入图片描述

拷贝一下老师做好的jar 包

在这里插入图片描述

OK,直接一样的命令运行它【笔者这里本来就是本地的 8848 nacos ,就不用修改了】

在这里插入图片描述

OK, 这样就跑起来了

先看看nacos 的控制台

在这里插入图片描述

账户密码都是nacos

在这里插入图片描述

OK,这就进来了

访问sentinel 控制台

在这里插入图片描述

访问个接口,“激活” 链路

在这里插入图片描述

OK, 再次查看sentinel 控制台

在这里插入图片描述

清空一下缓存

在这里插入图片描述

在这里插入图片描述

OK, 这样左边导航栏 就多出了一个“流控规则 - NACOS ” 条目

在这里插入图片描述

这下在这里面添加的流控规则最终就会进入 nacos

OK,直接试试,新增一个流控规则

在这里插入图片描述

直接新增

在这里插入图片描述

OK,看看Nacos 的控制台

在这里插入图片描述

妙啊,现在再次访问测试

在这里插入图片描述

连点两次,【配置的QPS = 1】

OK, 限流成功,现在重启order 微服务

在这里插入图片描述

如果是以前,那限流规则就没了,但是现在我们直接再去测试【还是需要先"激活一下"链路】

在这里插入图片描述

OK, 之前的规则并没有丢失

测试

在这里插入图片描述

连刷两次,流控成功【牛逼!!!!!!】

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

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

相关文章

【LeetCode每日一题:1827. 最少操作使数组递增~~~贪心遍历模拟】

题目描述 给你一个整数数组 nums &#xff08;下标从 0 开始&#xff09;。每一次操作中&#xff0c;你可以选择数组中一个元素&#xff0c;并将它增加 1 。 比方说&#xff0c;如果 nums [1,2,3] &#xff0c;你可以选择增加 nums[1] 得到 nums [1,3,3] 。 请你返回使 num…

Opencv中关于特征点匹配定位的问题(一)

Opencv中关于特征点匹配定位的问题回顾定位回顾 在我们检测到特征点之后&#xff0c;通常进行特征点的匹配。 首先我们先回顾一下使用Brute-Force匹配器来进行匹配。 import cv2 import numpy as np import matplotlib.pyplot as plt#读取图片 imgcv2.imread(./newmm.png) te…

【图像边缘检测】拉普拉斯算法图像边缘检测与增强【含Matlab源码 456期】

⛄一、拉普拉斯图像增强算法优化简介 图像Laplace变换是基本图像增强算法,原始图像通过Laplace变化后会增强图像中灰度突变处的对比度,使图像中的细节部分得到增强并保留了图像的背景色调,图像的细节比原始图像更加清晰。基于Laplace的图像增强已经成为图像锐化处理的基本工具…

SpringBoot快速入门

SpringBoot快速入门1.Spring Boot是什么2.IDEA创建Spring Boot项目3.测试业务4.application.properties的基本配置1.Spring Boot是什么 众所周知 Spring 应用需要进行大量的配置&#xff0c;各种 XML 配置和注解配置让人眼花缭乱&#xff0c;且极容易出错&#xff0c;因此 Spr…

ADI Blackfin DSP处理器-BF533的开发详解30:鼠标的光标显示应用(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 触摸屏的硬件设计原理图 功能介绍 代码实现了读取触摸屏坐标&#xff0c;并将触摸屏坐标换算为液晶屏的显示坐标&#xff0c;将光标数据叠加到背…

我的开源项目:文件快递柜-匿名口令分享文本,文件-像拿快递一样取文件

口令传送箱 解决问题 很多时候&#xff0c;我们都想将一些文件或文本传送给别人&#xff0c;或者跨端传递一些信息&#xff0c;但是我们又不想为了分享&#xff0c;而去下载一些七里八里的软件&#xff0c;这时候&#xff0c;我们就可以使用口令传送箱&#xff0c;像拿快递一…

Docker快速入门—高级篇【快速浏览版】

文章目录1.Mysql复杂安装详细解说1.1 安装mysql主从复制2.Redis复杂安装详细解说2.1 分布式存储算法2.2 Redis主从安装2.2.1 Redis集群3主3从的说明2.2.2 Redis集群配置2.2.3 主从容错切换迁移案例2.2.4 主从扩容案例2.2.5 主从缩容案例3.Dockerfile解析⭐️3.1 Dockerfile简介…

no matching host key type found. Their offer: ssh-rsa 问题解决

最近升级了Mac OS Ventura 13.0.1后发现ssh指定密钥登录服务器失败。 no matching host key type found. Their offer: ssh-rsa 进入当前用户的.ssh目录发现比之前系统多了一个config文件 查看sshd版本&#xff0c;发现升级了&#xff0c;需要指定算法参数 解决办法&#xff…

12月11日第壹简报,星期日,农历十一月十八

12月11日第壹简报&#xff0c;星期日&#xff0c;农历十一月十八1. 北京急救中心呼吁&#xff1a;无症状、轻症患者勿拨打120&#xff0c;为危重症患者留出通道&#xff1b;钟南山&#xff1a;发热患者可先在家做抗原检测&#xff0c;如持续发热再去医院检查。2. 湖北省第一条高…

解读YOLO v7的代码(一)模型结构研究

YOLO v7在今年7月份推出&#xff0c;模型的性能和速度相比以往版本有了很大的提升。我也想好好研究一下YOLO v7模型&#xff0c;因此把官方的代码库下载下来进行研究&#xff0c;尝试更好的理解这个模型。 从文档中我们可以看到&#xff0c;如果要从头开始训练&#xff0c;可以…

Linux系统的开机自启动

本文为joshua317原创文章,转载请注明&#xff1a;转载自joshua317博客 Linux系统的开机自启动 - joshua317的博客 当你使用windows操作系统时&#xff0c;开机后总会有各种软件自我启动完成&#xff0c;你并没有在桌面上点击它们的图标启动。比如某些安全卫士&#xff0c;某些…

享元模式分析与实践

享元就是共享单元&#xff08;元素&#xff09;的意思。单元代表了整体的部分&#xff0c;如果一个对象其中的部分是稳定的不会改变的&#xff0c;那么这个部分即可以共享。享元模式的用途就是复用对象的单元&#xff0c;让对象的节省内存。 一、享元模式与单例模式区别 单例…

基于C++实现(控制台)停车场管理系统【100010020】

停车场管理系统 1 需求分析 1.1问题描述 停车场内只有一个可停放 n 辆汽车的狭长通道&#xff0c;且只有一个大门可供汽车进出。 汽车在停车场内按车辆到达时间的先后顺序&#xff0c;依次由北向南排列&#xff08;大门在最南端&#xff0c;最先到达的第一辆车停放在停车场…

vite3+vue3二次封装antdvue组件方法

有时候,第三方的组件库不能满足我们的业务需求,就有必要对别人的组件进行再次的封装,下面我们以antdvue里面的button组件二次封装为例,研究下封装的过程 最后效果 基础代码 <template><div><a-button type="primary" v

网络爬虫urllib库常用函数解析

文章目录前言urllib介绍urllib发送请求urllib编码与解码urllib异常处理urllib使用IP代理urllib使用cookie前言 快期末了&#xff0c;有个数据挖掘的大作业需要用到python的相关知识&#xff08;这太难为我这个以前主学C的人了&#xff0c;不过没办法还是得学&#x1f602;&…

我的周刊(第069期)

我的信息周刊&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。&#x1f3af; 项目ChatGPT[1]本周最火爆的项目是 ChatGPT 应该没有意义…

ChatGPT使用初体验

ChatGPT使用初体验 注册chatGPT ChatGPT官网&#xff1a;https://openai.com/blog/chatgpt/ 登录官网进行账号注册&#xff1a; 我相信以各位小伙伴的能力是可以成功注册到账号的。 ChatGPT使用 自从在抖音上、CSDN上看到众多大佬对ChatGPT的一致好评&#xff0c;顿时我就…

论文笔记-时序分类-Rocket

论文标题&#xff1a; ROCKET: exceptionally fast and accurate time series classification using random convolutional kernels 论文链接&#xff1a; https://www.xueshufan.com/publication/3042807565 代码链接&#xff1a; https://github.com/angus924/rocket 发表年份…

Linux系统网络编程——第十九节 多路复用(1)(概念、select、poll)

目录 概念引出 select select的特点 select缺点 poll 概念引出 我们来思考一个问题&#xff1a; 什么叫IO(input output)? 读取或者写入&#xff08;IO&#xff09;本质就是&#xff1a;等拷贝。 读&#xff1a;等将数据从内核空间&#xff08;缓冲区&#xff09;拷贝…

C++(第十一篇):继承(基类与派生类、菱形继承和菱形虚拟继承问题)

&#x1f4d2;博客主页&#xff1a;Morning_Yang丶 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4cc;本文所属专栏&#xff1a;【C拒绝从入门到跑路】 &#x1f64f;作者水平有限&#xff0c;如果发现错误&#xff0c;敬请指正&am…