Spring Cloud由入门到精通

文章目录

  • 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.分布式架构

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电脑缺失libcurl.dll怎么解决?详解电脑libcurl.dll文件丢失问题

一、libcurl.dll文件丢失的原因 libcurl.dll是一个用于处理URL传输的库文件,广泛应用于各种基于网络的应用程序。当这个文件丢失时,可能会导致相关应用程序无法正常运行。以下是libcurl.dll文件丢失的一些常见原因: 软件安装或卸载不完整&a…

XIAO Esp32S3 播放网络Mp3

本文旨在使用XIAO Esp32S3 播放网络Mp3 所需硬件 max98357 接线 Xiao Esp32 S3Max983574LRC5BCLK 6DIN5VVinGNDGND代码: #include "Arduino.h" #include "WiFiMulti.h" #include "Audio.h"// Digital I/O used #def

自动驾驶新纪元:城区NOA功能如何成为智能驾驶技术的分水岭

目录 一、NOA 的定义 二、NOA 的主要特点 导航集成 场景覆盖 智能决策 高级感知能力 驾驶员参与 三、NOA 的优势 四、NOA的衡量指标 定性评价指标 安全性评价指标定义 可靠性评价指标定义 舒适性评价指标定义 通行效率评价指标 定量评价指标 五、代表厂商的实测…

直观解读 JuiceFS 的数据和元数据设计(一)

大家读完觉得有意义和帮助记得关注和点赞!!! 1 JuiceFS 高层架构与组件2 搭建极简 JuiceFS 集群 2.1 搭建元数据集群2.2 搭建对象存储(MinIO) 2.2.1 启动 MinIO server2.2.2 创建 bucket2.3 下载 juicefs 客户端2.4 创…

如何用jmeter工具进行性能测试

前言 今天我们来说说jmeter如何进行性能测试,我们都知道jmeter工具除了可以进行接口功能测试外,还可以进行性能测试。当项目趋于稳定,根据性能需求就可以着手准备性能测试了,今天就说一说jmeter如何进行性能测试,jmet…

《云原生安全攻防》-- K8s安全配置:CIS安全基准与kube-bench工具

在本节课程中,我们来了解一下K8s集群的安全配置,通过对CIS安全基准和kube-bench工具的介绍,可以快速发现K8s集群中不符合最佳实践的配置项,及时进行修复,从而来提高集群的安全性。 在这个课程中,我们将学习…

Web安全 - “Referrer Policy“ Security 头值不安全

文章目录 概述原因分析风险说明Referrer-Policy 头配置选项1. 不安全的策略no-referrer-when-downgradeunsafe-url 2. 安全的策略no-referreroriginorigin-when-cross-originsame-originstrict-originstrict-origin-when-cross-origin 推荐配置Nginx 配置示例 在 Nginx 中配置 …

《计算机组成及汇编语言原理》阅读笔记:p133-p159

《计算机组成及汇编语言原理》学习第 11 天,p133-p159 总结,总计 27 页。 一、技术总结 1.segment (1)定义 Broadly speaking, a contiguous section of memory. More specifically, a section of memory referenced by one of the segment register…

QT-----------GUI程序设计基础

项目配置文件 .pro文件:这是QT项目的核心配置文件,用于指定项目的名称、版本、源文件、头文件、库文件等信息。例如: QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your comp…

爆改RagFlow

爆改RagFlow 一、Rag理论概述二、Ragflow解析参数说明三、♥ RagFlow源码解析核心代码流程梳理1、OCR识别2、版面分析3、parser功能3.1 PdfParser3.1.1 首先,初始化3.1.2 **pdf转图片** [来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析](h…

实际部署Dify可能遇到的问题:忘记密码、开启HTTPS、知识库文档上传的大小限制和数量限制

背景 前面我们以 docker compose 容器化的方式本地部署了 Dify 社区版,并快速体验了其聊天助手、工作量编排以及智能体(Agent)功能。不过后续实际生产环境使用时遇到了忘记密码、如何开启SSL以支持HTTPS、如何突破知识库文档上传的大小限制和…

Ubuntu安装Apache Airflow详细指南

本文我们介绍如何在Ubuntu上安装Apache Airflow。Apache Airflow旨在通过编程方式编写、调度和监控工作流。随着数据编排在现代数据工程中变得越来越重要,掌握Apache Airflow等工具可以显著提高您的生产力和效率。 学习Apache Airflow的首要任务是安装单机版本进行测…

Learning Multi-Scale Photo Exposure Correction

Abstract 用错误的曝光捕捉照片仍然是相机成像的主要错误来源。曝光问题可分为以下两类:(i)曝光过度,即相机曝光时间过长,导致图像区域明亮和褪色;(ii)曝光不足,即曝光时间过短,导致图像区域变暗。曝光不足和曝光过度都会大大降低…

【python】matplotlib(moon cake)

文章目录 1、Style12、Style23、Style34、Style45、Style56、Style67、Style78、参考的库函数matplotlib.patches.Arcmatplotlib.patches.Wedge 9、参考 1、Style1 """ author: tyran """from numpy import sin, cos, pi import matplotlib.pyp…

node.js卸载并重新安装(超详细图文步骤)

卸载node.js 重新安装nodejs 一、卸载 1、首先进入控制面板卸载程序 2、卸载后 到文件夹中进行进一步的删除 删除上述的几个文件夹 每个人可能不一样,总之是找到自己的nodejs安装路径,下面是我的 ①删除C:UsersAdminAppDataRoaming路径下的npm相关文件…

每天40分玩转Django:Django表单集

Django表单集 一、知识要点概览表 类别知识点掌握程度要求基础概念FormSet、ModelFormSet深入理解内联表单集InlineFormSet、BaseInlineFormSet熟练应用表单集验证clean方法、验证规则熟练应用自定义配置extra、max_num、can_delete理解应用动态管理JavaScript动态添加/删除表…

抽奖2(信奥)

【问题描述】 公司举办年会,为了活跃气氛,设置了摇奖环节。参加聚会的每位员工都有一张带有号码的抽奖券。现在,主持人从小到依次公布了n个不同的获奖号码,小谢看着自己抽奖券上的号码win,无比紧张。请编写一个程序&am…

JWT包中的源码分析【Golang】

前言 最近在学web编程的途中,经过学长提醒,在进行登陆(Login)操作之后,识别是否登陆的标识应该要放入authorization中,正好最近也在学鉴权,就顺便来看看源码了。 正文 1. 代码示例 在进行分…

Airbnb/Booking 系统设计(high level architecture)

原文地址 CodeKarle: Airbnb System Design | Booking.com System Design B站搜 “Airbnb System Design” 有视频版本 需求: 功能性需求 系统用户包括商家和客人。 Hotel - 商家(拥有hotel的人) onboarding - 商家可以入住系统。 update…

windows系统安装完Anaconda之后怎么激活自己的虚拟环境并打开jupyter

1.在win主菜单中找到Anaconda安装文件夹并打开终端 文件夹内有所有安装后的Anaconda的应用软件和终端窗口启动窗口 点击Anaconda Prompt(Anaconda)就会打开类似cmd的命令终端窗口,默认打开的路径是用户名下的路径 2.激活虚拟环境 使用命令…