Zookeeper相关知识总结
1.1Zookeeper介绍
Zookeeper是分布式应用程序的协调服务框架,是Hadoop的重要组件。ZK要解决的问题:
1.分布式环境下的数据一致性。
2.分布式环境下的统一命名服务
3.分布式环境下的配置管理
4.分布式环境下的分布式锁
5.集群管理问题
zookeeper数据结构
节点的类型:
1.普通节点:创建后一直存在
2.临时节点:注册节点的连接断掉,则临时节点消失
3.普通顺序节点:注册后会自动分配顺序
临时顺序节点:临时节点分配顺序,可以通过顺序节点实现分布式锁
zookeeper的observer:
由于集群机器越来越多,每次投票代价越来越高,可以配置一部分observer,不参加选举,只同步数据,observer可以配置到不稳定的网络,或者远程服务中心
1.不参加选举
2.和follower一样,处理不选举,也要同步数据
Zookeeper特性总结
数据一致性
client不论连接到哪个Zookeeper,展示给它都是同一个视图,即查询的数据都是一样的。这是zookeeper最重要的性能。
原子性
对于事务决议的更新,只能是成功或者失败两种可能,没有中间状态。要么都更新成功,要么都不更新。即,要么整个集群中所有机器都成功应用了某一事务,要么都没有应用,一定不会出现集群中部分机器应用了改事务,另外一部分没有应用的情况。
可靠性
一旦服务端成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,除非有另一个事务又对其进行了改变。
实时性
Zookeeper保证客户端将在非常短的时间间隔范围内获得服务器的更新信息,或者服务器失效的信息,或者指定监听事件的变化信息。(前提条件是:网络状况良好)因为znode树是维系在内存。所以不能用zk存储大量数**据。
顺序性
如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布。
过半性
zookeeper集群必须有半数以上的机器存活才能正常工作。因为只有满足过半数,才能满足选举机制选出Leader。因为只有过半,在做事务决议时,事务才能更新。
所以一般来说,zookeeper集群的数量最好是奇数个。
2pc、poxos算法
paxos基于2pc的改进,解决数据一致性,两个问题:拜占庭将军问题,poxis岛会议问题,暂时无法彻底解决
2pc的两个阶段:分发过程->事务执行
paxos基于2pc扩展了过半性,leader宕机重新选举
zookeeper基于fast paxos,解决了活锁问题