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

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