Spring Cloud由入门到精通

news2025/4/7 20:40:46

文章目录

  • 1.初识微服务
    • 1.1. 单体架构
    • 1.2.分布式架构
    • 1.3.微服务
    • 1.4 微服务技术比对
    • 1.5.Spring Cloud
    • 1.6. 总结
  • 2.服务拆分和远程调用
    • 2.1.服务拆分原则
    • 2.2.服务拆分示例
      • 2.2.1.项目工程结构设计
      • 2.2.2.创建Maven项目工程
    • 2.3.实现远程调用案例
      • 2.3.1.案例需求:
      • 2.3.2. 注册 Rest Template
      • 2.3.3.实现远程调用
      • 2.3.4 idea启动多模块服务配置
    • 2.4.提供者与消费者
  • 3.Eureka注册中心
    • 3.1.Eureka的结构和作用
    • 3.2. 搭建 eureka-server
      • 3.2.1.创建eureka-server服务
      • 3.2.2. 引入 eureka 依赖
      • 3.2.3. 编写启动类
      • 3.2.4.编写配置文件
      • 3.2.5. 启动服务
    • 3.3.服务注册
      • 1 )引入依赖
      • 2)配置文件
      • 3 )启动多个 user-service 实例
    • 3.4.服务发现
      • 1 )引入依赖
      • 2)配置文件
      • 3)服务拉取和负载均衡
  • 4.Ribbon 负载均衡
    • 4.1.Ribbon 实现负载均衡
    • 4.2.自定义负载均衡策略
    • 4.3. 饥饿加载
  • 5.Nacos注册中心
    • 5.1. 认识Nacos
    • 5.2、安装 Nacos
      • 1、Windows 安装
        • 1.1、下载安装包
        • 1.2 解压
        • 1.3.端口配置
        • 1.4.启动
        • 1.5 .访问
      • 2、Linux 安装
        • 2.1.安装JDK
        • 2.2. 上传安装包
        • 2.3.解压
        • 2.4.端口配置
        • 2.5.启动
      • 3. Nacos 的依赖
    • 5.3、服务注册到Nacos
      • 1 )引入依赖
      • 2)配置nacos地址
      • 3 )重启
    • 5.4、服务分级存储模型
      • 5.3.1. 给 user-service 配置集群
      • 5.3.2. 同集群优先的负载均衡
    • 5.5、 权重配置
    • 5.6、环境隔离
      • 1)创建namespace
      • 2)给微服务配置namespace
    • 5.7、Nacos 与 Eureka 的区别
  • 6.Nacos配置管理
    • 6.1.统一配置管理
    • 1)在nacos中添加配置文件
    • 2)从微服务拉取配置
    • 6.2. 配置热更新
      • 1)方式一
      • 2)方式二
  • 7.Feign远程调用
    • 7.1.Feign 替代 Rest Template
      • 1 )引入依赖
      • 2)添加注解
      • 3 )编写 Feign 的客户端
      • 4)改造代码
      • 5)使用步骤总结
      • 6)Feign的功能
        • 6.1 远程调用
        • 6.2 实现负载均衡
    • 7.2.自定义Feign的日志配置
      • 7.2.1.配置文件方式
      • 7.2.2.Java代码方式
    • 7.3.Feign使用优化
      • 1 )引入依赖
      • 2)配置连接池
    • 7.4.Feign的最佳实践
      • 7.4.1.抽取方式
      • 7.4.2.实现基于抽取的最佳实践
        • 1 )抽取 Feign Client
        • 2)在order-service中使用feign-api
        • 3) 引入feign-api的依赖
        • 3 )重启测试
        • 4)解决扫描包问题
  • 8.Gateway服务网关
    • 8.1.为什么需要网关
    • 8.2.gateway快速入门
      • 1)创建gateway服务,引入依赖
      • 2 )编写启动类
      • 3 )编写基础配置和路由规则
      • 4 )重启测试
      • 5)网关路由的流程图
    • 8.3. 过滤器工厂
      • 8.3.1. 路由过滤器的种类
      • 8.3.2.请求头过滤器
      • 8.3.3.默认过滤器
      • 8.3.4. 总结
  • 9.Gateway网关综合案例(全局过滤器)
    • 9.1 实现登录
      • 9.1.1 导入依赖
      • 9.1.2 引入Jwt工具类
      • 9.1.3 添加登录业务
    • 9.2 实现是否登录校验
      • 9.2.1 网关配置添加忽略路径数组
      • 9.2.2 创建AuthProperties类
      • 9.2.3 自定义网关登录校验过滤器(全局过滤器)
      • 9.2.4 过滤器执行顺序
      • 9.2.5 测试登录校验
      • 9.2.6 WebFlux 和 Spring MVC 的主要区别
    • 9.3 网关传递登录用户
      • 9.3.1 网关中添加传递用户信息代码
      • 9.3.2 在通用模块添加工具类
      • 9.3.3 在通用模块添加拦截器
      • 9.3.4 配置拦截器
      • 9.3.5 配置 spring.factories
      • 9.3.6 测试登录用户信息传递
      • 9.3.7 优化代码
    • 9.4 远程调用接口OpenFeign传递用户信息
      • 9.4.1 添加拦截器
      • 9.4.2 测试OpenFeign传递用户信息
  • 10.前端请求Nginx反向代理Gateway集群
    • 10.1.解决跨域问题
    • 10.2 前端页面配置
    • 10.3 nginx.conf 配置
    • 10.4 测试使用nginx反向代理到网关
  • 11.分布式事务
    • 1.分布式事务问题
      • 1.1.本地事务
      • 1.2.分布式事务
      • 1.3.演示分布式事务问题
    • 2.理论基础
      • 2.1.CAP定理
        • 2.1.1. 一致性
        • 2.1.2. 可用性
        • 2.1.3. 分区容错
        • 2.1.4. 矛盾
      • 2.2.BASE理论
      • 2.3.解决分布式事务的思路
    • 3.初识Seata
      • 3.1.Seata的架构
      • 3.2.部署Seata
      • 3.3微服务集成seata
    • 4. 动手实践
      • 4.1.XA模式
        • 4.1.1.两阶段提交
        • 4.1.2.Seata的XA模型
        • 4.1.3.优缺点
        • 4.1.4.实现XA模式
      • 4.2.TA模式
        • 4.2.1.Seata的AT模型
        • 4.2.2.流程梳理
        • 4.2.3.AT与XA的区别
        • 4.2.4.脏写问题
        • 4.2.5.优缺点
        • 4.2.6.实现AT模式
      • 4.3.ACC模式
        • 4.3.1.流程分析
        • 4.3.2.Seata的TCC模型
        • 4.3.3.优缺点
        • 4.3.4.事务悬挂和空回滚
          • **1. 空回滚**
          • **2. 业务悬挂**
        • 4.3.5.实现TCC模式
          • 1.思路分析
          • 2. 声明TCC接口
          • 3.编写实现类
      • 4.4.SAGA模式
        • 4.4.1.原理
        • 4.4.2.优缺点
      • 4.5.四种模式对比
  • 12.微服务保护
    • 1.初识Sentinel
      • 1.1.雪崩问题及解决方案
        • 1.1.1.雪崩问题
        • 1.1.2.超时处理
        • 1.1.3.仓壁模式
        • 1.1.4.熔断降级
        • 1.1.5.流量控制
        • 1.1.6.总结
      • 1.2.服务保护技术对比
      • 1.3.Sentinel 介绍和安装
        • 1.3.1. 初识 Sentinel
        • 1.3.2.安装Sentinel
      • 1.4.微服务整合Sentinel
    • 2.流量控制
      • 2.1.簇点链路
      • 2.1.快速入门
        • 2.1.1.示例
        • 2.1.2.练习:
      • 2.2.流控模式
        • 2.2.1.关联模式
        • 2.2.2.链路模式
          • 1) 添加查询商品方法
          • 2) 查询订单时,查询商品
          • 3) 新增订单,查询商品
          • 4) 给查询商品添加资源标记
          • 5) 添加流控规则
          • 6) Jmeter 测试
        • 2.2.3. 总结
      • 2.3.流控效果
        • 2.3.1.warm up
          • 1)配置流控规则
          • 2) Jmeter 测试
        • 2.3.2. 排队等待
          • 1) 添加流控规则
          • 2) Jmeter 测试
        • 2.3.3.总结
      • 2.4.热点参数限流
        • 2.4.1.全局参数限流
        • 2.4.2.热点参数限流
        • 2.4.4.案例
          • 1) 标记资源
          • 2) 热点参数限流规则
          • 3) Jmeter测试
    • 3.隔离和降级
      • 3.1.Feignclient整合Sentine
        • 3.1.1.修改配置,开启sentinel功能
        • 3.1.2.编写失败降级逻辑(兜底类)
        • 3.1.3. 总结
      • 3.2.线程隔离(舱壁模式)
        • 3.2.1.线程隔离的实现方式
        • 3.2.2.Sentinel 的线程隔离
          • 1) 配置隔离规则
          • 2) Jmeter测试
        • 3.2.3.总结
      • 3.3.熔断降级
        • 3.3.1.慢调用
          • 1) 设置慢调用
          • 2) 设置熔断规则
          • 3) 测试
        • 3.3.2.异常比例、异常数
          • 1)设置异常请求
          • 2) 设置熔断规则
          • 3) 测试
    • 4.授权规则
      • 4.1.授权规则
        • 4.1.1.基本规则
        • 4.1.2.如何获取origin
        • 4.1.3.给网关添加请求头
        • 4.1.4.配置授权规则
      • 4.2.自定义异常结果
        • 4.2.1.异常类型
        • 4.2.2.自定义异常处理
    • 5. 规则持久化
      • 5.1.规则管理模式
        • 5.1.1.puIl模式
        • 5.1.2.push模式
      • 5.2.实现push模式

