1 简介
ZooKeeper是用于分布式应用程序的分布式,开放源代码协调服务。它公开了一组简单的原语,分布式应用程序可以基于这些原语来实现用于同步,配置维护以及组和命名的更高级别的服务。它的设计易于编程,并使用了按照文件系统熟悉的目录树结构样式设置的数据模型。它以Java运行,并且具有Java和C的绑定。
众所周知,协调服务很难做到。它们特别容易出现诸如比赛条件和死锁之类的错误。ZooKeeper背后的动机是减轻分布式应用程序从头开始实施协调服务的责任。
官网:https://zookeeper.apache.org/
2 集群结构
类似其他分布式工具,Zookeeper是支持复制的,由一系列的Server组成,Client与Server相连以获取相关的服务。
集群结构说明:
集群数量为奇数,并且超过N+1台,只要集群中大多数节点都处于可用状态,那么集群就是可用的,集群中的服务器角色有:
1)领导者:复杂投票的发起和决议,并更新系统状态
2)学习者:包括跟随者和观察者,从Leader处获取最新的系统状态
3)Follower用于接受客户端请求,并向客户端返回结果,在选举过程中参与投票
4)Observer观察者可以接受客户端请求,将写请求转发给Leader,但是不参与投票,只同步状态。它的目的是为了扩展系统,以提高读取速度。
集群中由一个Leader节点和N个Follower节点组成,所有的Server之间能彼此通信,并且在各自内存中维护了状态图,与之一致的事务日志和快照位于持久化存储中。这一点类似Redis的Sentinel模式,它们都具有高度的自治能力,一旦Leader节点不可达,则自动完成新Leader的选举并恢复服务。
3 数据模型和命名空间
Zookeeper提供的命名空间与标准的文件系统非常类似,一个名称就是一个由“/”分割的路径序列,其层级结构为:
4 安装
4.1 单节点
1 下载:
https://zookeeper.apache.org/
https://zookeeper.apache.org/releases.html
需要安装jdk。zookeeper是java写的。
《centos6.6 安装jdk 1.8.0_51》:https://clevercode.blog.youkuaiyun.com/article/details/109160568
# mkd