SpringCloud(学习 Nacos) 二



前言

本文主要讲述微服务组件中的:注册中心配置中心


一、各组件关系与技术选择

微服务组件关系图

最终的技术搭配方案为:
SpringCloud Alibaba - Nacos:注册中心(服务发现/注册)
SpringCloud Alibaba - Nacos:配置中心(动态配置管理)
SpringCloud - Ribbon:负载均衡
SpringCloud - Feign:声明式 HTTP 客户端(调用远程服务)
SpringCloud Alibaba - Sentinel:服务容错(限流、降级、熔断)
SpringCloud - Gateway:API 网关(webflux 编程模式)
SpringCloud - Sleuth:调用链监控
SpringCloud Alibaba - Seata:原 Fescar,即分布式事务解决方案

阿里官方文档

中文文档

各版本对应关系

springcloud关系对应

其中不止springboot与springcloud版本对应关系,还有其它与springboot的版本对应关系

在引入组件前引入依赖管理,可以在后续引入组件依赖时忽略版本号,这些依赖都引入公共模块common中。

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.0.4.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

二、Nacos

1.Nacos作为注册中心

引入相关依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

  • 下载Nacos注册中心 Nacos Server
  • 为每个服务配置nacos服务注册配置

server.port=8081 spring.application.name=nacos-provider spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 management.endpoints.web.exposure.include=*

  • 启动项添加注解@EnableDiscoveryClient开启服务注册/发现
@SpringBootApplication
@EnableDiscoveryClient
public class GuliCouponApplication {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(GuliCouponApplication.class, args);
    }
}
  • 启动服务进行服务注册发现
    在这里插入图片描述

在这里插入图片描述


如果使用win启动nacos则需要更改win启动脚本文件使用单机启动
在这里插入图片描述
在脚本文件末尾加入pause endlocal 可以在启动错误时不闪退,可以看到报错信息
在这里插入图片描述

2.使用openFeign远程调用

  • Feign是一个声明式HTTP客户端,使服务间远程调用更方便,它内置了HTTP请求模板,通过接口和注解就可以定义好HTTP请求的参数等信息。
  • Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断)
  • 这里在微服务版本超过2020时,Feign对负载均衡器做出了调整调整为Spring Cloud Loadbalancer,为此需要引入Spring Cloud Loadbalancer的相关依赖并移除Ribbon引用和增加配置,不然开启远程调用的服务会启动报错
spring.cloud.loadbalancer.ribbon.enabled: false
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

引入依赖

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
 </dependency>
  • 远程调用步骤为
    • 引入open-feign

    • 在需要远程调用的服务里编写一个接口,这个接口需要调用远程服务

      • 声明接口的每一个方法都是调用那个远程服务的那个请求
        在这里插入图片描述
    • 开启远程调用功能,在启动类中添加注解@EnableFeignClients(basePackages = “com.smz.guli.member.feign”),basePackages表示刚刚创建接口的位置。
      在这里插入图片描述

    • 在接口处使用远程调用的接口可获取其它服务接口的值
      在这里插入图片描述

3.Nacos作为配置中心

  • 简介

配置中心主要解决的问题是,当需要修改某个服务的配置时,由于服务是集群化和分布式的,修改耗时耗力,配置中心则是统一化,将配置分发给对应的服务,这样就只用配置一遍而使所有服务都读取到配置。

  • 在公共服务中添加依赖
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

如果微服务版本大于2020,则以下形式将需要引入bootstrap的依赖才可以,不导入依赖的方式比较麻烦这里不再赘述

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.0</version>
        </dependency>
  • 为了使配置中心的读取在配置文件之前需要创建bootstrap.properties文件,springboot中bootstrap.properties文件会在application.yml之前。
    在这里插入图片描述
  • 配置配置中心信息
spring.application.name=guli-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
  • 给配置中心默认添加一个数据集(Data Id)guli-coupon.properties。默认规则,应用名.properties。

  • 在guli-coupon.properties添加配置
    在这里插入图片描述
    在这里插入图片描述

  • 动态获取配置

    • 动态刷新配置注解 @RefreshScope
    • 获取配置值 @Value(“${配置项名}”)

如果配置中心和配置文件中都配置了,优先使用配置中心的

4.配置中心细节

  • 命名空间

配置隔离

  • 用来隔离不同环境下的配置(开发、测试、生产)
    可以在bootstrap.properties配置指定命名空间
    spring.cloud.nacos.config.namespace=c700d749-47f7-4b10-9116-4fe586a1a2a2
    在这里插入图片描述
  • 各个服务间配置隔离
    每个微服务创建自己的命名空间

默认:public(保留空间);默认新增的所有配置都在public空间

  • 配置集

所有的配置的集合

  • 配置集ID

Data ID

  • 配置分组

默认所有的配置集都属于DEFAULT_GROUP
在这里插入图片描述
配置分组可以用来区分环境
可以在bootstrap.properties配置指定配置分组
spring.cloud.nacos.config.group=1111在这里插入图片描述

  • 同时加载多个配置集
    bootstrap.properties文件中配置如下代码
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml // Data ID
spring.cloud.nacos.config.extension-configs[0].group=dev // 配置分组
spring.cloud.nacos.config.extension-configs[0].refresh=true // 是否动态更新

在这里插入图片描述

微服务中所有的配置都可以交给nacos配置中心管理。配置中心有的优先使用配置中心的


总结

本章主要讲了微服务的注册发现和配置中心两个组件。

猜你喜欢

转载自blog.csdn.net/smznbhh/article/details/131449342