SpringCloud框架(十一) -- Nacos服务注册和配置中心(用、重要)

1. 概述:

Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos = Eureka + Config + Bus。

1.1 能干嘛:

替代Eureka做服务注册中心,替代Config做服务配置中心

1.2 安装nacos:

官网:https://nacos.io/zh-cn/
GitHub:https://github.com/alibaba/Nacos
官方文档:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html
在这里插入图片描述

2. Nacos作为注册中心的使用

2.1 基于Nacos的服务提供者:

  1. 创建9001项目:
    在这里插入图片描述
  2. 添加pom文件:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  1. yml文件:
server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: 10.211.55.17:8848  #配置的Nacos地址(本机的写localhost:8848,服务器的写IP地址)

management:
  endpoints:
    web:
      exposure:
        include: '*'
  1. 主启动类添加 @EnableDiscoveryClient注解
  2. 进行测试:
    在这里插入图片描述
  3. 参照9001,新建9002项目,进行测试:
    在这里插入图片描述
    在这里插入图片描述

2.2 基于Nacos的服务消费者:

  1. 新建消费者83,新建的步骤不多说,参照9001
    在这里插入图片描述

  2. 测试83调用nacos-payment-provider服务:
    在这里插入图片描述
    在这里插入图片描述

  3. 经过测试可以看到nacos是支持负载均衡的,这是因为里面集成了ribbon。
    在这里插入图片描述

3. 各种注册中心的比较:

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

3.1 Nacos支持CP和AP的切换

在这里插入图片描述

4. Nacos作为配置中心的使用:

4.1 基础配置

在这里插入图片描述

4.1.1 新建模块3377
4.1.2 添加pom依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
4.1.3 添加yml文件:

在这里插入图片描述

  1. bootstrap.yml中:
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: 10.211.55.17:8848 #Nacos服务注册中心地址(本机的写localhost)
      config:
        server-addr: 10.211.55.17:8848 #Nacos作为配置中心地址(本机的写localhost)
        file-extension: yml #指定yml格式配置
  1. application.yml中
spring:
  profiles:
    active: dev #表示开发环境
4.1.4 添加主启动类
4.1.5 controller编写,添加@RefreshScope注解

此注解是spring cloud原生注解,来实现配置自动更新

@RefreshScope   //支持Nacos的动态刷新功能
@RestController
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;


    @GetMapping("/config/info")
    public String getConfigInfo(){
        return configInfo;
    }

}
4.1.6 在nacos中添加配置信息

官网:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

配置信息格式:即项目如何找到nacos中的配置文件

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

#${prefix}-${spring.profile.active}.${file-extension}
# ${spring.application.name}-${spring.profile.active}.${file-extension}
# nacos-config-client-dev.yml

在这里插入图片描述

在nacos中添加配置信息

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

注意:这里的dataId一定是yaml,不然会报错找不到。
在这里插入图片描述

4.1.7 测试

不多说
修改nacos中配置内容,重新访问:
在这里插入图片描述

4.2 分类配置

在这里插入图片描述

4.2.1 问题:

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

4.2.2 图像化管理:

在这里插入图片描述

4.2.3 Namespace+Group+DataID关系

在这里插入图片描述
默认情况:

在这里插入图片描述

4.3 三种方案加载配置:

在这里插入图片描述

4.3.1 Data ID方案:

在这里插入图片描述

  1. 新建一个test的配置:
    在这里插入图片描述
  2. 设置application中的active为test,根据公式,就会读取我们新建的test的配置
    在这里插入图片描述
  3. 测试:略
4.3.2 Group方案:

在这里插入图片描述
Group默认为DEFAULT_GROUP

  1. 添加一个新的配置,设置组为DEV_GROUP

  2. 再添加一个配置,设置组为TEST_GROUP
    在这里插入图片描述

  3. 在yml中添加group
    在这里插入图片描述

  4. 测试:略

4.3.3 namespace方案:

在这里插入图片描述
Namespace默认有一个public。(不可删除)

  1. 新建命名空间:
    在这里插入图片描述
    在这里插入图片描述

  2. 给dev命名空间新增四个DataId,分三个Group
    在这里插入图片描述

  3. 在bootstrap.yml的config里添加namespace: xx
    在这里插入图片描述

  4. 测试:略

5. Nacos集群及持久化:

官网说明:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

5.1 单机存在的问题

首次使用nacos时,并没有持久化我们的配置,但是配置还是保存下来了,这是因为nacos有个内置的切入式数据库。
在这里插入图片描述

5.2 持久化配置

配置mysql作为nacos的持久化数据库
在这里插入图片描述
在这里插入图片描述

5.3 集群配置步骤:

docker安装查看:
https://blog.csdn.net/qq_36903261/article/details/106932489
在这里插入图片描述
在这里插入图片描述


版权声明:本文为weixin_39724194原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。