Zookeeper框架概述
1.Zookeeper介绍
- Zookeeper(以下简称ZK)是用来管理和协调其他框架的,很多框架需要依赖ZK(例如Hadoop-HA,Kafka,HBase等)
- ZK本身也是一个集群
- ZK本身也可以存数据(一般保存配置数据),可以理解为一个数据库
- ZK单独使用没有任何意义,ZK是用来管理别的框架
- ZK顶层是Java语言
- ZK集群允许部分主机宕机,ZK集群中最坏情况下,只要有大于一半的主机在工作,集群就能维持运转(过半机制)
2.Zookeeper的特点
- 全局一致性:在ZK的任何一台主机上对节点进行操作,其他主机都要跟着操作,保持完全同步
- 顺序性:在某一台主机上先后创建了A、B两个节点,则其他主机也必须遵循节点创建的先后顺序
- 原子性:对ZK的节点增加是一个原子操作(所有的主机都必须添加添加该节点,这个过程是不可再分的,只有所以的操作都完成,才算成功,否则就算失败)
- 实时性:对ZK的操作几乎是实时的,不会有太大的延迟
3.Zookeeper集群角色
- 描述
Zookeeper是一个主从架构,有主节点,也有从节点
-
角色
-
Leader
集群的管理者,管理整个集群 既能完成非事务(查询,读取)操作,也能完成事务(增删改)操作
-
Follower
只能完成非事务操作(查询,读取),如果收到客户端的事务请求,则会转发给Leader 当Leader挂掉的时候,Follower投票选举新的Leader
-
Observer
只能完成非事务操作(查询,读取),如果收到客户端的事务请求,则会转发给Leader 当Leader挂掉的时候,Observer不能投票选举新的Leader(能干活,但是被剥夺政治权利)
-