初识Zookeeper
Zookeeper为分布式应用提供高效且可靠的分布式协调服务,提供统一命名服务、配置管理和分布式锁等分布式基础服务。它没有直接使用Paxos算法,而是采用ZAB (Zookeeper Atomic Broadcast)的一致性协议。
4.1 初识Zookeeper
4.1.1 Zookeeper介绍
是一个开放源码的分布式协调服务,分布式一致性的解决方案。是Google Chubby的开源实现。为了将复杂易错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供 给用户使用。
分布式应用可以使用它实现如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。
Zookeeper设计目标:
-
- 简单数据模型
- 可构建集群
- 顺序访问
- 高性能 数据存储在内存
4.1.2 Zookeeper从何而来
zoo keeper 动物园管理员,雅虎很多项目名称以动物命名,放在一起很像动物园。
Zookeeper用来分布式环境的协调工作。
4.1.3 Zookeeper的基本概念
- 集群角色
Leader 、Follower、Observer三种角色,Zookeeper集群中所有机器通过一个Leader选举过程来选定一台Leader,它为所有客户端提供读和写服务。Follower和Observer都能提供读服务,唯一区别是Observer不能参与Leader选举,也不能参与写操作的“过半写成功”策略,Observer可以在不影响写性能的情况下提升集群读性能。 - 会话
- 数据节点(Znode)
Zookeeper中,“节点”分为两类,第一类指构成集群的机器,称为机器节点;第二类指数据模型中的数据单元,称为数据节点---ZNode。所有数据存储在内存中,数据模型是一棵树(ZNode Tree),由斜杠(/)进行分割的路径,就是一个ZNode,例如/foo/path1。每个ZNode都会保存自己的数据,同时还有属性信息。
ZNode分为持久节点和临时节点。持久节点被ZNode创建,除非主动进行ZNode移除操作,否则ZNode一直保存在Zookeeper上。临时节点的生命周期和客户端回话绑定,一旦客户端会话失效,那么这个客户端创建的所有临时节点都会被移除。 - 版本
- Watcher
事件监听器,允许用户在指定节点注册Watcher,触发是ZooKeeper服务端会将事件通知到客户端 - ACL
Access Control Lists 策略进行权限控制