1.初识微服务

随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?

1.1. 单体架构

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

在这里插入图片描述

单体架构的优缺点如下:

优点

  • 架构简单
  • 部署成本低

缺点

  • 耦合度高(维护困难、升级困难)

1.2.分布式架构

分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。

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

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

相关文章

【RK3588 Linux 5.x 内核编程】-内核I2C子系统介绍

内核I2C子系统介绍 文章目录 内核I2C子系统介绍1、内核中的I2C子系统2、内核中的I2C驱动2.1 获取I2C适合器2.2 创建i2c_board_info与设备2.3 创建设备ID和I2C驱动2.4 数据传输2.4.1 发送数据2.4.2 读取数据3、I2C总线如何工作I2C 是一种用于双线接口的串行协议,用于连接低速设…

GPIO相关寄存器,点灯

目录 一.输入模式 1.浮空输入 2.上拉输入 3.下拉输入 4.模拟输入 二.输出模式 1.推挽输出 2.开漏输出 三.寄存器 1.寄存器的作用 2.功能与类型 3.控制某一引脚输出电压来点灯所需要控制的寄存器 1.打开对应时钟开关 2.端口模式寄存器 ---输出模式 3.输出类型寄存…

【基础篇】三、MySQL表结构的操作

文章目录 Ⅰ. 创建表1、语法2、创建表样例3、创建和其它表一样结构的表 Ⅱ. 查看表结构1、查看数据库中的表2、查看指定表的属性3、获取表的创建语句 Ⅲ. 删除表Ⅳ. 修改表结构1、向表中插入新的字段2、删除表中的字段3、修改表名4、修改字段属性 Ⅰ. 创建表 1、语法 create …

