一、nacos介绍
Nacos是Dynamic Naming and Configuration Service(动态命名和配置服务)的首字母简称,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos由阿里巴巴开源,致力于帮助用户发现、配置和管理微服务。以下是Nacos的详细介绍:
- 动态服务发现:
- Nacos支持基于DNS和基于RPC的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent注册Service后,服务消费者可以使用DNS或HTTP&API查找和发现服务。
- Nacos通过心跳机制和服务同步来确保服务信息的实时性和一致性。服务提供者会定期发送心跳给Nacos Server,以表明其服务处于活跃状态。同时,Nacos Server集群之间会互相同步服务实例信息,保证服务信息的一致性。
- 配置管理:
- Nacos提供动态配置服务,允许用户以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。这消除了配置变更时重新部署应用和服务的需要,使配置管理变得更加高效和敏捷。
- Nacos提供了一个简洁易用的UI(控制台样例Demo)来帮助用户管理所有的服务和应用的配置。同时,它还支持配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪等特性。
- 动态DNS服务:
- Nacos支持动态DNS服务,允许用户更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
- 动态DNS服务还支持权重路由,让用户可以根据需要调整服务的负载均衡策略。
- 服务元数据管理:
- Nacos能够从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA以及最首要的metrics统计数据。
二、安装准备
1.安装nacos server
- 你可以从Nacos GitHub下载Nacos Server,并按照官方文档启动Nacos服务。
- 确保Nacos服务已经启动,并可以通过默认端口(8848)访问
2.创建spring boot项目
- 使用Spring Initializr(https://start.spring.io/)快速生成一个Spring Boot项目。
- 添加必要的依赖,比如Spring Web, Spring Cloud Discovery, Nacos Config等。
说明:本次实验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.yml
或bootstrap.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配置
标签:服务,spring,配置,Nacos,nacos,cloud,Spring,Cloud From: https://www.cnblogs.com/aroin/p/18350952