黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录 Day4

news2024/12/28 10:03:24

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客

这是我的 github https://github.com/Qiuner ⭐️

gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^)

想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎

  • 这篇有不少bug记录与方便您复制的代码,相信一定能节省学习时间同时达到更好的效果
  • 本博客要与原文档搭配使用 day04-微服务02 - 飞书云文档 (feishu.cn)
  • 初学微服务的人,可能会三种不同的拦截器感到迷惑,但其实并不难,我再此也花了一些笔墨来介绍。相信您看了后很快就能理解
  • 原本文档已经介绍的很详细了,很难有多余的补充,就是天的课引导不够好吧,可能会让人迷糊一下

2024最新SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)Day 4

我启动不了项目!!它一直滚动报错!!!项目报错java.util.concurrent.ExecutionException: com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception

  • 如图所示,你发现自己使用docker start mysql/nacos打开了mysql容器和nacos容器,也没有其他问题,但还是一直报错

image-20240622161958497

  • 这是因为nacos启动需要mysql中的数据库数据,所以你需要先启动mysql容器,然后启动nacos

  • 而且mysql容器启动也需要时间,所以不能连着敲

image-20240710152231514

  • 具体情况可以打开 docker logs naocs进行查看

网关概述与粗浅使用

image-20240622163328468

  • 单体项目对用户账号、多模块业务进行一次认证就好了,而微服务项目将认证说不定都拆分成一个模块,因此需要一个网关,网关本身也是微服务中的一个模块

image-20240622163621898

image-20240622163603100

image-20240622163653475

image-20240624095736881

  • 配置网关路由为重点

image-20240625100140646

  • 通过路由网关,实现了什么效果?

  • 本来需要访问8081端口才能到数据,但有了网关后,访问8080也能得到8081模块的数据

image-20240625100306038

网关路由的具体属性

image-20240625100724015

image-20240625100904101

image-20240625101221512

  • stripPrefix用户帮助前后端的项目不同格式请求。
  • 这里添加请求头呀、移除请求头都有局部和全局之分,通过不同的属性来进行判断

网关登录校验

image-20240625102314963

image-20240625102449614

image-20240625102608915

image-20240625102736106

GlobalFilter

image-20240711082447676

如何找到NettyRoutingFilter?

image-20240711083334430

  • 使用ctrl+左击这里

image-20240711083434430

  • 在这个包里面,找找就到了

GatewayFilter

image-20240711090025305

  • 关于工厂类,可以看我的博客 https://blog.csdn.net/qq_61654952/article/details/138126798?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172065957216800180617352%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=172065957216800180617352&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-138126798-null-null.nonecase&utm_term=%E8%AE%BE%E8%AE%A1&spm=1018.2226.3001.4450

image-20240712094133619

  • 全局过滤器局部过滤器也是通过实现的Ordered接口数字大小来决定谁先执行的
过滤器携带参数

image-20240712094605849

案例:登录校验

image-20240712102441376

报错Failed to bind properties under ‘hm.jwt.location’ to cn.hutool.core.io.resource.Resource:

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'hm.jwt.location' to cn.hutool.core.io.resource.Resource:

    Property: hm.jwt.location
    Value: "classpath:hmall.jks"
    Origin: class path resource [application.yaml] - 36:15
    Reason: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [cn.hutool.core.io.resource.Resource]

Action:

Update your application's configuration


进程已结束,退出代码为 1
  • 遇到这种情况,直接删除config文件夹下的东西,再次导入一遍

网关传递用户

image-20240712211133643

image-20240712213302366

image-20240712213930265

  • 这里指挥拦截从网关发过来的请求

OpenFeign

image-20240712215210702

  • 就是微服务之间,互相需要调用。这个调用不走网关,因此需要再写一个类似拦截器的东西保存用户id

总结 微服务登录体系下三种拦截器

image-20240712220359885

