简介
ZooKeeper是一个分布式的、开放源码的分布式协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。
功能
- 作为配置信息的存储的中心服务器
- 命名服务
- 分布式同步
- 分组服务
zookeeper使用
zookeeper的使用流程如下:
- 确保有所选语言的sdk,理论上github上第三方的库有一些,仔细筛选一下应该可以用。
- 调用zookeeper接口连接zookeeper服务器。
- 注册自身服务
- 通过watcher获取监听服务的状态
- 服务提供者需自行保持与zookeeper服务器的心跳。
Zookeeper特点
- 顺序一致性 从同一个客户端发起的事务请求,将会严格按照其发起顺序被应用到zookeeper中
- 原子性 所有事物请求的处理结果在整个集群中所有机器上的应用情况是一致的,要么整个集群中所有机器都成功应用了某一事务,要么都没有应用某一事务,不会出现集群中部分机器应用了事务,另一部分没有应用的情况。
- 单一视图 无论客户端连接的是哪个zookeeper服务端,其获取的服务端数据模型都是一致的。
- 可靠性 一旦服务端成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,直到有另一个事务又对其进行了改变。
- 实时性 一旦服务端成功的应用了一个事物,那客户端立刻能看到变更后的状态
Zookeeper使用场景
- 名字服务
- 配置管理
- 集群管理
- 集群选举
- 分布式锁
- 队列管理
- 消息订阅
Zookeeper节点状态
- LOOKING:寻找Leader状态,处于该状态需要进入选举流程
- LEADING:领导者状态,处于该状态的节点说明是角色已经是Leader
- FOLLOWING:跟随者状态,表示Leader已经选举出来,当前节点角色是Follower
- OBSERVER:观察者状态,表明当前节点角色是Observer,Observer节点不参与投票,只负责同步Leader状态
Zookeeper数据类型
- Zookeeper的数据结构非常类似于文件系统。是由节点组成的树形结构。不同的是文件系统是由文件夹和文件来组成的树,而Zookeeper中是由Znode来组成的树。每一个Znode里都可以存放一段数据,Znode下还可以挂载零个或多个子Znode节点,从而组成一个树形结构。
- 节点类型
- 持久化节点(PERSISTENT):znode节点的数据不会丢失,除非是客户端主动delete
- 持久化顺序节点(PERSISTENT_SEQUENTIAL):znode节点会根据当前已经存在的znode节点编号自动加1
- 临时节点:临时节点(EPHEMERAL):当session中断后会被删除
- 临时顺序节点(EPHEMERAL_SEQUENTIAL):znode节点编号会自动加 1,当session中断后会被删除
- ContainerNode:3.5.3版本引入,用来解决分布式锁场景下产生大量孤儿节点的问题(搭配PERSISTENT使用)
- TTLNode:3.5.3版本引入,当在TTL时间内节点没有被修改并且没有子节点将自动被删除(搭配PERSISTENT、PERSISTENT_SEQUENTIAL使用)
相关导航
暂无评论...