Zookeeper是开源的分布式应用程序协调服务,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置文件的管理、集群管理、同步锁、leader 选举、队列管理等。zookeeper集群通过paxos协议变种zab来保持的。

zookeeper的主要角色为:首领-leader,跟随者-follower,观察者-observer

leader

leader是zookeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求(事务性更新和非事务性查询)

对于exists,getData,getChildren等非事务性查询请求,zookeeper服务器直接本地处理,每个服务器的命令空间是一致的。对于create,setData,delete等事务性更新请求,需要统一转发给leader处理,leader保证2-阶段或者3阶段来处理请求。

follower

follower响应非事务性查询,还可以处理leader的提议,并在leader提交该提议时在本地提交。leader和follower构成ZooKeeper集群的法定人数,参与新leader的选举、响应leader的提议。

observer

observer只响应非事务性查询,observer和follower区别在于:observer不参加选举也不响应提议;observer不需要将事务持久化到磁盘,一旦observer重启,需要leader全量同步命令空间。

如果做分机房集群,一个机房可以全部是leader follower, 另外一个机房是 Observer,主机房可以内部完成选举恢复不需要跨机房,副机房可以让observer全部投入读服务。

Znode 种类

临时节点,该生命周期依赖于创建它们的会话,一旦会话结束,临时节点将会被自动删除,当然也可以手动删除。虽然每个临时的Znode都会绑定到一个客户端,但它们对所有的客户端还是可见的。另外,需要注意的是临时节点不允许拥有子节点。

永久节点,该生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,它们才能被删除。

  1. 永久节点
  2. 临时节点  (不可在拥有子节点) :  适用于心跳,服务发现等场景
  3. 永久序号节点 : 分布式锁、分布式选举等场景
  4. 临时序号节点   (不可在拥有子节点)
  5. 持久TTL节点
  6. 持久TTL顺序节点
  7. 容器节点

zookeeper 中leader怎么配置_子节点