码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 黑马程序员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

    文章目录

    • 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容器,也没有其他问题,但还是一直报错

    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

  • 相关阅读:
    云计算HCIE 3.0 考点揭秘丨与云计算HCIE 2.0 考试解读
    skimage学习(2)——RGB转灰度、RGB 转 HSV、直方图匹配
    新的Ubuntu服务器上如何安装深度学习环境的docker
    关于cvxpy库使用过程中的一个warning
    C++模版进阶
    Rabbitmq入门与应用(二)-RabbitMQ工作模型
    线程(上篇):线程的创建
    SpringBoot连接redis
    传奇开服教程之传奇服务端中如何添加按钮教程以及详细方法
    对话祁隆《借我星光》作词人温暖:已获知和合国际收购信息
  • 原文地址:https://blog.csdn.net/qq_61654952/article/details/140390388
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号