一、nacos介绍

Nacos是Dynamic Naming and Configuration Service(动态命名和配置服务)的首字母简称,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos由阿里巴巴开源,致力于帮助用户发现、配置和管理微服务。以下是Nacos的详细介绍:

1.动态服务发现:

  • Nacos支持基于DNS和基于RPC的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent注册Service后,服务消费者可以使用DNS或HTTP&API查找和发现服务。
  • Nacos通过心跳机制和服务同步来确保服务信息的实时性和一致性。服务提供者会定期发送心跳给Nacos Server,以表明其服务处于活跃状态。同时,Nacos Server集群之间会互相同步服务实例信息,保证服务信息的一致性。

2.配置管理:

  • Nacos提供动态配置服务,允许用户以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。这消除了配置变更时重新部署应用和服务的需要,使配置管理变得更加高效和敏捷。
  • Nacos提供了一个简洁易用的UI(控制台样例Demo)来帮助用户管理所有的服务和应用的配置。同时,它还支持配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪等特性

3.动态DNS服务:

  • Nacos支持动态DNS服务,允许用户更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
  • 动态DNS服务还支持权重路由,让用户可以根据需要调整服务的负载均衡策略。

4.服务元数据管理:

  • Nacos能够从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA以及最首要的metrics统计数据

二、安装准备

1.安装nacos server

  • 你可以从Nacos GitHub下载Nacos Server,并按照官方文档启动Nacos服务。
  • 确保Nacos服务已经启动,并可以通过默认端口(8848)访问

2.创建spring boot项目

说明:本次实验nacos版本:2.2.4

三、修改配置

1.添加依赖

注意:在项目的pom.xml(主服务目录)中添加Nacos Config的依赖。确保你的Spring Cloud版本与Nacos Config的版本兼容

复制代码
 <!--  nacos -->
        <!-- 服务发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.5.0</version>
            <!-- <exclusions>
                <exclusion>
                    <groupId>com.alibaba.nacos</groupId>
                    <artifactId>nacos-client</artifactId>
                </exclusion>
            </exclusions> -->
        </dependency>
        <!-- 配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <!-- <exclusions>
                <exclusion>
                    <groupId>com.alibaba.nacos</groupId>
                    <artifactId>nacos-client</artifactId>
                </exclusion>
            </exclusions> -->
        </dependency>
        <!-- <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency> -->
        <!-- 此处要配置,不然报错:No spring.config.import property has been defined -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
View Code
复制代码

2.配置nacos config

注意:在src/main/resources(主服务目录)目录下,创建bootstrap.ymlbootstrap.properties文件(注意是bootstrap,不是application,因为配置中心的加载优先级高于application)。

复制代码
spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.register-enabled=true
spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:nacos-headless:8848}
spring.cloud.nacos.discovery.namespace=${NACOS_NAMESPACE:public}
spring.cloud.nacos.discovery.group=${NACOS_GROUP:dev}

spring.cloud.nacos.config.enabled=true
spring.cloud.nacos.config.server-addr=${NACOS_URL:nacos-headless:8848}
spring.cloud.nacos.config.namespace=${nacos.namespace:public}
spring.cloud.nacos.config.group=${NACOS_GROUP:dev}
View Code
复制代码

3.nacos管理页面配置中心配置

注意:

  • Nacos中的Data ID通常是${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension},但你可以根据需要进行调整。
  • 确保spring.application.name和Nacos中的Data ID设置相匹配。
  • 如果使用不同的profiles(如dev, test, prod),确保Nacos中有对应的配置,并在启动命令中指定profile(例如,使用--spring.profiles.active=dev)。
  • Nacos Config支持配置的热加载,但请注意不是所有的配置项都能被动态刷新

 

 

四、验证

说明:

  • 服务配置spring.application.name=gct-ipaas;spring.profiles.active=gct-paas
  • 会在配置中心查找 且配置优先级:gct-ipaas < gct-ipaas.properties < gct-ipaas-gct-paas.properties ;

1.没有在配置中心配置时,三个配置文件都会忽略

 2.配置中心配置了gct-ipaas,发现日志里不再忽略gct-ipaas配置

 

3.服务发现

 4.其他服务调用