CAP设计原则不同:
Eureka遵守AP,Zookeeper遵守CP(C:强一致性,A:高可用,P:分区容错性,三者只能选其二,高并发下P必选);
P必须选的的原因:
当前网络硬件肯定会出现延迟丢包的问题,在分布式部署中,分区容错性是我们必须要选择的;
面试例题:
针对淘宝京东等,双11活动的情况下,只能选AP,不能选CP;因为如果只保持数据的一致性,可能导致网站瘫痪,用户会无法使用,但是如果选择可用性,数据上可能有偏差,但是会保障用户的使用。
具体专业答案如下(网络波动下两者的处理对比):
Zookeeper | Eureka |
当网络出现故障时,剩余zk集群会发起投票选举新的leader,但是此过程会持续30~120s,此过程对于高并发来说十分漫长,会导致整个注册服务的瘫痪,这是不可容忍的。 | 自我保护机制:在15分钟内85%的节点都没有心跳,则注册中心 会认为客户端与之出现了网络故障,则会进入自动保护模式。1.Eureka不会移除没有收到心跳的服务;2.新的服务仍能在服务端注册,但是暂时不会被同步到其他节点上直到网络稳定。这是其高可用的体现 |
结论:
Eureka可以很好的应对网络故障导致部分节点失去连接的情况,而不会像zookeeper那样导致整个注册服务系统的瘫痪。