【JAVA】Java微服务—阿里开源的服务注册中心 + 配置中心Nacos

Nacos 是阿里开源的一个 服务注册中心 + 配置中心

Nacos 是 Spring Cloud / 微服务项目里的"通讯录 + 配置仓库"。

它主要解决两个问题:

复制代码
1. 服务之间怎么找到彼此?
2. 配置文件怎么统一管理?

1. Nacos 解决什么问题?

假设你现在有三个服务:

复制代码
用户服务 user-service
订单服务 order-service
商品服务 product-service

订单服务想调用用户服务。

普通写法可能是:

复制代码
http://localhost:8081/user/1

但是在真实项目中,问题来了:

复制代码
user-service 可能有多台机器
IP 地址可能变化
端口可能变化
服务可能上线或下线

所以不能把地址写死。

这时候就需要 Nacos。


2. Nacos 的第一个作用:服务注册与发现

服务注册

每个服务启动后,会主动告诉 Nacos:

复制代码
我是 user-service
我的地址是 192.168.1.10:8081
我现在活着

类似去派出所登记户口。


服务发现

订单服务想调用用户服务时,不需要自己记 IP。

它只需要问 Nacos:

复制代码
user-service 在哪里?

Nacos 返回:

复制代码
192.168.1.10:8081
192.168.1.11:8081
192.168.1.12:8081

然后订单服务选择其中一个去调用。


3. 用 Python 类比

你可以这样理解:

没有 Nacos

复制代码
USER_SERVICE_URL = "http://192.168.1.10:8081"

写死地址。


有 Nacos

复制代码
USER_SERVICE_NAME = "user-service"

我不关心具体 IP,只关心服务名字。

真正地址由 Nacos 帮我找。


4. Nacos 的第二个作用:配置中心

你之前问过 application.yml

普通 Spring Boot 项目里配置写在本地:

复制代码
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456

但是微服务项目多了以后,每个服务都有配置:

复制代码
user-service 的 application.yml
order-service 的 application.yml
product-service 的 application.yml
pay-service 的 application.yml

配置散落在每个项目里,改起来很麻烦。

这时候可以把配置放到 Nacos 里统一管理。


5. Nacos 作为配置中心时的作用

比如数据库地址变了。

没有 Nacos 时:

复制代码
你要挨个修改每个项目的 application.yml
重新打包
重新部署

有 Nacos 时:

复制代码
在 Nacos 控制台修改配置
服务自动读取新配置

所以 Nacos 像一个远程配置仓库。


6. Nacos 在项目里的位置

一个微服务系统大概是这样:

复制代码
                Nacos
        ┌────────┴────────┐
        │                 │
    服务注册中心        配置中心
        │                 │
        │                 │
┌───────┼────────┐        │
│       │        │        │
用户服务 订单服务 商品服务  统一读取配置

7. Spring Boot 项目怎么接入 Nacos?

通常要做三件事。

第一步:加依赖

pom.xml 里加 Nacos 相关依赖。

例如服务注册发现:

复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置中心:

复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

第二步:写配置

application.yml 里配置 Nacos 地址:

复制代码
spring:
  application:
    name: user-service

  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        enabled: true

意思是:

复制代码
当前服务名叫 user-service
Nacos 地址是 localhost:8848
启动后注册到 Nacos

第三步:启动 Nacos 服务端

Nacos 不是一个普通依赖,它还需要单独启动一个 Nacos Server。

启动后一般可以访问:

复制代码
http://localhost:8848/nacos

它有一个网页控制台,可以看到服务列表和配置列表。


8. Nacos 和 application.yml 的关系

这点很重要。

application.yml 不是被 Nacos 完全替代,而是变成:

复制代码
application.yml:写一些启动时必须知道的基础配置
Nacos:写业务运行中的公共配置、动态配置

比如:

复制代码
spring:
  application:
    name: user-service
  cloud:
    nacos:
      server-addr: localhost:8848

这些仍然要写在本地。

因为程序得先知道:

复制代码
我要去哪里找 Nacos?
我的服务名叫什么?

然后才能从 Nacos 拉取更多配置。


9. Nacos 和 Maven、application.yml 的关系

你可以把它们放在一起理解:

名称 作用
pom.xml 告诉项目需要哪些依赖
application.yml 本地运行配置
Nacos 远程服务注册中心 + 远程配置中心

更直白地说:

复制代码
pom.xml:我要用 Nacos 这个工具
application.yml:Nacos 在哪里
Nacos:真正管理服务地址和配置

10. Nacos 总结

Nacos 是微服务项目里的基础组件,主要有两个作用:

复制代码
服务注册与发现:让服务之间通过服务名互相找到
配置中心:把配置统一放到 Nacos 里管理

Nacos 不是写业务代码的东西,而是用来管理"服务地址"和"配置"的中间件。

相关推荐
1104.北光c°2 小时前
深度剖析 Spring 灵魂:IOC 容器与自动装配的原理、设计与实现
java·开发语言·笔记·后端·spring·rpc·ioc
傻啦嘿哟2 小时前
日志分析:利用OpenClaw日志排查“403”和“503”错误
java·git·github
小小龙学IT2 小时前
Go语言云原生后端开发实践:从单体到微服务的演进之路
微服务·云原生·golang
Volunteer Technology2 小时前
Spring6.0新特性
java·开发语言·spring
social-man2 小时前
开源渗透测试 AI 助手 ComPilot Scan:LangGraph + 终端 + Playwright + 知识库一体化
人工智能·开源
Soari2 小时前
GitHub 开源项目解析:microsoft/markitdown —— 面向 LLM 的多格式文档转 Markdown 工具
microsoft·开源·github·markdown·rag
装不满的克莱因瓶2 小时前
深入理解 Redisson 原理:Redis 不只是缓存,更是分布式协调器
java·redis·分布式·架构·分布式锁·redisson
pixelpilot12 小时前
微软常用运行库directx修复工具(directx repair)2026版directx下载下载安装教程
java·开发语言·其他·microsoft
小丶舟2 小时前
微软Build 2026:自研MAI模型+Project Polaris终结OpenAI依赖
人工智能·microsoft·开源