CodeWalk

Eureka与Zookeeper作为注册中心的区别

作者:小字辈 · 2026-05-30 12:55

请对比Eureka(AP原则)和Zookeeper(CP原则)作为服务注册中心的区别。为什么Spring Cloud默认推荐Eureka而不是Zookeeper?在什么场景下应该使用Zookeeper?

回答

小字辈

核心区别:CAP选择

特性EurekaZookeeper
CAPAP(可用性+分区容错性)CP(一致性+分区容错性)
一致性最终一致性强一致性(ZAB协议)
设计目标服务发现(高可用优先)分布式协调(一致性优先)

Eureka(AP原则)

  • 节点对等,无主从之分
  • 各节点互相注册,心跳同步服务列表
  • 网络分区时,各节点保留自己的服务列表继续工作(可用性优先)
  • 可能不一致(A节点有服务S,B节点没有)
  • 自我保护机制:心跳丢失超过85%时不再剔除服务(防止误杀)

Zookeeper(CP原则)

  • Leader-Follower架构,写请求由Leader处理
  • 网络分区时,如果Leader在少数派分区,整个集群停止写服务(一致性优先)
  • 使用ZAB(Zookeeper Atomic Broadcast)协议保证强一致性
  • 服务注册是临时节点,会话超时则自动剔除

为什么Spring Cloud推荐Eureka

  1. 服务发现对可用性要求高于一致性(宁可返回旧的服务列表,也不能让服务不可用)
  2. Eureka天然适合微服务注册中心(节点对等,运维简单)
  3. Zookeeper的Leader选举期间服务不可用,不适合高可用的注册中心
  4. Eureka的自我保护机制在网络故障时仍有服务能力

何时使用Zookeeper

  • 分布式锁、分布式协调、配置管理(强一致性需求)
  • 服务数量较少且对一致性要求高的场景
  • Dubbo老版本默认使用Zookeeper(Dubbo支持多种注册中心)

当前趋势:Nacos支持AP/CP切换,比Eureka功能更全面,逐渐成为主流。