某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章
CSDN 2024-08-05 12:37:02 阅读 83
你好,我是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
文章目录
2024最新SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)Day 4我启动不了项目!!它一直滚动报错!!!项目报错java.util.concurrent.ExecutionException: com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception网关概述与粗浅使用网关路由的具体属性网关登录校验GlobalFilter如何找到NettyRoutingFilter?GatewayFilter过滤器携带参数
案例:登录校验报错Failed to bind properties under 'hm.jwt.location' to cn.hutool.core.io.resource.Resource:
网关传递用户OpenFeign总结 微服务登录体系下三种拦截器
配置共享添加配置第一步第二步
拉取配置
配置热更新第一步:添加使用的文件第二步:修改原本写死的文件第三步:在nacos中添加配置
我启动不了项目!!它一直滚动报错!!!项目报错java.util.concurrent.ExecutionException: com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
如图所示,你发现自己使用docker start mysql/nacos打开了mysql容器和nacos容器,也没有其他问题,但还是一直报错
这是因为nacos启动需要mysql中的数据库数据,所以你需要先启动mysql容器,然后启动nacos
而且mysql容器启动也需要时间,所以不能连着敲
具体情况可以打开 docker logs naocs进行查看
网关概述与粗浅使用
单体项目对用户账号、多模块业务进行一次认证就好了,而微服务项目将认证说不定都拆分成一个模块,因此需要一个网关,网关本身也是微服务中的一个模块
配置网关路由为重点
通过路由网关,实现了什么效果?
本来需要访问8081端口才能到数据,但有了网关后,访问8080也能得到8081模块的数据
网关路由的具体属性
stripPrefix用户帮助前后端的项目不同格式请求。这里添加请求头呀、移除请求头都有局部和全局之分,通过不同的属性来进行判断
网关登录校验
GlobalFilter
如何找到NettyRoutingFilter?
使用ctrl+左击这里
在这个包里面,找找就到了
GatewayFilter
关于工厂类,可以看我的博客 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
全局过滤器局部过滤器也是通过实现的Ordered接口数字大小来决定谁先执行的
过滤器携带参数
案例:登录校验
报错Failed to bind properties under ‘hm.jwt.location’ to cn.hutool.core.io.resource.Resource:
<code>***************************
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文件夹下的东西,再次导入一遍
网关传递用户
这里指挥拦截从网关发过来的请求
OpenFeign
就是微服务之间,互相需要调用。这个调用不走网关,因此需要再写一个类似拦截器的东西保存用户id
总结 微服务登录体系下三种拦截器
特性 | 网关拦截器 (GlobalFilter) | 微服务拦截器 (HandlerInterceptor) | OpenFeign拦截器 (RequestInterceptor) |
---|---|---|---|
作用范围 | 所有进入网关的请求 | 微服务内部的请求处理 | Feign 客户端发起的 HTTP 请求 |
典型用途 | 鉴权、日志记录、流量控制、请求预处理 | 认证与授权、日志记录、数据验证 | 修改请求、添加认证信息、日志记录 |
实现接口 | <code>GlobalFilter | HandlerInterceptor | RequestInterceptor |
触发时机 | 请求进入网关时 | 请求到达控制器之前和之后 | Feign 客户端发起请求前 |
依赖框架 | Spring Cloud Gateway | Spring MVC | OpenFeign |
配置复杂度 | 中等 | 低 | 低 |
适用场景 | 全局拦截、网关层面的统一处理 | 各微服务内部的请求预处理和后处理 | Feign 调用时需要统一处理请求信息+ |
Feign 客户端是用来发送请求的
配置共享
添加配置
第一步
第二步
拉取配置
nacos会先运行,但会面对加载失败问题,因为nacos的配置还没加载进来
使用bootstrap来解决问题,解决了先运行的时候配置没有加载的问题
添加一个bootstrap和修改原本配置即可
配置热更新
第一步:添加使用的文件
第二步:修改原本写死的文件
第三步:在nacos中添加配置
上一篇: ifcfg-DEVICE网络配置——BOOTPROTO参数指定在引导时获取网络信息的策略
下一篇: 【运维】使用 Docker Compose 快速启动项目全流程指南
本文标签
某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。