目录
zookeeper的由来
说到这里,zookeeper是为了解决分布式集群带来的问题,就得说说什么是分布式?分布式集群带来了哪些问题?zookeeper解决了什么问题?
1.什么是分布式?分布式两个核心:任务分解和节点通信!任务分解即:项目的业务拆分成多个子系统,部署在不同的服务器上。节点通信即各个子系统部署节点之间的通信。
2.分布式和集群带来的问题?说分布式是把项目的业务拆分成多个子系统,因为各个子系统依然要保证其高可用性,所以会提到集群!
小结:由此得出结论,分布式高可用架构缺少一个分布式协调机制!由此zookeeper应运而生,来解决分布式带来的问题
zookeeper是什么?设计目的?
1.zk是什么?
2.zk设计目的?
1. 做注册中心(解决节点通信问题)
2. 分布式锁、配置文件中心(解决资源共享问题)
zookeeper带来的问题
zk不是完美的,它在解决问题的同时也会产生问题,为了更好地使用zk,则需要解决其中一些问题才可用!
既然zookeeper是在分布式环境下提供服务的,那么它必须要解决的问题就是单点问题,因此zookeeper是一个主备的结构。zookeeper 存在leader,follower,observer三种角色,这三种角色在实际服务集群中都是服务节点。由以上三种角色的介绍可知,zookeeper中所有请求都是交给leader处理的,因此,如果leader挂了,zookeeper就无法再提供服务,这就是单点问题。
所幸有了集群在leader挂了之后,follower能够通过选举成为新的leader。 那么问题来了,follower是如何被选举成为新的leader的?新的leader又是如何保证数据的一致性的?这些问题的答案都在于zookeeper所用的分布式一致性协议ZAB。
ZAB协议是为zookeeper专门设计的一种支持奔溃恢复的原子广播协议。虽然它不像Paxos算法那样通用通用,但是它却比Paxos算法易于理解。
小结:以上zk带来的单点问题,数据一致性问题及其对应解决方案的简单介绍!
zookeeper有什么?
将从zk本身,及它的集群两方面来讲解
zk特性
小结: zk本身的数据模型决定了znode节点的特性,Watcher机制通过监控znode的会话状态来动态感知节点上下线!
ZK主从集群
上面提到了为什么要用集群,以及集群带来的问题及解决方案,下面就详细介绍下是如何解决的。首先zk安装就不讲了,安装3台集群,配置集群,怎么配置呢?
第一个port是数据通信的端口,第二个port是用来节点间重新选举leader的端口!关于myid就先不详说,下面会介绍。配置完之后一个基本的集群就产生了,启动三台zookeeper,就会设计leader的选举,那么就要讲下ZAB协议啦!
ZAB协议
崩溃恢复和原子广播,上面提过leader进入崩溃恢复的状态会进行重新选举leader,同步节点之间的状态达到数据一致。那么问题来了,什么时候leader会进入崩溃恢复状态?什么情况算是数据达到一致?
小结:
今天还是讲了不少东西的,什么是分布式,分布式带了的问题,zookeeper解决分布式带来的问题,zookeeper的高可用性及其带来的问题,ZAB协议解决zookeeper集群所带来的问题,简单讲了下关于ZAB协议,本篇博客就先讲到这里,下篇博客会重点讲ZAB协议!敬请期待,喜欢就请给小编点个赞哦!
ps:如果不能为什么要有分布式的,自行补充0!