一、Nacos 快速入门

Nacos 概述

Nacos 是阿里巴巴的产品,现在是 SpringCloud 中的一个组件。相比 Eureka 功能更丰富,在国内受欢迎的程度较高。

Nacos 官网:https://nacos.io/

—— 来自 Nacos 官网(https://nacos.io/zh-cn/docs/what-is-nacos.html) Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

可以理解为 Nacos 可以做为微服务的服务注册中心、配置中心。

安装 Nacos

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+;下载 & 配置。
  3. Maven 3.2.x+;下载 & 配置。

安装过程中出现的问题:[求救]Nacos在macOS中无法启动服务

安装完成后,可以开启 Nacos 服务。


启动命令 关闭服务器
Linux/Unix/Mac sh startup.sh -m standalone
(standalone代表着单机模式运行,非集群模式)
sh shutdown.sh
Windows startup.cmd -m standalone
(standalone代表着单机模式运行,非集群模式)
shutdown.cmd
或者双击shutdown.cmd运行文件。
  1. ### Default web server port:
  2. server.port=8848

:::info Nacos 自带内嵌数据库 derby百度百科),数据库持久化仅支持mysql数据库。 :::

Nacos 的依赖

[参考文档]SpringCloudAlibaba 版本说明

  1. <!-- Nacos 客户端依赖包 -->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  5. <!-- 版本号由 SpringCloudAlibaba Dependencies 管理 -->
  6. </dependency>

:::info 因为导入 SpringCloudAlibaba 管理依赖后再导入其他的Alibaba相关组件依赖就不用关心版本问题了

所以 Nacos 客户端依赖包版本号由 SpringCloudAlibaba Dependencies 管理。 ::: :::warning 由于 SpringCloud 需要用到 Maven 相关的知识,所以先去恶补一下 Maven。
Maven 笔记:[Maven] ::: :::info 好了,经过一天的恶补,继续这个单元的学习! :::

:::danger 经过实际测试踩坑,各个组件之间的版本一定要遵循官方,不然可能导致服务启动失败!!!版本说明请看下面的网址。 :::

  1. https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

nacos 单机模式大致的用法(自我理解)

  1. 开启 nacos 服务端
  2. 将客户端(微服务)注册到 nacos 里面去
  3. 用 ribbon 负载均衡时,会从 nacos 里面拉取服务列表,然后根据负载均衡策略轮询服务的真实 ip(一个服务可以包含多个实例)

服务分级模型

[微服务]Nacos - 注册中心(alibaba) - 图1

  1. spring.cloud.nacos.discovery.cluster-name=集群名
  1. person-service:
  2. ribbon:
  3. NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
  1. cloud:
  2. nacos:
  3. discovery:
  4. ephemeral: false # 是否是临时实例

二、Nacos 配置管理

1. nacos 配置管理简介

动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。 动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。 配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。 Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。

2. nacos 配置管理客户端依赖

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  4. </dependency>

由于要先读取 nacos 中的配置,然后在读取 application.yml的配置后合并两者,在之后是创建 spring 容器。

所以要先知道 nacos 的地址,添加 bootstrap.yml文件,这个文件是引导文件,优先级高于 application.yml

3. 配置自动刷新 / 热更新

  • 方式一:在@Value注入的变量所在类上添加注解@RefreshScope

    1. @RefreshScope
    2. public class PersonContorller {
    3. @Value("${pattern.dateformat}")
    4. private String dateformat;
    5. }
  • 方式二:使用 @ConfigurationProperties注解

    1. @Component
    2. @Data
    3. @ConfigurationProperties(prefix = "pattern")
    4. public class Pattern {
    5. private String dateformat;
    6. }

    4. 多环境配置共享

    1. https://www.bilibili.com/video/BV1LQ4y127n4?p=28

    5. nacos 集群搭建

    1. https://www.bilibili.com/video/BV1LQ4y127n4?p=29