什么是ZooKeeper
官网给于解释是:
centralized service 集群服务
maintaining 维护
意思就是ZooKeeper是一个为 维护配置信息,域名维护, 提供分布式同步以及集体服务的集群服务系统. 所有的这些服务通常被用于其他分布式应用上.每次他们用于实现 大量关于 修复不可避免的bugs和线程竞争 的工作.由于实现这些服务的困难,最初的应用程序通常会对它们进行节省,这使得它们在出现变化和难以管理时变得脆弱.即使在正确的情况下,这些服务的不同实现在应用程序部署时也会导致管理复杂性。
百度给出的解释是:
原理
ZooKeeper是以Fast Paxos算法为基础的,paxos算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader,只有leader才能提交propose,具体算法可见Fast Paxos。因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。
Zookeeper 的基本运转流程
1.选举leader
2.同步数据
3.选举leader过程中算法有很多,但要达到的选举标准是一致的.
4.leader要具有最好的执行权
5.集群中大多数的及其得到响应并接受选出的leader
架构
功能
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一域名服务、状态同步服务、集群管理、分布式应用配置项的管理等
数据结构
Zookeeper这种数据结构有如下这些特点:
1.每个子目录下如NameService都被称作znode这个znode是被它所在的路径唯一标识,如Server1这个znode的表示为NameService/server1
2.znode可以有子节点目录,并且znode可以存储数据,注意EPHEMERAL
3.znode是有版本的,每个znode中存储的数据可以有多个版本,也就是一个访问路径可以存储多份数据
4.znode可以使临时节点,一旦创建这个znode的客户端与服务器失去联系,这个znode也将自动删除,Zookeeper的客户端和服务端通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个链接状态称为session如果znode是临时节点,这个session失效.znode也就删除
znode可以被临时控制,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个是Zookeeper的核心特性,Zookeeper的很多功能是居于这个特性实现的