• 尚硅谷-Spring Cloud


    Spring Cloud介绍

    1.Spring Cloud应该包含:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    京东微服务平台
    在这里插入图片描述
    阿里微服务平台
    在这里插入图片描述
    京东物流服务
    在这里插入图片描述
    Spring Cloud每个模块所用技术
    在这里插入图片描述
    Spring Boot是一种技术,Spring Cloud是分布式微服务架构的一篮子解决方案,有多种技术的落地
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    现在基本都是注解代替了xml文件

    2.父工程

    <groupId>com.atguigu.SpringCloud</groupId>
      <artifactId>ShangGuiGu-SpringCloud</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <packaging>pom</packaging>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    maven的聚合,继承,依赖,传递依赖
    父工程通过(用于父类管理 )标签进行子模块依赖版本的管理(子模块会继承父模块),通过继承关系,父模块统一管理所有子模块的依赖,子工程仍需要写入依赖,只是默认的版本号是父工程中定义的。父工程中没有src文件夹,
    #dependencyManagement和dependency的区别在这里插入图片描述
    在这里插入图片描述
    多个子项目都引用同一样的依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样想升级或切换到另一个版本时,只需在顶层父容器里更新,而不需要一个一个子项目的修改l;另外如果某个子项目需要另外的一个版本,只需声明version版本
    在这里插入图片描述
    在这里插入图片描述
    只是在父项目中声明了规范,子项目爱用不用,子项目真正的jar包引入需要子工程自己引入,只不过可以少
    省写版本号

    父工程创建完成执行mvn clean insall将父工程发布到仓库方便子工程继承

    MAVEN跳过单元测试

    在这里插入图片描述

    Rest微服务工程搭建

    在这里插入图片描述

    微服务模块顺序

    在这里插入图片描述
    凡是微服务,一定要有服务端口号和微服务名称
    **前后端分离之后,后端传递给前端的就应该是一个json字符串,所以后端需要有一个JSON封装体,基本是用泛型类 **
    在这里插入图片描述
    DAO层在interface上写@Reporitory注解,service层在实现类上写@Service注解

    热部署

    就是修改代码以后会自动帮我们重启项目,不用每次手动停止启动项目,使代码修改可以实时生效

    Adding devtools to your project

     <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Adding plugin to your pom.xml

    下段配置我们粘贴进聚合父类总工程的pom.xml里
    
    <build>
        <finalName>你自己的工程名字</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>
     
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    Enabling automatic build(开启自动编译)

    在这里插入图片描述

    Update the value of

    在这里插入图片描述
    在这里插入图片描述

    重启IDEA

    热部署在开发阶段开启,上生产之后必须关掉

    RestTemplate

    **RestTemplate提供了多种便捷访问远程Http服务的方法,
    是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集
    **
    官网地址
    https://docs.spring.io/spring-framework/docs/5.2.2.RELEASE/javadoc-api/org/springframework/web/client/RestTemplate.html
    使用
    使用restTemplate访问restful接口非常的简单粗暴无脑。
    (url, requestMap, ResponseBean.class)这三个参数分别代表
    REST请求地址、请求参数、HTTP响应转换被转换成的对象类型。

    使用的时候需要将resttemplate注入到SpringBoot容器里面
    浏览器默认访问的是80端口,如果后端项目是80端口,在访问地址里面就可以不用写端口
    在这里插入图片描述

    Eureka服务注册与发现

    Eureka基础知识

    1. 什么是服务治理
    Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理
    在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。
    2. 什么是服务注册
    在这里插入图片描述
    心跳链接:是让服务注册中心知道你这个服务是在的并且还能够提供服务

    Eureka组件

    在这里插入图片描述
    里面不需要写任何的业务逻辑类
    在这里插入图片描述
    集群注册原理:互相注册,相互守望,对外暴露出一个整体
    在这里插入图片描述
    负载均衡是在服务调用者这边设置

    保护机制

    在这里插入图片描述
    一句话:某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存,属于CAP里面的AP分支
    为什么会产生Eureka自我保护机制?
    为了防止EurekaClient可以正常运行,但是 与 EurekaServer网络不通情况下,EurekaServer不会立刻将EurekaClient服务剔除

    什么是自我保护模式?
    默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒)。但是当网络分区故障发生(延时、卡顿、拥挤)时,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。Eureka通过“自我保护模式”来解决这个问题——当EurekaServer节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。

    在这里插入图片描述
    在自我保护模式中,Eureka Server会保护服务注册表中的信息,不再注销任何服务实例。
    它的设计哲学就是宁可保留错误的服务注册信息,也不盲目注销任何可能健康的服务实例。一句话讲解:好死不如赖活着

  • 相关阅读:
    【概率论基础进阶】多维随机变量及其分布-二维均匀分布和二维正态分布
    【MYSQL】事务的4种隔离级别分别是什么?
    循环购:一种具有裂变能力的商业模式
    Cesium加载地图服务
    scipy.signal.csd的参数如何选择
    【HMS core】【FAQ】push kit、AR Engine、广告服务、扫描服务典型问题合集2
    屏幕分辨率:PC / 手机 屏幕常见分辨率,前端如何适配分辨率
    zookeeper重启,线上微服务全部掉线,怎么回事?
    网络安全(黑客)—自学
    stable diffusion如何解决gradio外链无法开启的问题
  • 原文地址:https://blog.csdn.net/wa2661391317/article/details/126166867