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

你好,我是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.locationValue: "classpath:hmall.jks"Origin: class path resource [application.yaml] - 36:15Reason: 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.mzph.cn/news/870957.shtml

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

相关文章

如何检测社交媒体平台中的深度伪造

在过去的十年中,各类社交媒体平台——连接人们并让他们通过多媒体内容(如图像、视频、音频和文本)分享他们的想法和意见——也被用于操纵和改变公众意见。社交媒体上的自动程序,如机器人,可以像合法的用户一样控制虚假账户,通过点赞、分享和发布内容来传播虚假信息。随着…

HDFS Decommission节点的长尾分析和问题解决

文章目录 前言Decommission过慢的分析过程NameNode页面并不显示Decommission的进度和剩余块数量增加每次调度的块数量增加Stream Limit以避免节点被Skip节点被Skip时应该在DEBUG时打印原因在大量节点被Skip的时候加快有效调度其他可能改进 基本流程解析用户通过节点刷新触发Dec…

java Web学习笔记(一)

文章目录 1. 前置学习知识2. Tomcat介绍Tomcat目录文件介绍URL的组成部分和项目资源的对应关系idea配置部署tomcat并成功运行一个app-web项目 3. HTTP协议介绍(很重要)HTTP协议和HTTPS的区别HTTP协议的发展理解HTTP协议 报文格式报文响应的状态码 4. Ser…

java word转pdf、word中关键字位置插入图片 工具类

java word转pdf、word中关键字位置插入图片 工具类 1.pom依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version></dependency><dependency><groupId>org.apa…

重读AI金典算法模型-GPT系列

2023年对于AI来说&#xff0c;可以算是一个里程碑式的年份&#xff0c;随着OpenAI的chatGPT的大火&#xff0c;遍地的生成式AI应用应运而生。在这些上层应用大放异彩的时候&#xff0c;我们需要了解一些底层的算法模型&#xff0c;并从中窥探出为什么时代选择了OpenAI的chatGPT…

以设备为核心的状态自动采集、人工运维和预测性维护为一体的智能管理系统

中服云设备全生命周期管理系统充分利用物联网、人工智能、机器学习、大数据等新一代技术&#xff0c;实现对企业生产设备从采购、安装、调试、使用、维护、维修、改造、更新直到报废全生命周期的智能化、数字化、可视化的实时管控&#xff0c;支持设备运行状态的自动采集和人工…

js 中 new Worker 报错 Failed to construct ‘Worker‘

new Worker("worker.js");运行多线程 Web Worker 的时候报错 Uncaught DOMException: Failed to construct ‘Worker’ 原因是浏览器不允许通过本地文件访问使用Web Worker。 解决方法&#xff1a; 将项目部署到服务器上或者用Node起本地服务访问项目

Pandas数据持久化秘籍:to_pickle()函数的高效应用与实战技巧

Pandas数据持久化秘籍&#xff1a;to_pickle()函数的高效应用与实战技巧 引言 在数据分析和机器学习的项目中&#xff0c;数据的持久化存储和快速加载是一个重要环节。Pandas作为Python中广泛使用的数据处理库&#xff0c;提供了强大的数据结构和操作功能。其中&#xff0c;t…

活动回顾|矩阵起源2024WAIC圆满落幕

2024年7月4日至7日&#xff0c;全球瞩目的2024世界人工智能大会暨人工智能全球治理高级别会议&#xff08;WAIC 2024&#xff09;在上海盛大举行&#xff0c;其中Future Tech 100未来之星创新孵化展再次成为大会焦点&#xff0c;它不仅是一场科技成果的展示&#xff0c;更是全球…

网络通信基本知识

网络通信 什么是网络通信&#xff1f; 通信网络是指将各个孤立的设备进行物理连接&#xff0c;实现人与人&#xff0c;人与计算机&#xff0c;计算机与计算机之间进行信息交换的链路&#xff0c;从而达到资源共享和通信的目的。 什么是网络协议&#xff1f; 网络协议是计算机…

