- A+
Nacos 是阿里巴巴推出的一款动态服务发现、配置管理和服务管理平台,致力于解决微服务架构中的服务发现、配置管理、服务治理等核心问题。其名称来源于 "Dynamic Naming and Configuration Service" 的缩写,具有开源、轻量、高可用等特点,广泛应用于 Spring Cloud、Dubbo 等微服务生态。
Nacos 的核心功能
- 服务发现与注册
- 支持基于 DNS 和 RPC 的服务发现,适配 Spring Cloud、Dubbo 等主流微服务框架。
- 服务提供者可自动将服务信息注册到 Nacos 服务器,消费者通过 Nacos 获取服务地址列表,实现动态负载均衡。
- 提供健康检查机制,自动剔除不可用服务,保障服务调用的可靠性。
- 配置管理
- 集中管理多环境、多应用的配置信息(如数据库连接、接口地址等),支持动态更新配置,无需重启服务即可生效。
- 支持配置的版本控制、灰度发布(部分服务先更新配置)、配置回滚等功能,降低配置变更风险。
- 提供配置监听机制,服务可实时感知配置变化并作出响应(如刷新缓存)。
- 服务治理
- 支持服务元数据管理(如服务描述、标签),便于服务分类和筛选。
- 提供服务流量控制、熔断降级等能力(需结合 Sentinel 等组件),保障系统稳定性。
- 可视化控制台:通过 Web 界面直观管理服务、配置、集群等信息,简化运维操作。
Nacos 的架构设计
Nacos 架构分为服务端和客户端两部分:
- 服务端:
- 采用集群部署保证高可用,支持主从复制和数据一致性(基于 Raft 协议)。
- 存储层分为内存存储(临时配置、服务实例,支持动态更新)和持久化存储(默认使用 MySQL,存储持久化配置、历史版本等)。
- 客户端:
- 集成到微服务应用中,通过 SDK 与服务端通信,实现服务注册、配置拉取等功能。
- 本地缓存配置信息,减少与服务端的交互,提升性能。
Nacos 与同类工具的对比
工具 | 优势 | 劣势 |
---|---|---|
Nacos | 一站式解决服务发现 + 配置管理,生态兼容好 | 功能较新,部分场景成熟度待验证 |
Eureka | 轻量、易用,适合 Spring Cloud 生态 | 仅支持服务发现,无配置管理功能 |
Consul | 支持服务发现、配置管理、分布式锁 | 配置管理功能较弱,部署较复杂 |
Apollo | 配置管理功能强大,支持细粒度权限控制 | 仅专注配置管理,需配合其他工具做服务发现 |
Nacos 的典型应用场景
- 微服务注册中心:替代 Eureka、Consul,作为 Spring Cloud/Dubbo 服务的注册中心,实现服务自动发现。
- 动态配置中心:集中管理多环境配置(如开发、测试、生产),支持配置热更新,避免重复部署。
- 灰度发布支持:通过配置分组或标签,实现部分服务先更新配置,验证无误后全量发布。
- 高可用集群部署:在分布式系统中,通过 Nacos 集群保证服务注册和配置管理的稳定性。
一、依赖软件安装
安装 JDK 8
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
java -version
安装 MySQL 5.7(使用 shell 脚本安装)
登录 MySQL ,需修改初始密码并创建 Nacos 数据库
# 登录MySQL(输入初始密码)
mysql -u root -p
# 创建Nacos数据库(编码需为UTF-8)
CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 授权root用户访问
GRANT ALL PRIVILEGES ON nacos_config.* TO 'root'@'%' IDENTIFIED BY 'xxx.com';
FLUSH PRIVILEGES;
# 退出MySQL
exit
二、下载与安装 Nacos
下载 Nacos 安装包,Nacos 的官方下载地址为:https://github.com/alibaba/nacos/releases/download/1.4.3/nacos-server-1.4.3.tar.gz,这里使用的是 nacos-server-1.4.3 版本
上传nacos-server-1.4.3.tar.gz
# 解压安装包
tar -zxvf nacos-server-1.4.3.tar.gz -C /usr/local/
配置 MySQL 数据源
导入初始化 SQL
# 进入nacos的conf目录
cd /usr/local/nacos/conf
# 执行初始化SQL(替换密码为实际MySQL密码)
mysql -u root -p nacos_config < nacos-mysql.sql
修改 Nacos 配置文件
vim /usr/local/nacos/conf/application.properties
添加以下内容
# 启用MySQL数据源
spring.datasource.platform=mysql
# 数据库数量
db.num=1
# 数据库连接信息
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=xxx.com
三、启动与验证 Nacos
启动 Nacos 服务
# 进入nacos的bin目录
cd /usr/local/nacos/bin
# 单机模式启动(使用bash命令)
bash startup.sh -m standalone
启动成功后,会显示类似以下日志
nacos is starting with standalone
nacos is starting,you can check the /usr/local/nacos/logs/start.out
验证部署结果
在浏览器输入:http://服务器IP:8848/nacos
,使用默认账号密码(nacos/nacos)登录。


查看日志确认状态
# 查看启动日志
tail -f /usr/local/nacos/logs/start.out
# 查看运行日志
tail -f /usr/local/nacos/logs/start.out
四、设置开机自启
创建系统服务文件
cat > /usr/lib/systemd/system/nacos.service << EOF
[Unit]
Description=nacos service
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecStop=/usr/local/nacos/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
生效并设置自启
# 重新加载系统服务
systemctl daemon-reload
# 启动nacos服务
systemctl start nacos
# 设置开机自启
systemctl enable nacos
# 验证服务状态
systemctl status nacos