什么是Zookeeper——动物管理员?

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值