一 ZooKeeper 简介 (Znode 表示 ZooKeeper 节点)
Zookeeper 是一个为分布式应用所涉及的开源协调服务。它可以为用户提供同步、配置管理、分组和命名等服务。用户通过使用 ZooKeeper 提供的接口方便地实现一致性、组管理、leader 选举及某些协议。
协调服务比较容易出错。 如:协调服务很容易处于竞态以至于死锁。ZooKeeper 的设计目的是为了减轻分布式应用程序所承担的协调任务。
1) 设计目标
分布式环境下的程序和活动为了达到协调一致性目的。通常具有某些共同的特点。例如 简单性、有序性等。
ZooKeeper设计目标如下:
1 简单化
允许分布式通过共享生命体的命名空间来进行协调,命名空间组织与标准的文件系统非常相似,它是由一些数据存储器组成。用ZooKeeper的语法来说 这些寄存器应称为 Znode,典型的文件系统是基于存储设备的。而 ZooKeeper 的数据却是存放于内存中的。所以 ZooKeeper 可以达到高吞吐量,低延迟。 ZooKeeper 的实现非常注重高性能、高可靠性、严格的有序访问。
性能特点适合用在 大型的、分布式的系统当中。他不会因为一个节点的错误而崩溃。除此之外它严格的序列访问控制意味着复杂的控制原句可以应用在客户端上。
2 健壮性
组成 ZooKeeper 服务的服务器必须相互知道其他服务器的存在。他们维护着一个处于内存中的状态镜像,以及一个位于存储器中的交换日志和快照。只要大部分服务器可用,那么 ZooKeeper 服务就可用。
3 有序性
ZooKeeper 提供全局唯一有序版本号。不存在重复
4 速度优势
读取主要负载时尤其快。特点:当读工作比写工作更多的时候,它执行的性能会更好。
2) 命名空间图:
3)Zookeeper 中的节点和临时节点
Zookeeper 每个节点通过滤镜来访问。 节点中还包含一些信息:数据、数据长度、创建时间、修改时间等。
从上可知,ZooKeeper 既可以视为一个文件,又可以被看做是一个目录。具体来讲,Znode 维护着数据、访问控制列表、时间戳等包含交换版本号信息的数据结构。通过对这些数据的管理使缓存中的数据生效,并且执行协调更新操作。每当 Znode 中的数据更新它所维护的版本号就会增加,这非常类似于数据库中计数器时间戳的操作方式。在命名空间中,每一个 Znode 的数据将被的读写。每一个节点都有一个访问控制列表。
ZooKeeper 中存在临时节点。这些节点与 Session 同在。 Session 生命周期结束,这些临时节点也结束。 临时节点在某些场合很重要。如:Leader 选举、锁服务等。
4)ZooKeeper 的应用
被用作雅虎消息代理 ( Yahoo! Message Broker)的协调和故障恢复服务。
God has given me a gift. Only one. I am the most complete fighter in the world. My whole life, I have trained. I must prove I am worthy of someting. rocky_24