Zookeeper概述
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目.
Zookeeper=文件系统+通知机制
-
Zookeeper工作机制
Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应.
-
Zookeeper特点:
- Zookeeper:一个领导者(Leader),多个跟随着(Follower)组成的集群.
- 集群中只要有半数以上节点存活,Zookeeper集群就能正常服务.
- 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的.
- 跟新请求顺序进行,来自同一个Client的跟新请求按其发送顺序依次执行.
- 数据更新原子性,一次数据跟新要么成功,要么失败
- 实时性,在一定时间范围内,Client能读到最新数据.
-
数据结构
ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一颗树,每个节点称做一个ZNode.每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识.
-
应用场景
提供的服务包括:统一命名服务/统一配置管理/统一集群管理/服务器节点动态上下线/软负载均衡等.
Paxos算法
Paxos算法一种基于消息传递且具有高度容错特性的一致性算法.
选举机制
- 半数机制:集群中半数以上机器存活,集群可用.所以Zookeeper适合安装奇数台服务器.
- Zookeeper虽然在配置文件中并没有指定Master和Slave,但是,Zookeeper工作时,是有一个节点为Leader,其他则为Follower,Leader是通过内部的选举机制临时产生的.
约定yueding666
Zookeeper的部署方式有哪几种?集群中的角色有哪些?集群最少要几台机器?
- 部署方式单机模式/集群模式
- 角色:Leader和Follower
- 集群最少需要机器数:3