Nacos 是什么?
Nacos 是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台,主要用于构建云原生应用。它的名字来源于 Naming and Configuration Service。Nacos 支持以下核心功能:
-
服务发现与注册:
-
服务提供者将服务注册到 Nacos,消费者通过 Nacos 发现服务。
-
-
配置管理:
-
集中管理应用的配置,支持动态更新。
-
-
服务健康检查:
-
实时监控服务健康状态,自动剔除不健康的实例。
-
-
动态 DNS 服务:
-
支持基于权重的负载均衡。
-
-
多环境支持:
-
支持多环境(如开发、测试、生产)的配置和服务管理。
-
Nacos 广泛应用于微服务架构中,是 Spring Cloud Alibaba 生态的核心组件之一。
Nacos 安装教程
1. 环境要求
-
JDK 1.8 或更高版本。
-
推荐使用 Linux 或 macOS 系统(Windows 也支持)。
2. 下载 Nacos
-
访问 Nacos 的 GitHub 发布页面:Nacos Releases
-
下载最新版本的压缩包(如
nacos-server-2.2.3.tar.gz
)。
3. 解压并启动
bash
复制
# 解压 tar -zxvf nacos-server-2.2.3.tar.gz # 进入解压后的目录 cd nacos/bin # 启动 Nacos(单机模式) sh startup.sh -m standalone
4. 访问 Nacos 控制台
-
默认地址:
http://localhost:8848/nacos
-
默认用户名和密码:
nacos
/nacos
Nacos 使用方法
1. 服务注册与发现
Nacos 可以作为服务注册中心,支持服务提供者注册服务和消费者发现服务。
(1)Spring Cloud 集成 Nacos
在 Spring Cloud 项目中,可以通过 spring-cloud-starter-alibaba-nacos-discovery
集成 Nacos。
-
添加依赖:
xml
复制
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2022.0.0.0</version> </dependency>
运行 HTML
-
配置文件:
yaml
复制
spring: application: name: my-service cloud: nacos: discovery: server-addr: localhost:8848
-
启用服务发现:
在启动类上添加@EnableDiscoveryClient
注解:java
复制
@SpringBootApplication @EnableDiscoveryClient public class MyServiceApplication { public static void main(String[] args) { SpringApplication.run(MyServiceApplication.class, args); } }
(2)服务注册
启动应用后,服务会自动注册到 Nacos。可以在 Nacos 控制台的 服务管理 -> 服务列表 中查看。
(3)服务发现
通过 DiscoveryClient
获取服务实例:
java
复制
@Autowired private DiscoveryClient discoveryClient; public void discoverService() { List<ServiceInstance> instances = discoveryClient.getInstances("my-service"); for (ServiceInstance instance : instances) { System.out.println("Service URL: " + instance.getUri()); } }
2. 配置管理
Nacos 支持集中管理应用的配置,并支持动态更新。
(1)Spring Cloud 集成 Nacos 配置中心
-
添加依赖:
xml
复制
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2022.0.0.0</version> </dependency>
运行 HTML
-
配置文件:
在bootstrap.yml
中配置 Nacos 配置中心:yaml
复制
spring: application: name: my-service cloud: nacos: config: server-addr: localhost:8848 file-extension: yaml
-
动态更新配置:
使用@RefreshScope
注解使配置动态生效:java
复制
@RestController @RefreshScope public class ConfigController { @Value("${my.config.key:default}") private String configValue; @GetMapping("/config") public String getConfig() { return configValue; } }
(2)在 Nacos 控制台添加配置
-
进入 Nacos 控制台,选择 配置管理 -> 配置列表。
-
点击 + 按钮,添加配置:
-
Data ID:
my-service.yaml
(与spring.application.name
一致) -
Group:
DEFAULT_GROUP
-
配置格式:
YAML
-
内容示例:
yaml
复制
my: config: key: value
-
3. 多环境支持
Nacos 支持通过 namespace
和 group
实现多环境配置管理。
-
Namespace:用于隔离不同环境(如开发、测试、生产)。
-
Group:用于隔离不同项目或模块。
在配置文件中指定 namespace
和 group
:
yaml
复制
spring: cloud: nacos: config: namespace: dev-namespace-id group: MY_GROUP
总结
-
Nacos 是一个功能强大的服务发现和配置管理平台,适用于微服务架构。
-
安装:下载解压后,通过命令行启动。
-
使用:
-
通过 Spring Cloud 集成 Nacos,实现服务注册与发现。
-
使用 Nacos 配置中心管理应用的配置,支持动态更新。
-
支持多环境配置管理。
-
通过 Nacos,可以显著提升微服务架构的可维护性和灵活性。