SPring Boot整合第三方框架

springboot整合第三方框架 1. 整合mybatis 1.1引入依赖——pom.xml配置文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instanc…

安装isce2

今天再次尝试安装&#xff0c;之前试过2次都是卡在同一步&#xff0c;今天换成了用mamba conda就没有再报错了 全程参考云军老师的step by step教程&#xff0c;安装成功 GitHub - yunjunz/conda-envs: conda environment setup on Linux / macOS for InSAR data processing …

【进阶】利用python内置模块自动化发送邮件及邮件附件

目录 自动化发送邮件 流程&#xff1a; 步骤&#xff1a; 【重点】 【MIMEText--发送文本类型的邮件】 【MIMEImage-发送附件为图片的邮件】 【MIMEBase--发送附件为html报告的邮件】 自动化发送邮件 以qq邮箱为例&#xff0c;提前打开POP3/IMAP/SMTP/Exchange/CardDAV 服…

Linux vim编辑器常用知识

Vim 是 Linux 中一个强大的文本编辑器&#xff0c;以其高效的键盘操作和丰富的功能而闻名 Vim 的基本概念 模式&#xff1a;Vim 有三种主要模式&#xff1a; 普通模式 (Normal Mode)&#xff1a;默认模式&#xff0c;用于浏览和编辑文本。插入模式 (Insert Mode)&#xff1a;用…

【Redis】复制(Replica)

文章目录 一、复制是什么&#xff1f;二、 基本命令三、 配置&#xff08;分为配置文件和命令配置&#xff09;3.1 配置文件3.2 命令配置3.3 嵌套连接3.4 关闭从属关系 四、 复制原理五、 缺点 以下是本篇文章正文内容 一、复制是什么&#xff1f; 主从复制 master&#xff…

GloVe: Global Vectors for Word Representation论文笔记解读

基本信息 作者Jeffrey Penningtondoi10.3115/v1/D14-1162发表时间2014期刊EMNLP网址https://aclanthology.org/D14-1162.pdf 研究背景 1. What’s known 既往研究已证实 全局矩阵分解方法&#xff1a;LSA&#xff0c;考虑整个语料库词频的统计信息得到共现矩阵&#xff0c;通…

根据视图矩阵, 恢复相机的世界空间的位置

根据视图矩阵, 恢复相机的世界空间的位置 一、方法1 glsl 实现: // 从本地局部坐标系(相机空间) 到 世界空间的旋转变换 mat3 getLocal2WorldRotation() {mat3 world2localRotation mat3(viewMatrix[0].xyz,viewMatrix[1].xyz,viewMatrix[2].xyz);return inverse(world2loca…

C++ 项目实践课设 图书馆管理系统

一、项目介绍 &#xff08;1&#xff09;图书管理 (a)添加图书&#xff1a;在系统中增加图书信息&#xff08;可自己设计图书的信息&#xff1a;如书号&#xff0c;书名&#xff0c;出版社&#xff0c;等等&#xff09; (b)查询图书 (c)编辑图书 (d)删除图书 &#xff08;2&a…

十个必须知道的物流术语(一)

我们日常生活中的每一个包裹&#xff0c;都承载着物流人的辛勤与智慧。 以下物流领域中的专业术语&#xff0c;常常在企业的物流管理中发挥着关键作用。 关于物流的基本概念 01 物流成本 产品在实物运动过程中&#xff0c;如包装、搬运装卸、运输、储存、流通加工等各个活动…

汽车零配件行业看板管理系统应用

生产制造已经走向了精益生产&#xff0c;计算时效产出、物料周转时间等问题&#xff0c;成为每一个制造企业要面临的问题&#xff0c;工厂更需要加快自动化&#xff0c;信息化&#xff0c;数字化的布局和应用。 之前的文章多次讲解了企业MES管理系统&#xff0c;本篇文章就为大…