zookeeper是一个分布式协调服务,用在协调多组件间的通信,如hbase regisonserver间的通信
如 kafka broker间的通信存活心跳等,都是通过zk,
zk的数据节点znode有四种类型
1持久性节点,除非手动删除,否则会一直存在
2 临时节点,用于和客户端绑定,一旦客户端退出,此节点就会消失从而出发watch监听机制(一次性的触发后失效,在链接,在注册),大部分都是临时节点
3 持久顺序节点,只是增加了顺序属性
4 临时顺序节点,同上
zk可以是多节点分布式的,因而有了几个角色概念
leader :事物请求的唯一调度和处理者保证集群事物处理的顺序性,集群内部各服务的调度者
follower:处理客户端的分事物请求,参与leader选举投票
observer:3.3.0以后的版本引入了一个服务器角色,在不影响集群事物处理能力的基础上提升集群的非事物处理能力
zk四种状态,looking寻找leader,following跟随者状态,leading领导者状态,observeing观察者状态
有序性是zk中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳称之为zxid (zookeeper transaction Id)
重点leader选举:leader选举是保证分布式数据一致性的关键所在,当zk中有一台出现以下两种情况之一时,就会进入leader选举
1 服务器初始化启动集群初