【选型】为什么服务发现使用Eureka,而不是Zookeeper
首先介绍下cap原理,可以参考:。
P:Partition tolerance,网络分区容错。类似多机房部署,保证服务稳定性。
A: Availability,可用性。
C:Consistency ,一致性。
CAP定理:CAP三个属性对于分布式系统不同同时做到。如AP/CP/AC。
再来看 Eureka 和 Zookeepr 区别:
-
Zookeeper是CP,分布式协同服务,突出一致性。对ZooKeeper的的每次请求都能得到一致的数据结果,但是无法保证每次访问服务可用性。如请求到来时,ZooKeeper正在做leader选举,此时不能提供服务,即不满足A可用性。
-
Eureka 是AP,高可用与可伸缩的Service发现服务,突出可用性。相对于Zookeeper而言,可能返回数据没有一致性,但是保证能够返回数据,服务是可用的。
参考:
1.cap原理:http://www.ruanyifeng.com/blog/2018/07/cap.html
2. http://www.heartthinkdo.com/?p=1933
3. https://medium.com/knerd/eureka-why-you-shouldnt-use-zookeeper-for-service-discovery-4932c5c7e764
4. http://dockone.io/article/78