应用接入 Nacos 指南

应用接入 Nacos

Nacos 的服务注册与发现

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

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>0.9.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
<!-- 注册和发现服务依赖-->
<dependencies>
    <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>
  • 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

控制台

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

服务详情

Nacos 作为配置中心

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

<!-- spring-cloud-alibaba-dependencies 依赖同注册中心 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

. 修改配置

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控制台,点击导航栏的“配置列表”,然后点击右侧的“+” 按钮,如下图所示:
    配置列表

  2. 新建配置项
    新建配置项

多环境管理

在 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 是完全相同的。
如图:
Group
此时项目的配置文件需要根据添加 group 来区分

spring.cloud.nacos.config.group=DEV_GROUP

使用 Namespace 实现

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

  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依赖

     <dependencies>
    	    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>0.2.1.RELEASE</version>
            </dependency>
     </dependencies>
    
  2. 修改application.properties

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


更多学习内容,请关注公众号。
stupidzhang

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值