Eureka与Zk

一、先说说CAP

  C(一致性)、A(高可用)、P(分区容忍)

  1.  一致性

    读操作获取到最新的写结果

  2. 高可用

    非故障节点在用户可接受的时间内返回可以接受的结果(不接受超时或错误)

  3. 分区容错

    部分服务可以不可用,但系统必须正常对外提供服务

  三者不可得兼,但分布式系统必须保证分区容错P,所以只能是CP或者AP

二、zk(CP)

  zk保证了数据一致性,意味着丢失了可用性。

  线上的机器网络不稳定是常有的事,master在宕机后,zk将花很长的时间(30s~120s)

用在重新选举上,并且在选举期间,zk集群不可用。

  2n+1台server,只要有n+1台就可以使用。也就是说,少于一半集群就无效了

三、Eureka(AP)

  Eureka集群的各个节点都是平等的,通过长连接来维持心跳。

  几个节点挂掉后,不会影响正常的节点。客户端发现节点连接失败,会自动切换到其他

正常节点,只要集群中有一个节点还在,就能保证服务可用(可用性),只不过数据可能不

是最新的(不保证一致性)。此外,Eureka还提供了自我保护机制,如果在15分钟内超过85%

的节点没有心跳,Eureka会认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:

  1. 不会注册列表中移除因为长时间没有心跳而过期的服务

  2. 依然会接受新的注册请求,只不过不会同步到其他节点

  3. 网络恢复后,当前实例新的注册信息将同步到其他节点

  

每一步脚印都要扎得深一点!
原文地址:https://www.cnblogs.com/bloodthirsty/p/12696274.html