特性网关拦截器 (GlobalFilter)微服务拦截器 (HandlerInterceptor)OpenFeign拦截器 (RequestInterceptor)
作用范围所有进入网关的请求微服务内部的请求处理Feign 客户端发起的 HTTP 请求
典型用途鉴权、日志记录、流量控制、请求预处理认证与授权、日志记录、数据验证修改请求、添加认证信息、日志记录
实现接口GlobalFilterHandlerInterceptorRequestInterceptor
触发时机请求进入网关时请求到达控制器之前和之后Feign 客户端发起请求前
依赖框架Spring Cloud GatewaySpring MVCOpenFeign
配置复杂度中等
适用场景全局拦截、网关层面的统一处理各微服务内部的请求预处理和后处理Feign 调用时需要统一处理请求信息+
  • Feign 客户端是用来发送请求的

配置共享

添加配置

第一步

image-20240712222358307

第二步

image-20240712222115188

拉取配置

image-20240712222735936

  • nacos会先运行,但会面对加载失败问题,因为nacos的配置还没加载进来

image-20240712222920291

  • 使用bootstrap来解决问题,解决了先运行的时候配置没有加载的问题

image-20240712223027565

在这里插入图片描述

  • 添加一个bootstrap和修改原本配置即可

配置热更新

image-20240712223931620

image-20240712223951349

第一步:添加使用的文件

image-20240712225032188

第二步:修改原本写死的文件

image-20240712225100740

第三步:在nacos中添加配置

image-20240712225158593

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

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

相关文章

DWG文件发布至IIS后无法下载和预览解决办法

问题描述 DWG文件发布至IIS后无法下载和预览 原因分析: iis里面需要添加扩展 解决方案: 在服务器端IS属性的HTTP头下的MIME内容中添加扩展名“.dwg” MIME类型填入application/acad

分布式锁理解

介绍分布式锁,我觉得从项目的背景入手把 在伙伴匹配系统中,我创建了一个定时任务,做为缓存预热的手段 这个具体原因在Redis-CSDN博客 接下来切入正题: 想象每个服务器都有一个定时任务,都要对数据库或者缓存进行操…

C语言作业5(学生管理系统C语言)

成学生管理系统 1> 使用菜单完成 2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入 3> 查看学生信息:输出所有学生姓名以及对应的分数 4> 求出学习最好的学生信息:求最大值 5> 按姓名将所有学…

Hyper-V 性能监控工具

虚拟化是任何组织网络管理战略不可或缺的一部分,对于帮助提高网络效率和资源可用性至关重要。采用虚拟基础架构具有多种好处,例如最大限度地减少停机时间、降低运营成本和提高生产力。 在所有虚拟服务器中,Microsoft Hyper-V因其多功能性和可…

亚马逊测评如何实现不同账户拥有独立运行环境,提高成功率

测评之所以被认为是最快速有效的推广方式,是因为它能够迅速影响多个关键因素。通过测评,您能够快速提升关键词的转化率,从而获得更好的搜索排名。优质的评价有助于增加产品的权重和转化率,进一步提升排名。同时,增加的…

在Windows环境下安装pycharm

Python环境搭建 第一步下载安装python 等待安装完成 验证python是否安装成功 Python开发工具安装部署 JetBrains: Essential tools for software developers and teams PyCharm: the Python IDE for data science and web development 下载社区版本的PyCharm 双击打开下载好的…

花几千上万学习Java,真没必要!(一)

1、主流的操作系统: 目前主流的PC端操作系统包括Windows、Mac OS和Linux。其中Windows是由微软公司开发的操作系统,Mac OS是由苹果公司开发的操作系统,而Linux则是开放源代码的操作系统,它有很多的发行版:比如&#xf…

PostgreSQL(二十二)缓冲区管理器

