Zookeeper[8]是一个开放源码的分布式应用程序协调服务,是为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、命名服务、分布式同步、组服务等。Zookeeper是用Java语言开发的,提供Java和C语言的客户端API。
Zookeeper的集群模式为2n+1[9]个服务(奇数),只允许n个失效。Zookeeper集群服务有Leader、Follower、Observer三个角色。
■Leader:提供写服务,针对Zookeeper进行数据更新相关操作。
■Follower:提供读服务,Leader宕机后会在Follower中重新选举新的Leader。
■Observer:是一种新型的Zookeeper节点,不参与投票,只是简单地接收投票结果,增加再多的Observer,也不会影响集群的写性能。除了这个差别,其他方面和Follower基本上一样。
Zookeeper结构是由znode节点组成的树形结构。格式类似分层的文件目录树形式,每个节点可以存放数据,也可以有子节点。节点的访问路径为绝对路径,不存在相对路径。
znode节点根据存活时间,分为持久节点和临时节点。节点的类型在创建时就确定下来,并且不能改变。
■持久节点的存活时间不依赖于客户端会话,只有客户端在显式执行删除节点操作时,节点才消失。(https://www.xing528.com)
■临时节点的存活时间依赖于客户端会话,当会话结束,临时节点将会被自动删除(当然也可以手动删除临时节点)。ZooKeeper中临时节点不能拥有子节点。 Zookeeper的应用场景是:
■分布式命名服务:按名称标识集群中的节点。
■数据发布与订阅:应用启动时主动获取配置信息,并在节点上注册一个观察者(watcher),每次配置更新都会通知到应用。
■分布式通知/协调:不同的系统都监听同一个节点,一旦有了更新,另一个系统能够收到通知。
■分布式锁:Zookeeper能保证数据的强一致性,用户任何时候都可以相信集群中每个节
点的数据都是相同的。
■集群管理:服务加入集群时创建一个节点,写入当前服务的状态。监控父节点的应用会收到通知,进行相应的处理。离开时删除节点,监控节点的应用同样也会收到通知。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
