Alibaba Nacos 接入使用说明

应用接入 Nacos

Nacos 的服务注册与发现

1. 编辑pom.xml,加入必要的依赖配置

 
        
            
                org.springframework.cloud
                spring-cloud-alibaba-dependencies
                0.9.0.RELEASE
                pom
                import
            
        
    


    
         org.springframework.cloud
         spring-cloud-starter-alibaba-nacos-discovery
    

  • dependencyManagementspring cloud alibaba 的版本,由于spring cloud alibaba 还未纳入spring cloud 的主版本管理中,所以需要自己加入。
  • dependencies:当前应用要使用的依赖内容。这里主要新加入了 Nacos 的服务注册与发现模块:spring-cloud-starter-alibaba-nacos-discovery。由于 dependencyManagement 中已经引入了版本,这里就不用指定具体版本了。

2. 配置服务名称和 Nacos 地址

spring.application.name= xxx
#使用 Nacos 作为服务注册中心
spring.cloud.nacos.discovery.server-addr= xxx

说明

  • server-addr :填写 Nacos 集群的全部服务地址,逗号分隔。

3. 添加注解

在 SpringBoot 启动类上添加 @EnableDiscoveryClient;但不是必须的。只要添加了 spring-cloud-starter-alibaba-nacos-discovery 依赖,就会自动注册到 Nacos 上。

@EnableDiscoveryClient
@SpringBootApplication
public class NacosClientApplication {
     ...
}

启动应用

我们可以访问 Nacos 的管理页面:地址 xxxx

Alibaba Nacos 接入使用说明_第1张图片
控制台

这里会显示当前注册的所有服务,以及每个服务的集群数目、实例数、健康实例数。
点击详情,可以看到每个服务具体的实例信息,如下图所示:

Alibaba Nacos 接入使用说明_第2张图片
服务详情

Nacos 作为配置中心

1. 编辑pom.xml,加入必要的依赖配置


    
        org.springframework.cloud
        spring-cloud-starter-alibaba-nacos-config
    

. 修改配置

spring.cloud.nacos.config.server-addr= xxx

注意:
这里必须使用 bootstrap.properties
同时,spring.application.name 值必须 Nacos 中创建的配置 Data Id 匹配

3. 添加注解

在 引入配置文件的类上增加 @RefreshScope 注解,表示这个类下的配置内容支持动态刷新

@RefreshScope
public class NacosClientController {
    @Value("${value}")
    private String value;
}

Nacos 管理配置

创建配置项

  1. 进入Nacos控制台,点击导航栏的“配置列表”,然后点击右侧的“+” 按钮,如下图所示:


    Alibaba Nacos 接入使用说明_第3张图片
    配置列表
  2. 新建配置项


    Alibaba Nacos 接入使用说明_第4张图片
    新建配置项

多环境管理

在 Nacos中,本身有多个不同管理级别的概念,包括:Data ID、Group、Namespace。

使用 Data ID 与 profiles 实现

Data Id 完整格式为:${prefix}-${spring.profile.active}.${file-extension}

  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profile.active 即为当前环境对应的 profile ,详情可以参考 Spring Boot文档。
    **注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

使用Group实现

通过不同的 Group ,可以根据不同的环境使用不同的配置,但是它们的 Data ID 是完全相同的。
如图:


Alibaba Nacos 接入使用说明_第5张图片
Group

此时项目的配置文件需要根据添加 group 来区分

spring.cloud.nacos.config.group=DEV_GROUP

使用 Namespace 实现

Namespace 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。
常用于不同环境的配置的区分隔离,例如:开发测试环境和生产环境的资源(如配置、服务)隔离等。
  1. 命名空间配置页面


    Alibaba Nacos 接入使用说明_第6张图片
    命名空间配置
  2. 修改应用的配置文件,增加Namespace的指定配置。

    spring.cloud.nacos.config.namespace= xxx
    

    注意:若使用 namespace ,服务注册与发现也应加上 namespace 相关配置

    spring.cloud.nacos.discovery.namespace= xxx
    
  • namespace :用来区分不同环境的服务注册中心,等同于 Apollo 的 DEV,PRO。可以通过登陆 Nacos 管理页面获取,注意使用的是 ID ,不能使用环境的名称,默认的是 defalut 空间。