目录 一、缓冲区概述 1、缓冲区结构 2、buffer_tag结构 3、Backend进程读取操作 4、写脏块 二、缓冲区管理器结构 1、第一层:Buffer Table layer(缓冲区表层) 2、第二层:Buffer Descriptor Layer(缓冲区描述层…

Vue2-动画

1.transition过渡 | 用transition CSS做动画 Vue-transition文档:进入/离开 & 列表过渡 — Vue.js [用transition做CSS动画]Enter状态:JS Bin - Collaborative JavaScript Debugging Leave状态:JS Bin - Collaborative JavaScript Debug…

经验分享:征信查询多了会不会影响大数据综合评分?

很多人在申请贷款的时候,会有一个疑问,就是自己的征信没逾期,就是查询偏多一点,但能达到申贷要求,为什么还会被拒贷?其实就是大数据花了的原因,那征信查询多了会不会影响大数据综合评分呢?接下来本文就为…

【C++】继承最全解析(什么是继承?继承有什么用?)

目录 一、前言 二、什么是继承 ? 💢继承的概念💢 💢继承的定义💢 🥝定义格式 🍇继承权限 三、基类与派生类对象的赋值转换 四、继承的作用域 五、派生类中的默认成员函数 &#x1f4a2…

[leetcode]minimum-cost-to-reach-destination-in-time 规定时间内到达终点的最小费用

. - 力扣&#xff08;LeetCode&#xff09; class Solution { private:// 极大值static constexpr int INFTY INT_MAX / 2;public:int minCost(int maxTime, vector<vector<int>>& edges, vector<int>& passingFees) {int n passingFees.size();ve…

windows节点加入一个Linux集群组成的kubernetes集群

windows节点加入一个Linux集群组成的kubernetes集群 背景描述一.准备环境搭建二.Windows上docker安装三.配置Windows server2019方法一&#xff1a;自动配置安装方法二&#xff1a;手动配置安装失败处理过程 四.Windows的node加入Linux的kubernetes集群五.配置Linux的master 背…

在linux中查找 / 目录下的以.jar结尾的文件(find / -name *.jar)

文章目录 1、查找 / 目录下的以.jar结尾的文件 1、查找 / 目录下的以.jar结尾的文件 [rootiZuf6332h890vozldoxcprZ ~]# find / -name *.jar /etc/java/java-1.8.0-openjdk/java-1.8.0-openjdk-1.8.0.342.b07-1.el9_0.x86_64/lib/security/policy/limited/US_export_policy.ja…

初学SpringMVC之过滤器解决乱码

写个 login.jsp 页面 提交的 method 一般为 post&#xff08;写 get 不安全&#xff0c;地址栏上会显示&#xff09; action 表示提交后跳转的地址 &#xff08;不直接写控制器里的路径是因为配置 Tomcat 时设置了前缀路径&#xff0c;默认走 http://localhost:8080&#xf…

Linux ---gcc

c语言的链接类型&#xff1a; 动态链接&#xff1a; ll /lib64/libc-2.17.so 静态链接&#xff1a; ll /lib64/libc.a glibc-static安装-CSDN博客https://blog.csdn.net/itas109/article/details/104226783在Linux中下载c语言的静态库。 gcc test.c -o test.s -static 以…

代码随想录二刷7.22|977.有序数组的平方

暴力解法&#xff1a; ——如果想暴力解决这个问题的话&#xff0c;可以像题目那样&#xff0c;先将每一个元素平方&#xff0c;然后再排序 双指针&#xff1a; ——从题目中找到的信息&#xff1a;这是一个非递减顺序的整数数组&#xff0c;从例子中&#xff0c;可以容易看…

搭建NEMU与QEMU的DiffTest环境(Socket方式)

搭建NEMU与QEMU的DiffTest环境&#xff08;Socket方式&#xff09; 1 简述2 编译NEMU2.1 配置2.2 修改NEMU/scripts/build.mk2.3 修改isa_difftest_checkregs函数2.4 修改isa_pmp_check_permission函数2.5 编译 3 编译qemu-socket-difftest3.1 修改NEMU/scripts/isa.mk3.2 修改…

数据结构之单链表在不带标准头的情况下C,C#,C++分别怎么实现?

文章目录 单链表的概念单链表的操作单链表不带标准头结点示例C语言实现C#实现C实现 数据结构是计算机科学中非常重要的一部分&#xff0c;它帮助我们理解和操作数据。单链表是数据结构中的一种基本类型&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据域和指向列表…

强化学习编程实践-4-基于蒙特卡洛的方法

第3章给出了学习算法的基本思路&#xff1a;策略评估和策略改善。其中策略评估用到了以下的公式&#xff08;4.1&#xff09;&#xff1a; 策略改善则用了最简单的贪婪策略&#xff08;4.2&#xff09;&#xff1a; 为什么要用蒙特卡洛算法&#xff1f;先看公式4.1和4.2&#x…