Ethernet 系列(12)-- 基础学习::SOME/IP

目录 1. SOME/IP简介: 1.1 什么是SOME/IP: 1.2 什么时候使用SOME/IP: 2. SOME/IP的特点: 2.1 序列化: 2.2 远程过程调用(RPC): 2.3 服务发现: 2.4 发布/订阅: 2.5 UDP消息…

前端小案例——轮播图(HTML+CSS+JS, 附源码)

一、前言 实现功能: 显示多张图片,每张图片占据轮播图容器的一部分空间。实现向左和向右的切换按钮,可以点击按钮切换到上一张或下一张图片。在底部显示小圆点,表示当前显示的图片,点击小圆点可以跳转到对应的图片。…

vue封装弹窗元素拖动指令

项目开发过程中我们通常会遇到需要到一些弹窗鼠标可以随意拖动位置去放置,vue里面直接通过封装对应的指令即可,于是封装了一个出来,希望可以用到。 Vue.directive(draggable-dom, draggableDom); 组件节点添加对应指令就可以 v-draggable-…

Supermap iClient Webgl 粒子特效案例-消防场景

作者:Lzzzz 前言 WebGL 粒子特效的应用场景非常广泛,几乎可以在任何需要丰富视觉效果或动态表现的地方看到其身影。通过灵活运用颗粒系统,开发者可以创造出引人入胜的用户体验和视觉表现。 一、效果展示 二、实现步骤 1,构建…

