Zk/Eureka/Nacos简单对比
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。