zookeeper是⼀个伪分布式应⽤程序提供的⼀个分布式开源协调服务框架。是Google的Chubby的⼀个开源实现,是Hadoop和Hbase的重要组件。主要⽤于解决分布式集群中应用系统的⼀致性问题。
提供了基于类似Unix系统的目录节点树方式的数据存储。
可用于维护和监控存储数据的状态的变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理
提供的功能包括:配置维护、域名服务、分布式同步、组服务等
Zookeeper 的核心是原子广播机制,这个机制保证了各个 server 之间的同步。实现这个机制的协议叫做 Zab 协议。Zab 协议有两种模式,它们分别是恢复模式和广播模式
Zookeeper 作为分布式系统协调者和管理者,承担着联结分布式系统的各组件来组成一个完整服务的职责
功能
1. 管理系统中独特的/统一的信息:
一个分布式系统的各节点可能需要一个规范的、各节点的唯一的命名(例如节点名、CPU编号等),ZK可以实现这个的应用场景。
各个节点也会有一致的信息,例如每个节点的主配置信息。为了管理方便,新加入的节点也需要快速同步这些信息。使用ZK可以方便的做到。
2. 集群状态监控和通知:
分布式系统中的每个节点需要知道整个系统的状态、知道系统中每个节点的状态:当有新节点加入时它需要知道、当有节点出现故障时它需要知道、当有节点退出时它需要知道。ZK就是这样一个“通知工具”。
ZooKeeper数据一致性
ZooKeeper是高性能、可扩展的,为应用提供了以下的数据一致性(每个server保存⼀份相同的数据副本,client⽆论连接到哪个server,数据都是⼀致的)保障:
1)顺序一致性: 来自客户端的更新将严格按照客户端发送的顺序处理;
2)原子性: 更新或者成功或者失败,不存在部分成功或者部分失败的场景;
3)单一视图: 无论客户端连接到哪个服务器,看到的都是一样的视图;
4)可靠性: 一旦一个更新生效,它将一直保留,直到再次更新;
5)实时性: 在⼀定时间范围内,client能读到最新数据
ZooKeeper有哪些需要配置的属性?
tickTime: ZooKeeper运行的基本时间单元
dataDir: 存储持久数据的本地文件系统位置
clientPort: 监听客户端连接的端口(常用的端口是2181)
数据管理功能:
创建节点: create /aaa ‘ppppp’
查看节点下的子节点: ls /aaa
获取节点的value: get /aaa
修改节点的value: set /aaa ‘mmmmm’