Zookeeper基本介绍
基本概念
-
Zookeeper可以作为注册中心和分布式锁
-
Zookeeper是Hadoop系统中的一员
-
构建Zookeeper集群时,使用的服务器的数量是奇数个
-
原语:
- 操作系统和计算机网络术语
- 由若干条指令组成的,用于完成一定功能的一个过程
- 原语具有不可分割性.即原语的执行必须是连续的,在执行过程中不允许被中断
-
Zookeeper是一个开源的分布式协调服务框架:
- 将复杂且容易出错的分布式一致性服务封装起来,构成一个高效的原语集,并以一系列简单易用的接口提供给调用方
-
Zookeeper提供了高可用,高性能,稳定的分布式数据一致性解决方案,通常用于以下几个方面:
- 数据的发布和订阅
- 负载均衡
- 命名服务
- 分布式协调和通知
- 集群管理
- Master选举
- 分布式锁
- 分布式队列
-
Zookeeper将数据保存在内存中,性能高.在读操作高于写操作的应用中性能表现更好. 读操作多于写操作是协调服务的典型场景,因为写操作会导致所有的服务器间的同步状态
Zookeeper特点
顺序一致性
- 从同一客户端发起的事务请求,最终将会严格按照顺序被应用到Zookeeper中
原子性
- 所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的
- 也就是说,在整个集群中的所有机器要么都成功应用了某一个事务,要么都没有应用某一个事务
单一系统映象
- 无论客户端连接到哪一个Zookeeper服务器上,获取到的服务端数据模式都是一致的
可靠性
- 一旦某个更改请求被应用,更改的结果会被持久化,直到被下一次更改覆盖
Zookeeper使用场景
- Zookeeper的应用在于Zookeeper可以保存数据的功能,但是需要注意的是Zookeeper不适合保存大量数据
分布式锁
- 通过创建唯一节点获得分布式锁
- 当获得锁的一方执行完相关的代码或者宕机之后释放锁
命名服务
- 通过Zookeeper的顺序节点生成全局唯一ID
数据发布和订阅
- 通过Zookeeper的Watcher机制可以很方便实现数据的发布和订阅
- 将数据发布到Zookeeper被监听的节点上,其余机器可用通过监听Zookeeper上节点的变化来实现配置的动态更新
Zookeeper应用
-
Kafka:
- Zookeeper主要为Kafka提供Broker和Topic的注册以及多个Partition的负载均衡等功能
-
HBase:
- Zookeeper确保HBase整个集群中只有一个Master
- 保存和提供regionserver的状态信息
-
Hadoop:
- Zookeeper为NameNode提供高可用支持