选型

Nacos

你可能会说

服务一拆多,注册中心和配置中心还得各搭一套?

阿里开源的注册中心 + 配置中心,一个进程全包服务启动时来注册,调用方按服务名发现;配置统一放在平台上,改完推给客户端并支持灰度、回滚。Spring Cloud Alibaba 和 Dubbo 的默认搭档。它是运行时要一直开着的中间件,生产要搭集群,不是引个库就行。
也常被叫作Nacos Server注册中心
先问一句服务多了,注册和配置往哪放?
默认Nacos→擅长注册 + 配置一体→别用单体一个进程
成熟度采用

什么时候选它

  • Java 微服务要服务注册与发现(Spring Cloud Alibaba / Dubbo)
  • 多环境配置集中管理,要动态刷新、灰度和回滚
  • 想少维护一套组件:注册中心和配置中心一个进程搞定

什么时候别选

  • 单体应用,根本没有「服务在哪」的问题
  • 已经用 K8s Service / ConfigMap 托管发现和配置
  • 规模极小、只用 DNS 就能找到服务
容易混在一起 · 怎么分
Nacos≠Eureka

Eureka 只做注册发现、早已停止演进;Nacos 注册 + 配置一体,还能按场景选 AP 或 CP。

Nacos≠ZooKeeper

ZK 是偏 CP 的分布式协调组件,注册只是顺带用法;Nacos 对临时实例走 AP + Distro 协议,更适合服务发现。

Nacos≠K8s Service

K8s 用 Service/DNS 做发现、ConfigMap 管配置,不需要额外中间件;Nacos 适合 vm/自建和跨集群场景。

Q面试会问什么

  • 问:AP 和 CP 怎么选?
    答:临时实例走 AP(Distro 协议、最终一致,断网仍可用);持久实例走 CP(Raft,强一致,适合关键配置类数据)。
  • 问:配置动态刷新怎么做到的?
    答:客户端长轮询服务端,配置有变更就返回并推送;本地还有快照,服务端挂了也能用上一次的配置。
  • 问:服务发现怎么扛大规模?
    答:服务端变更主动推 + 客户端本地缓存,调用方不会每次都查注册中心。
  • 问:和 Eureka / ZK 的本质区别?
    答:治理模型不同:Eureka 单 AP、ZK 单 CP;Nacos 按数据类型分别提供 AP 和 CP,并把配置中心合进来。
延伸阅读 · 权威出处