为什么说zookeper实现的是CP(一致)原则,而eureka实现的是AP(可用)原则
zookeper
zookeper的一致原则是在于,他在数据同步的时候,是不允许外部进行读写的,由此实现的强一致性。而分区容错性是必须要保证的,同时由于zookeeper有master节点的存在,在master节点down掉后,集群会进行选举,这个过程会消耗相当长的一段时间,这个时间集集群对外是不可用的,即所有服务都无法访问,所以说zookeeper牺牲掉了可用性,所以zookeper实现的是CP原则。
eureka
而eureka集群的各个节点都是平等的,不管哪个节点down掉都是一样的,不会影响其他节点的工作,只要有一台eureka节点的存在,就能对外提供服务。从而保证了可用性。只是查到的数据可能不是最新的。同时eureka还有一种保护机制,在15分钟内超过85%的节点都没有正常的心跳,那么eureka就认为客户端与注册中心之间出现了网络故障,此时会出现一下情况:
1、Eureka不再从注册中心列表中移除长时间没有收到心跳而应该过期的服务。
2、Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点上(保证当前节点仍然可用)
3、当网络稳定时,当前实例新的注册信息会被同步到其他节点中。