分布式理论
分布式架构,将服务模块部署到不同的机器上,来缓解系统压力。在同一台机器上,不会存在数据的一致性等问题。但是由于分布式中,服务部署在不同机器上,网络原因是不可抗因素。
CAP,一致性、可用性、分区容错性。必须要保证由于故障导致某些节点断掉以后,每个网络区域都能够对外提供服务,所以分区容错性是前提。而要保证高可用性,数据的一致性就得不到保证;要保证一致性,那么高可用性必然有所影响。
eureka和zookeeper可以作为分布式系统中的注册中心。注册中心负责服务的注册与查找,服务提供者会在注册中心注册自己的服务,消费者向注册中心订阅自己的服务,而注册中心就是一个服务列表。
两者比较:
eureka保证了CP,即可用性,在eureka中,每个节点都是平等的,当一个节点挂掉后,也不会影响正常工作,但是查询到的数据不一定是最新的。并且eureka有自我保护机制,当有85%的节点都没有正常工作时,会判定会注册中心网络故障。
zookeeper保证了AP,即一致性,在zookeeper中,节点有三种角色,leader、follower、observer,leader即为领导者,提供读和写的服务,负责投票的发起和决议,更新系统的状态;follower即跟随者,主要负责读服务,如果遇到写服务,则会将请求转发给leader,并且可以参加选举投票;observer和follower一样,但是不参加选举投票。如果leader挂掉,会重新投票选举出新的leader。并且在整个过程中,系统是不可用的。但是保证了数据的一致性。
一致性
如何保证一致性。有几种方案。