Zookeeper

作者: 小绵羊你毛不多 | 来源:发表于2018-08-21 16:53 被阅读0次

    参考文章

    是什么

    • 是一个分布式的,开放源码的分布式应用程序协调服务。
    • 是集群的管理者,监视着集群中各个节点的状态。根据节点提交的反馈进行下一步合理的操作。
    • 最终,将简单易用的接口和性能高效,功能稳定的系统提供给用户

    提供了什么

    • 文件系统
    • 通知机制

    文件系统

    [图片上传失败...(image-48c60a-1534841583787)]

    • 每个子目录项如 App1都被成为znode
    • 和文件系统一样,能够自由的增加 删除znode
    • znode可以存储数据

    有四种类型的znode

    • 持久化目录节点 PERSISTENT
      • 客户端与zookeeper断开连接后,该节点依然存在
    • 持久化顺序目录节点 PERSISTENT_SEQUENTIAL
      • 断开后,该节点依然存在,只是zookeeper给该节点名称进行顺序编号
    • 临时目录节点 ephemeral
      • 断开连接后,节点被删除
    • 临时顺序编号目录节点
      • 断开后,节点删除。c创建的节点会自动按顺序编号

    通知机制

    客户端注册监听它关心的目录节点,当目录节点发生变化时,zookeeper会通知客户端。

    Watch

    • 一个watch事件是一个一次性的触发器。
    • watcher event异步发送。可能会存在,由于网络延迟或其他因素导致,客户端在不同的情况下收到监听事件。

    能做什么

    • 命名服务
    • 配置管理
    • 集群管理
    • 分布式锁
    • 队列管理

    命名服务

    在zookeeper文件系统里创建一个目录,即有统一的path

    配置管理

    如果程序分布在多台机器上,逐个配置很麻烦。全部放到zookeeper上,然后监听某个目录节点,一旦配置信息发生变化,每个程序都会收到通知。
    [图片上传失败...(image-e8ba89-1534841583787)]

    集群管理

    主要是两点

    • 机器的加入和退出

    • 选举master
      [图片上传失败...(image-4a87ab-1534841583787)]

    • 所有机器约定在group下创建临时目录节点,然后监听

    • 当有机器挂掉,该机器与zookeeper断开,该节点被删除,其他机器都可以接到通知

    • 当有机器加入,也会收到通知。默认选取编号最小的机器作为master

    分布式锁

    分为两类

    1. 将znode看做一把锁,通过createznode方式实现,所有客户端都去创建/pre_lock节点,谁成功创建,谁获得锁.
    2. /pre_lock预先存在,所有客户端在它下面创建临时顺序目录节点,编号最小的获得锁。

    工作原理

    zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫zab协议(ZooKeeper Atomic Broadcast )

    zab协议有两种模式:

    • 恢复模式(选主)
    • 广播模式 (同步)

    恢复模式

    • 当服务启动或者领导者崩溃后,zab进入恢复模式
    • 当领导被选举出来,且大多数server完成了同步,恢复模式结束

    为了保证事物顺序一致性:

    zookeeper采用了递增的事物id号 64位

    选主流程

    zk的选举有两种 一种是基于basic paxos实现的,另外一种是fast paxos实现的,默认是fast

    fast paxos

    某server首先向所有的server提议自己要成为leader,其他server收到之后,解决apoch和zxid的冲突,并接受对方建议,然后向对方发送完成的信息。


    image

    同步流程

    选完leader之后,zk就进入同步流程

    1. leader等待server连接
    2. Follow连接leader,将最大的zxid发送给leader
    3. leader根据zxid确定同步点
    4. 完成同步之后通知follower,已经成为uptodate状态
    5. follower收到uptodate消息后,又可以重新接收client的请求进行服务了。
    image

    相关文章

      网友评论

          本文标题:Zookeeper

          本文链接:https://www.haomeiwen.com/subject/piujiftx.html