三种方式的区别

  1. 第一种:通过Data ID与profile实现。

    优点:这种方式与Spring Cloud Config的实现非常像,用过 Spring Cloud Config 的用户,可以毫无违和感的过渡过来,由于命名规则类似,所以要从 Spring Cloud Config 中做迁移也非常简单。

    缺点:这种方式在项目与环境多的时候,配置内容就会显得非常混乱。配置列表中会看到各种不同应用,不同环境的配置交织在一起,非常不利于管理。

    建议:项目不多时使用,或者可以结合 Group 对项目根据业务或者组织架构做一些拆分规划。

  2. 第二种:通过 Group 实现。

    优点:通过Group按环境讲各个应用的配置隔离开。可以非常方便的利用 Data ID 和 Group 的搜索功能,分别从应用纬度和环境纬度来查看配置。

    缺点:由于会占用Group纬度,所以需要对 Group 的使用做好规划,毕竟与业务上的一些配置分组起冲突等问题。

    建议:这种方式虽然结构上比上一种更好一些,但是依然可能会有一些混乱,主要是在 Group 的管理上要做好规划和控制。

  3. 第三种:通过 Namespace 实现。

    优点:官方建议的方式,通过 Namespace 来区分不同的环境,释放了 Group 的自由度,这样可以让 Group 的使用专注于做业务层面的分组管理。同时,Nacos 控制页面上对于 Namespace 也做了分组展示,不需要搜索,就可以隔离开不同的环境配置,非常易用。

    缺点:没有啥缺点,可能就是多引入一个概念,需要用户去理解吧。

    建议:直接用这种方式长远上来说会比较省心。

多文件加载与共享配置

很多系统根据模块来定义配置文件,比如DB配置,日志配置等,可以用下面方法加载

加载多个配置

spring.cloud.nacos.config.ext-config[0].data-id=db.properties
spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[0].refresh=true
...

共享配置

spring.cloud.nacos.config.shared-dataids=actuator.properties,log.properties
spring.cloud.nacos.config.refreshable-dataids=actuator.properties,log.properties
  • spring.cloud.nacos.config.shared-dataids 参数用来配置多个共享配置的 Data Id,多个的时候用逗号分隔。
  • spring.cloud.nacos.config.refreshable-dataids 参数用来定义哪些共享配置的 Data Id 在配置变化时,应用中可以动态刷新,多个 Data Id 之间用逗号隔开。如果没有明确配置,默认情况下所有共享配置都不支持动态刷新。

配置加载的优先级

在使用Nacos配置的时候,主要有以下三类配置:

  • A: 通过 spring.cloud.nacos.config.shared-dataids 定义的共享配置
  • B: 通过 spring.cloud.nacos.config.ext-config[n] 定义的加载配置
  • C: 通过内部规则( spring.cloud.nacos.config.prefixspring.cloud.nacos.config.file-extensionspring.cloud.nacos.config.group) 这几个参数拼接出来的配置

优先级关系是:A < B < C

Nacos 替换 Eureka

  1. 添加 Nacos 的依赖,同时去掉 Eureka依赖

     
            
                org.springframework.cloud
                spring-cloud-starter-alibaba-nacos-discovery
                0.2.1.RELEASE
            
     
    
  2. 修改application.properties

    spring.cloud.nacos.discovery.server-addr = xxx
    
  3. 更换@EnableEurekaClient 注解(可选)


更多学习内容,请关注公众号,一起进步。


Alibaba Nacos 接入使用说明_第7张图片
stupidzhang

你可能感兴趣的:(Alibaba Nacos 接入使用说明)