nacos

Nacos 配置中心与服务发现

补充说明

Nacos 同时提供配置管理和服务注册发现,常用于 Spring Cloud、Dubbo 和 Kubernetes 之外的微服务场景。默认控制台端口 8848,gRPC 端口 9848。生产环境使用外部 MySQL 和集群部署。

常用示例

单机启动(仅开发):

docker run -d --name nacos \
  -e MODE=standalone \
  -e NACOS_AUTH_ENABLE=true \
  -p 8848:8848 -p 9848:9848 \
  nacos/nacos-server:v2.4.3

发布配置:

curl -X POST 'http://nacos:8848/nacos/v1/cs/configs' \
  -d 'dataId=app-prod.yaml' \
  -d 'group=DEFAULT_GROUP' \
  -d 'content=server:
  port: 8080'

读取配置:

curl 'http://nacos:8848/nacos/v1/cs/configs?dataId=app-prod.yaml&group=DEFAULT_GROUP'

注册服务:

curl -X POST 'http://nacos:8848/nacos/v1/ns/instance' \
  -d 'serviceName=order-service' \
  -d 'ip=10.0.0.12' -d 'port=8080'

查看服务列表:

curl 'http://nacos:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=20'

集群配置关键项:

MODE=cluster
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=mysql
MYSQL_SERVICE_DB_NAME=nacos
NACOS_SERVERS=nacos1:8848,nacos2:8848,nacos3:8848

易错点与排错

读完自测

合上页面,先回答,再展开对照。

  1. 2.x 客户端连不上 Nacos,但 8848 已开放,问题在哪?
  2. 生产用 standalone 和内置 Derby 有什么风险?
  3. 客户端读不到已发布的配置,先核对什么?
答案
  1. 还需要开放 gRPC 端口 9848。
  2. 重启后配置丢失,生产应使用外部 MySQL 和集群部署。
  3. 命名空间、group、dataId 三者是否一致。