什么是Nacos?

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

Nacos的作用

  • 服务发现和服务健康监测
  • 动态配置服务
  • //TODO 动态DNS服务
  • 服务及其元数据管理

Nacos快速入门

Docker搭建Nacos

  1. clone项目

    git clone https://github.com/nacos-group/nacos-docker.git
  2. 项目文件夹如图:
    image.png
  3. Nacos支持三种部署模式
  • 单机模式 - 用于测试和单机试用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景。
  1. 选择单机部署模式,启动容器

    #执行standalone-derby.yaml脚本
    docker-compose -f standalone-derby.yaml up
    #容器查看是否启动成功
    docker ps
  2. 登录Nacos dashboard

    #部署Nacos机器的IP
    #用户和密码默认为nacos/nacos
    http://127.0.0.1:8848/nacos/#/

Spring项目中引入Nacos

  • 服务发现和服务健康监测
  • 动态配置服务

启动服务发现

  1. 添加pom.xml依赖
    image.png
  2. 在application.yml添加配置
    image.png
  3. 将应用注册到Nacos

    #作用:此注解能够让注册中心能够发现,扫描到该服务。
    #用法:在启动类上添加该注解
    @EnableDiscoveryClient

    image.png

启动配置管理

  1. 添加pom.xml依赖

    <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
  2. 在boostrap.yml添加配置
    image.png

    #  bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等。
    #  application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。
    #  bootstrap.yml 先于 application.yml 加载。
    #  技术上,bootstrap.yml 是被一个父级的 Spring ApplicationContext 加载的。这个父级的 Spring ApplicationContext是先加载的,在加载application.yml 的 ApplicationContext之前。
    
    spring:
      profiles:
     active: dev
      application:
     #项目名称
     name: gateway-service
    
      cloud:
     nacos:
       config:
         #安装nacos的服务器IP
         server-addr: 127.0.0.1:8848
         file-extension: properties
         namespace: e63e5c13-3da2-41af-9d2e-176432cd856d
         group: DEFAULT_GROUP

Nacos-Dashboard

新建命名空间

  • 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
  1. 新建dev命名空间如图:
    image.png
  2. Spring若要读取对应的配置,则应该修改boostrap.yml配置:

    spring:
      profiles:
     active: dev
      application:
     name: gateway-service
    
      cloud:
     nacos:
       config:
         server-addr: 127.0.0.1:8848
         file-extension: properties
         #命名空间ID
         namespace: e63e5c13-3da2-41af-9d2e-176432cd856d 
         #配置组
         group: DEFAULT_GROUP

配置管理

  • 系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。
  1. 编辑配置
  • 配置的dataId 的完整格式如下:

    ${prefix}-${spring.profiles.active}.${file-extension}

    image.png

  1. boostrap.yml添加配置分组group信息。
  2. 在项目中使用@RefreshScope和@Value读取配置
    image.png
  3. 请求API,检验配置内容在项目中是否生效
    image.png
  4. 修改配置内容,查看项目输出的日志
    image.png
  5. 请求API,检验修改后配置内容在项目中是否生效
    image.png
  6. 小结:动态配置在项目中生效并输出对应的日志。但是如果我想回滚到某个历史版本呢?没问题!
  7. 配置回滚
  • 配置支持回滚到历史版本(保留30天)
    image.png

服务管理

  • 服务流量权重支持
    Nacos 为用户提供了流量权重控制的能力,同时开放了服务流量的阈值保护,以帮助用户更好的保护服务服务提供者集群不被意外打垮。如下图所以,可以点击实例的编辑按钮,修改实例的权重。如果想增加实例的流量,可以将权重调大,如果不想实例接收流量,则可以将权重设为0。
  • 服务元数据管理
    Nacos提供多个维度的服务元数据的暴露,帮助用户存储自定义的信息。这些信息都是以K-V的数据结构存储,在控制台上,会以k1=v1,k2=v2这样的格式展示。类似的,编辑元数据可以通过相同的格式进行。例如服务的元数据编辑,首先点击服务详情页右上角的“编辑服务”按钮,然后在元数据输入框输入:version=1.0,env=prod。
  • 服务优雅上下线
    Nacos还提供服务实例的上下线操作,在服务详情页面,可以点击实例的“上线”或者“下线”按钮,被下线的实例,将不会包含在健康的实例列表里。
  • image.png

权限管理

  • 基于RABC模型的权限管理
    image.png

总结

本章由Nacos的搭建入门,在spring项目中引入Nacos,实践了以下概念的基本操作,让读者对Nacos的基本功能有初步的认识。

  • 服务发现
  • 动态配置服务
  • 服务及其元数据管理

Remarks

TODO


git-jjh1
1 声望1 粉丝