Eureka 和 Zookeeper 的区别:
Eureka 满足 AP(服务可用性和容错性), Zookeeper 满足 CP(数据一致性和容错性)
Zookeeper 满足 CP, 数据一致性, 服务的容错性. 数据在各个服务间同步完成后才返
回用户结果, 而且如果服务出现网络波动导致监听不到服务心跳, 会立即从服务列表中
剔除, 服务不可用.
Eureka 满足 AP, 可用性, 容错性. 当因网络故障时, Eureka 的自我保护机制不会立即
剔除服务, 虽然用户获取到的服务不一定是可用的, 但至少能够获取到服务列表. 用户
访问服务列表时还可以利用重试机制, 找到正确的服务. 更服务分布式服务的高可用需
求.
Eureka 集群各节点平等, Zookeeper 集群有主从之分.
1. 如果 Zk 集群中有服务宕机,会重新进行选举机制,选择出主节点, 因此可
能会导致整个集群因为选主而阻塞, 服务不可用.
2. Eureka 集群中有服务宕机,因为是平等的各个服务器,所以其他服务器不
受影响.
Eureka 的服务发现者会主动拉取服务, ZK 服务发现者是监听机制:
1. Eureka 中获取服务列表后会缓存起来, 每隔 30 秒重新拉取服务列表.
2. Zk 则是监听节点信息变化, 当服务节点信息变化时, 客户端立即就得到
通知。