关于无线AP信道调整的优化(锐捷)

目录 一、信道优化的基本原则二、2.4G频段信道优化三、5G频段信道优化四、信道优化代码具体示例五、其他优化措施 一、信道优化的基本原则 信道优化旨在减少信道间的干扰,提高网络覆盖范围和信号质量。基本原则包括: 1. 选择合适的信道:根据…

Rocky9网络基本连接配置

1.修改主机名称 终端模式下: hostnamectl set-hostname server2执行过程中可能要输入密码 hostnamectl命令查看主机信息,可以查看到主机信息已经发生修改,之后reboot重启主机。 2.关闭防火墙 systemctl stop firewalld systemctl disable fi…

一款汽车连接器(HSD(4+2))信号完整性仿真

下面是一款汽车连接器HSD(42) 的3D外形: 其爆炸图如下: 下面是Rosenboger同款产品的2D图: 其信号完整性参数如下: 下面介绍一下如何给上面的3D模型做信号完整性仿真。 在介绍仿真前先介绍一下上面的一些参数:上面的参数…

动手做计算机网络仿真实验入门学习

打开软件 work1 添加串行接口模块,先关电源,添加之后再开电源 自动选择连接 所有传输介质 自动连接 串行线 绿色是通的,红色是不通的。 显示接口。se是serial串行的简写。 Fa是fast ethernet的简写。 为计算机配置ip地址: 为服…

在React中引入tailwind css(图文详解)

Tailwind CSS 是一个功能强大的 CSS 框架,旨在使开发者能够以更高效、灵活的方式创建现代、响应式的网页。与传统的 CSS 框架(如 Bootstrap 或 Foundation)不同,Tailwind 采取了“实用类”(Utility-First)的…

考公怎么安排学习顺序?

考公的学习顺序安排至关重要,合理规划能让备考事半功倍。以下是结合 “稳啦” 小程序的推荐学习顺序。 1. 初步了解考情(使用稳啦的各省考情模块) 在备考初期,首先要做的就是全面了解公务员考试的基本情况。通过稳啦的各省考情模…

C 语言:printf 函数详解

目录 引言 一、printf 函数的基本介绍 二、printf 的格式化输出 三、printf 的转义序列 四、printf 的返回值 五、printf 的高级用法 六、printf 的注意事项 七、总结 引言 在 C 语言的编程世界里,printf函数无疑是一个极为强大且常用的工具。它不仅能够输出…

计算机网络-L2TP VPN基础实验配置

一、概述 上次大概了解了L2TP的基本原理和使用场景,今天来模拟一个小实验,使用Ensp的网卡桥接到本地电脑试下L2TP拨号,今天主要使用标准的L2TP,其实在这个基础上可以加上IPSec进行加密,提高安全性。 网络拓扑 拓扑说明…

Postman[7] 内置动态参数及自定义的动态参数

postman 内置动态参数和自定义的动态参数 1.内置动态参数 格式:{{$参数名}} 1.1时间戳 {{$timestamp}} //生成当前时间的时间戳 1.2随机整数 {{$randomint}} //生成0-1000之间的随机数 1.3GUID字符串 {{$guid}} //生成随机GUID字符串 2.自定义动态参数 格式…

uniapp-vue3(下)

关联链接:uniapp-vue3(上) 文章目录 七、咸虾米壁纸项目实战7.1.咸虾米壁纸项目概述7.2.项目初始化公共目录和设计稿尺寸测量工具7.3.banner海报swiper轮播器7.4.使用swiper的纵向轮播做公告区域7.5.每日推荐滑动scroll-view布局7.6.组件具名…

STM32中断详解

STM32中断详解 NVIC 中断系统中断向量表相关寄存器中断优先级中断配置 外部中断实验EXTI框图外部中断/事件线映射中断步骤初始化代码实现 定时器中断通用定时器相关功能标号1:时钟源标号 2:控制器标号 3:时基单元 代码实现 NVIC 中断系统 STM…

小程序中引入echarts(保姆级教程)

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…

Cypress测试框架详解:轻松实现端到端自动化测试

端到端自动化测试工具市场中,Cypress正以其易用性和强大功能,迅速成为开发者和测试人员的首选工具之一。无论是前端开发还是测试,Cypress都能在性能和效率上脱颖而出。 那么,Cypress具体能为端到端测试带来哪些便利?它…