zookeeper
1.ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
2.ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer
总结:zookeeper是分布式环境中提供一致性服务的调度器
zk集群搭建
为什么集群是奇数台?
公式: 剩余存活节点的数量 > n/2
1个节点 不满足公式 ,所以不能搭建集群.
2个节点 1>1 不满足公式 所以不能搭建集群.
3个节点 2>1.5 满足公式 可以搭建集群.
结论:集群的最小的单位3台.
性价比问题:
4个节点 3>2 满足公式 偶数台也可以搭建集群
3个节点: 最多宕机1台.否则集群崩溃.
4个节点: 最大宕机1台,否则集群崩溃.
结论:3台的效果与4台效果相同,所以选择奇数
zk启动现象:
只有当集群超过半数以上启动时才能正常工作
脑裂现象:
在集群中,由于需要高可用配置,当主机宕机时,需要重新选举新的主机,当连续出现平票时,则可能出现多太主机现象,称之为脑裂(选举机制连续3次平票才有可能出现脑裂概率:12.5%(八分之一))
适当的调整节点数量可有效的降低脑裂现象的发生
zk集群的选举机制
说明:
在搭建集群时,会动态的分配myid的序号,zk集群的选举规则秉承着序号最大值优先的策略,集群选举时超过半数同意即当选新的主机
面试题: 1-7台zk, 问哪几台永远不能当主机?
答案:1-3台永远不能当主机.
zk集群的程序连接规则
zk集群中主机只负责监控数据同步,从机负责与客户端交互,代码中的连接zk的一般都是从机