https://www.cnblogs.com/felixzh/p/5869212.htmlhtml
https://www.w3cschool.cn/zookeeper/zookeeper_overview.htmlnode
1、zookeeper定义linux
zookeeper是一个针对大型分布式系统的可靠协调系统。服务器
1.1 它的功能包括:配置维护,名字服务,分布式同步、组服务等。数据结构
1.2 它的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。分布式
2、zookeeper的特色性能
一、 最终一致性:为客户端展现同一视图。server
二、可靠性:若是一条消息被一台服务器接受,那么它将被全部服务器接受。htm
三、实时性:zookeeper不能保证两个客户端同事获得刚刚更新的数据,若是须要更新数据,应该在读数据以前调用sync()接口。blog
四、等待无关(wait-free):慢的或者失效的client不干预快速的client的请求。
五、原子性:更新操做要么成功,要么失败,没有中间状态。
六、顺序性:对于全部server,同一消息发布顺序一致。
3、zookeeper角色
4、leader选举
一、leader选举采用paxos协议
二、paxos核心思想是:当多数server写成功,那么数据则写入成功。
若是有3个服务器,那么有两个写入成功,则数据写入成功。
若是有4个或者5个服务器,有3个写成功,则数据写成功。
三、server数量通常为奇数,如三、五、7等。
若是有3个服务器,最多容许1个挂掉。
若是有4个服务器,最多一样容许3个挂掉。
四、zookeeper 的写入操做。
5、zookeeper数据模型。
一、zookeeper 提供一个层次化目录结构,命名规范符合常规linux文件目录命名规范。
二、每一个节点在zookeeper中叫作znode,而且有一个惟一的路径标识。
三、znode有两种数据结构,短暂的(ephemeral)和持久的(persistent),节点包含数据和子节点。
四、znode数据包含多个版本。
五、客户端能够在节点上设置监视器(watch)。
六、znode不支持部分读写,须要一次性所有执行完成。
七、znode类型在建立时肯定,并不能修改。
八、znode有四种类型目录节点,persistent, persistent_sequential, ephemeal, ephemeal_sequential
6、zookeeper统一命名服务。
一、在分布式环境下,常常须要对应用/服务统一命名,便于识别不通服务。
1.1 相似于ip和域名的关系。
1.2 经过名称来获取资源或者服务的地址信息。
2 按照层次组织服务/应用名称。
2.1 它能够将服务名称以及地址名称写到zookeeper中,客户端经过服务名称获取服务列表。、
7、zookeeper--配置管理。
一、 分布式环境下,须要常常配置文件管理和同步。
1.1 y一个集群中,全部的节点配置和信息是一致的。
1.2 咱们对配置文件修改后,须要尽快同步到各个节点中。
2 配置管理能够交给zookeeper实现。
2.1 可将配置文件写入到一个znode中。
2.2 各个节点监听这个znode。
2.3 一旦znode的配置文件被修改,zookeeper将通知到其它各个znode
8、zookeeper集群管理。
一、分布式环境中,咱们须要实时掌握每一个节点的状态。
1.1 可根据节点状态实时作出一些调整。
二、k可交由zookeeper实现。
2.1 可将zookeeper节点信息写入到一个znode中。
2.2 监听这个节点的实时变化。
9、 zookeeper分布式通知与协调。
一、分布式环境中,一个服务常常须要知道他的子服务状态,
1.1 namenode需知道各个DataNode的状态。
1.2 resource manager须要知道nodemanager状态
二、zookeeper实现心跳监测机制,实时信息推送,至关于一个发布/订阅系统。
10、zookeeper分布式锁。
一、zookeeper是强一致性的
二、实现锁的独占性。
三、控制锁的时序。
11、分布式队列
分布式队列有两种
一、当一个队列所有都聚齐时,这个队列才能够用,不然这个队列会一直等全部成员到达,这种成为同步队列。
1.1 当一个job由全部的task组成时,全部的任务完成后,job才运行。
1.2可为job建立一个/job,而后在该目录下,为每一个完成task建立一个临时的znode,当临时节点的目录数达到task总数时,则job表示完成。
二、队列实现FIFO模式,实现生产者和消费者模型。