What’s is ZooKeeper:

一个开源的分布式的,为分布式应用提供协调服务的Apache项目。

* 功能包括::配置维护,名字服务,分布式同步,组服务等
* 目标:封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper特点:

* 最终一致性:为客户端展示同一视图,这是 ZooKeeper 最重要的性能。
* 可靠性:如果消息被一台服务器接受,那么它将被所有的服务器接受。
* 实时性:ZooKeeper 不能保证两个客户端同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。
* 独立性(等待无关):慢的或者失效的 client 不干预快速的client的请求。
* 原子性:更新只能成功或者失败,没有中间其它状态。
* 顺序性:对于所有Server,同一消息发布顺序一致
ZooKeeper Service:



* 每个Server在内存中存储了一份数据。
* Zookeeper启动时,将从实例中选举一个leader(根据Paxos协议来选举)
* Leader负责处理数据更新等操作(根据Zab协议)
* 一个更新操作成功的标志是当且仅当大多数Server在内存中成功修改数据。
ZooKeeper 角色:



* 服务器数量是2n+1,允许服务器宕机个数为n(不影响整个集群的功能)
* 角色:leader:做决定,做决策
follower:接受客户端请求,投票
ZooKeeper 典型应用场景:

* Zookeeper 从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理
大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在 Zookeeper
上注册的那些观察者做出相应的反应,从而实现集群中类似 Master/Slave 管理模式。
* 应用场景

* 统一命名服务(Name Service)
* 配置管理(Configuration Management)
* 集群管理(Group Membership)
* 共享锁(Locks)同步锁
ZooKeeperFailureController&JournalNode:




* 故障转移监控器(ZK客户端)

*
是在NN上启动的进程,它用来监控NN的状态,并实时向ZK汇报,如果ActiveNN突然发生了状况,它会把消息通知ZK,由于ZK的信息是共享的,另一端的ZK会把信息告诉负责监控standbyNN的ZKFC进程,由ZKFC再通知standbyNN变成ActiveNN
* JournalNode

* 在Hadoop2.x中,NN Active的元数据信息一旦更新会将EDIT文件实时保存到一种中间介质(NFS或QJM),我们使用QJM(Quorum
Journal Manager分布式日志系统),而JournalNode实际是在ZK上启动的。2.x中是不需要SecondaryNN的。NFS
网络文件系统成本低、效率比较低。



- ZK基本只做一件事:选举哪个NN是active。
- ZK和JournalNode的位置并无要求,只要可以通信即可,开启顺序:先ZK后JN。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信