Zookeeper:
ZooKeeper的介绍:是一个分布式的协调服务框架,可以解决分布式环境常见的问题:集群管理,同一命名服 务,分布式锁等。
Zookeeper的作用:1.集群的管理问题,能够通过一定的机制来检测到集群中节点的变化状态,是工作还是宕机。2。集群的统一配置文件3.实现主备切换,避免单点问题4.统一的命名问题5.分布式锁。
Zookeeper单机模式的安装:准备虚拟机,关闭防火墙—安装并配置jdk1.6以上—上传zookeeper安装包—解压安装包—进入zookeeper目录下的conf目录。有一个zoosample.cfg文件,复制一份命名为zoo.cfg—进入bin目录启动zookeeper zkService.sh start —进入客户端操作zookeeper zkCli.sh
Zookeeper集群的搭建::准备虚拟机,关闭防火墙—安装并配置jdk1.6以上—上传zookeeper安装包—解压安装包—进入zookeeper目录下的conf目录。有一个zoosample.cfg文件,复制一份命名为zoo.cfg—编辑zoo.fig—创建一个tmp目录下创建一个文件myid 编辑文件,添加当前的节点编号—进入bin目录开启zookeeper集群
Zookeeper的选举机制:分两个阶段
- 数据恢复阶段,在这个阶段,每台zk服务器要找到自己拥有的最大的事务id(从配置的数据目录中进行恢复)即找到自己拥有的最新的事务
- 选举阶段,每台zk服务器都会提交一份选举协议
自己拥有的最大事务id
自己的选举id(myid文件里的数据)
逻辑时钟值,这个值是确保多台zk服务器在同一轮选举中
当前zk服务器的状态:Looking选举状态 leader领导状态 follower从属状态 observer观察者状态 - 选举过程:首先比较最大事务id 谁大谁leader。因为事务id越大,拥有的数据越新
如果事务id选不出来,就比较选举id,谁大谁leader
ZAB协议:为Zookeeper专门设计的一种支持崩溃恢复的原子广播协议。
包括两种基本的模式:消息原子广播(保证数据一致性)
崩溃恢复(防止单点问题)
协议的好处:对于事务的提交要满足过半性,好处在于解决zk服务器之间的同步阻塞问题,而且底层支持崩溃恢复,避免leader的单点故障问题,ZAB协议可以确保zk服务器集群的数据一致性,即客户无论从哪台zk服务器读取,数据都是一致的