ZooKeeper是什么

ZooKeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。

ZooKeeper可以邦正以下一致性特性

顺序一致性

从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到ZooKeeper中去

原子性

所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,要么都成功,要么都不成功

单一视图

无论客户端连接的是哪一个ZooKeeper服务器,其看到的服务端数据模型都是一致的

可靠性

一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一致保留下来,除非有领一个事务又对其进行了变更

实时性

通常人们看到的实时性是,一旦一个事务被成功应用,那么客户端能够立即从服务端上读取到这个事务变更后的最新数据状态。但是Zookeeper仅仅保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。

ZooKeeper的设计目标

致力于提供一个高性能、高可用,且具有严格的顺序访问控制能力的分布式协调服务。

  1. 简单的数据模型
  2. 可以构建集群
  3. 顺序访问
  4. 高性能

ZooKeeper的基本概念

集群角色

Leader,Follower,Observer
Leader提供读写服务,由过半服务选举出来
Follower,Observer都能共提供读服务,唯一的区别自安于,Observer不参与Leader选举过程,也不参与写操作的“过半写成功”策略。

会话(Session)

数据节点(Znode)

版本

ZooKeeper的每个ZNode上都会存储数据,对应于每个ZNode,Zookeeper都会为其维护一个叫做Stat的数据结构,Stat中记录了这个ZNode的三个数据版本。分别是version(当前版本),cversion(当前子节点的版本)和aversion(当前ACL版本)

Wather

ACL

权限控制策略,create,read,write,delete,admin

为什么选择ZooKeeper

最成熟的,开源的,免费的,广泛应用。


JlDang
34 声望3 粉丝