Zookeeper 介绍
Zookeeper是软件世界的一名管理者,它被用来提供分布式环境下的协调服务, Yahoo公司使用JAVA 语言开发了Zookeeper,它是Hadoop项目中的子项目,基于Google的Chubby 的开源实现,在Hadoop,HBase,Kafka等技术中充当了核心角色,它的目标就是将那些复杂且容易出错的分布式一致性服务加以封装,形成一个高效且可靠的服务,并为用户提供了一系列简单易用的接口。
Zookeeper 官网 :http://zookeeper.apache.org/
Zookeeper 一般以集群的方式对外提供服务,一个集群包括多个节点,每个节点对应一个zookeeper服务器,所有的节点共同对外提供服务,整个集群对分布式数据一致性提供了全面的支持,具体包含如下五个特性:
1.顺序性
好比一个队列,先进先出,一个个排队
2.原子性
和事务的原子性一致
3.单一性
Zokeeper 各个节点间 不可能出现两种不一样的数据状态
4.可靠性
一旦服务器数据发生变化,就会立即被储存起来。
5.实时性
服务器的请求被处理,客户端能够及时得到最新数据状态
Zookeeper 树状模型
Zookeeper 内部有一个树状的内存模型,类型文件系统,有若干个目录,每一个目录都有自己的文件,只是在Zookeeper中把这个统称为ZNode ,每个ZNode有对应的路径及其包含的数据,ZNode 由Zookeeper 客户端来创建,客户端建立连接后, 服务端会创建一个session, 客户端所有操作都将在这个sessiuon(会话)中进行
ZNode 有四类节点:
Persistent(持久节点) 会话结束后,该节点不会删除
Persistent Sequential(之久顺序节点) 会话结束后,该节点不会删除 且节点名中自带自增后缀
Ephemeral(临时节点) 会话结束被删除
Ephemeral Sequentia(临时顺序节点) 会话结束被删除, 且节点名中自带自增后缀
Persistent AND Persistent Sequential 才能有子节点