Zookeeper简单理解


ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题
1.1 Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务。包含一个简单的原语集,分布式应用程序可以基于她实现同步服务,配置维护和命名服务等。
1.2 为什么使用zookeeper
1)大部分分布式应用需要一个主控、协调或控制器来管理物理分布的子进程(如资源、任务分配等)
2)大部分应用需要开发私有的协调程序,缺乏一个通用的机制。
3)协调程序的反复编写浪费,且难以形成通用伸缩性好的协调器
4)zookeeper 提供通用的分布式锁服务,用以协调分布式应用。
1.3 zookeeper使用
»Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等.
»HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.
1.4 zookeeper的特性
»Zookeeper是简单的
»Zookeeper是富有表现力的
»Zookeeper具有高可用性
»Zookeeper采用松耦合交互方式
»Zookeeper是一个资源库
1.6 zookeeper的数据模型
»层次化的目录结构,命名符合常规文件系统规范
»每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
»节点Znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点
»Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本
»客户端应用可以在节点上设置监视器
»节点不支持部分读写,而是一次性完整读写
1.7 zookeeper的节点
»Znode有两种类型,短暂的(ephemeral)和持久的(persistent)
»Znode的类型在创建时确定并且之后不能再修改
»短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点
»持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除
»Znode有四种形式的目录节点,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL
1.8 zookeeper的角色
»领导者(leader),负责进行投票的发起和决议,更新系统状态
»学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票
»Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度
»客户端(client),请求发起方
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章