CAP定理
C:consistency,一致性,在分布式系统中所有的数据备份,在同一时间段拿到的都是同样的数据。(等同于所有的节点访问同一份最新的数据副本)
A:Availability,可用性,在集群总一部分节点故障后,集群整体是否还能响应客户端的读和写请求。(通俗点说,当一个计算机宕机了,整个系统还可以用)
P:Partition tolerance,高可用性,一个节点崩了,并不影响其它节点(100个节点,挂了几个,不影响服务,越多机器越好)
总结:最多实现两点,不可能同时兼顾。
三个注册中心
1、Eureka
Eureka中没有使用任何的数据强一致性算法保证不同集群间的Server的数据一致,仅通过数据拷贝的方式争取注册中心数据的最终一致性,虽然放弃数据强一致性但是换来了server的可用性,降低了注册的代价,提高了集群运行的健壮性。
2、consul
基于Raft算法,Consul提供强一致性的注册中心服务,但是由于Leader节点承担了所有的处理工作,势必加大了注册和发现的代价,降低了服务的可用性。通过Gossip协议,Consul可以很好地监控Consul集群的运行,同时可以方便通知各类事件,如Leader选择发生、server地址变更等。
3、zookeeper
基于zab协议,zookeeper可以用于构建具备数据强一致性的服务注册与发现中心,而与此相对地牺牲了服务的可用性和提高了注册需要的时间。