Springboot新手开发 Cloud篇

时间:2022-07-01 01:06:45

目录

  • 一、上一章Springboot新手开发 基本总结
  • 二、springcloud版本介绍
  • 三、注册中心 nacos
  • 四、服务调用 openfeign
  • 五、熔断器Netflix Hystrix
  • 六、整合geteway网关
  • 七、nacos配置中心
  • springboot配置文件的加载顺序

一、上一章Springboot新手开发 基本总结

Springboot新手开发 基本总结==》点此跳转


二、springcloud版本介绍

cloud和boot的版本对应关系

Springboot新手开发 Cloud篇

Springboot新手开发 Cloud篇

Springboot新手开发 Cloud篇

Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。 总体如下

  • 服务发现(注册中心)——Netflix Eureka (nacos)
  • 服务调用——Netflix feign
  • 熔断器——Netflix Hystrix、 (Sentinel )
  • 服务网关——Netflix Zuul、spring cloud gateway
  • 分布式配置中心——Spring Cloud Config (nacos)
  • 客服端负载均衡——Netflix Ribbon
  • 消息总线——Spring Cloud bus(nacos)

三、注册中心 nacos

安装过程

  • 下载nacos 然后解压 官网nacos官网
  • Springboot新手开发 Cloud篇

  • 启动nacos 并访问http://192.168.65.1:8848/nacos/index.html#/login 注意IP地址用戶名和密碼都是nacos
  • Springboot新手开发 Cloud篇

实现不同的微服务模块之间调用,把这些模块在注册中心进行注册注册之后,实现互相调用

注册服务

  • 1.引入依赖
<!--服务注册-->
		 <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
  • 2.在服务的配置文件中配置 配置nacos地址
#nacos服务地址
spring.cloud.nacos.discovery.server-addr=192.168.65.1:8848
  • 3.在服务的启动类上添加注解@EnableDiscoveryClient
  • Springboot新手开发 Cloud篇



四、服务调用 openfeign

前提条件 把互相调用的服务需要在注册中心注册

步骤

  • 一、引入依赖
<!--服务调用-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-openfeign</artifactId>
         </dependency>
  • 二、调用端的启动类添加注解@EnableFeignClients
  • 三、在调用端 创建包和接口
  • Springboot新手开发 Cloud篇

    Springboot新手开发 Cloud篇

  • 四、测试
  • Springboot新手开发 Cloud篇


五、熔断器Netflix Hystrix

Hystrix 供分布式系统使用,提供延迟和容错功能,隔离远程系统、访问和第三方程序库的访问点,防止级联失败,保证复杂的分布系统在面临不可避免的失败时,仍能有其弹性。

  • 一、添加依赖
<!--ribbon 负载均衡 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>

        <!--hystrix依赖,主要是用  @HystrixCommand -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
  • 二、在调用端配置文件中添加配置
#开启熔断机制
feign.hystrix.enabled=true
#设置超时时间 默认10秒
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000
  • 三、在创建interface后还要创建实现类(出错了需要实现的类容)
  • 四、在interface上添加注解和属性

六、整合geteway网关

  • 客户端和服务端之间的一面墙,可以起到很多作用:请求转发、负载均衡、权限控制、跨域(如果使用getway来跨域,就得删除模块那个跨域注解)等

映入依赖

<dependencies>
     
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!--服务调用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

  <!--gson-->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
    </dependencies>

写配置文件

server:
  port: 8222
spring:
  application:
    name: service-gateway
  cloud:
#    网关
    gateway:
      discovery:
        locator:
          enabled: true  #服务发现 默认是false
      routes:          #路由匹配规则
        - id: service-acl              #路由id 建议写服务名称
          predicates: Path=/*/acl/**   #断言  固定写法 Path=匹配规则    /**表示有多个值
          uri: lb://service-acl        #固定写法 lb://在nacos中注册的名字

        - id: service-edu
          predicates: Path=/eduservice/**
          uri: lb://service-edu

        - id: service-msm
          uri: lb://service-msm
          predicates: Path=/edumsm/**
#  服务注册
    nacos:
      discovery:
        server-addr: ************:8848

测试
用网关的端口号访问服务

Springboot新手开发 Cloud篇

七、nacos配置中心

当配置信息发生变动时,修改实时生效,无需要重新重启服务器,就能够自动感知相应的变化,并将新的变化统一发送到相应程序上,快速响应变化。比方说某个功能只是针对某个地区用户,还有某个功能只在大促的时段开放,使用配置中心后只需要相关人员在配置中心动态去调整参数,就基本上可以实时或准实时去调整相关对应的业务

springboot配置文件的加载顺序

Springboot新手开发 Cloud篇


Springboot新手开发 Cloud篇

引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

新建配置文件bootstrap.properties或者bootstrap.yml

#配置中心地址
spring.cloud.nacos.config.server-addr=这里写nacos的IP地址:端口号

#spring.profiles.active=dev

# 该配置影响统一配置中心中的dataId
spring.application.name=配置的名称Data Id

在nacos加上配置文件

Springboot新手开发 Cloud篇