Zk/Eureka/Nacos简单对比

1,068 阅读1分钟

CAP

  • ZooKeeper:CP
  • Eureka:AP
  • Nacos:CP/AP

选举

  • ZooKeeper:
    • 协议:ZAB;
    • 实现:FastLeaderElection(WorkerReceiver/WorkerSender)
    • 通信:Socket。
  • Eureka:
    • 无选举,不需要Leader,各节点相互复制,通过InstanceInfo.lastDirtyTimestamp确定是否覆盖本地数据。
    • 实现:ApplicationResource/PeerEurekaNode/PeerAwareInstanceRegistryImpl等。
    • 通信:REST,基于Jersey实现;
  • Nacos:
    • 协议:Raft;
    • 实现:JRaftProtocol,JRaftServer中使用sofa-jraft等实现;
    • 通信:sofa-jraft使用sofa-bolt进行通信,sofa-bolt是基于Netty实现的一个RPC框架。

客户端通信

  • ZooKeeper
    • NIO: NIOServerCnxnFactory,默认;
    • Netty: NettyServerCnxnFactory。
  • Eureka: REST,基于Jersey实现;
  • Nacos: HTTP。