zoukankan      html  css  js  c++  java
  • ZooKeeper核心概念和架构

    ZooKeeper简介

    ZooKeeper是一个分布式应用程序协调服务,主要用于解决分布式集群中应用系统的一致性问题。它能提供类似文件系统的目录节点树方式的数据存储,主要用途是维护和监控所存数据的状态变化,以实现对集群的管理。

    ZooKeeper应用场景:
     统一命名
     配置管理
     集群管理
     共享锁
     队列管理

    ZooKeeper架构

    ZooKeeper集群的总体架构如下图:

    ZooKeeper数据模型

    ZooKeeper拥有树形层次的数据模型,与标准的文件系统非常相似,ZooKeeper树中的每个节点被称为Znode。

    Znode的主要特点如下:
    (1) Znode中仅存储与同步相关的数据,因此数据量很小,大概B到KB量级,例如状态信息、配置内容、位置信息等。
    (2) 一个Znode维护一个状态结构,包括:版本号、ACL(访问控制列表)变更、时间戳。Znode存储的数据每次发生变化,版本号都会递增,这样客户端就可以基于版本号检索相关数据。
    (3) 每个Znode都有一个ACL,用来限定该Znode可以被何种请求访问。 客户端可以在Znode上设置一个观察者(Watcher),如果该Znode上的数据发生变更,ZooKeeper就会通知客户端,从而触发观察者中实现的逻辑的执行。

    ZooKeeper节点类型

    ZooKeeper中节点主要有四种类型:
     持久节点(PERSISTENT)
     持久顺序节点( PERSISTENT _SEQUENTIAL)
     临时节点(EPHEMERAL)
     临时顺序节点( EPHEMERAL _SEQUENTIAL )

    ZooKeeper观察者模式

    ZooKeeper允许客户端向服务器注册一个观察者(Watcher),一旦服务器的状态发生变化,ZooKeeper就会通知已经在它上面注册的观察者做出相应的反应。 Watcher机制主要包括客户端线程、客户端WatchManager和ZooKeeper服务器三部分。

    ZooKeeper分布式锁

    在分布式环境下,为了保证数据的一致性,需要利用分布式锁技术来保证只有固定数量的进程对数据进行修改。只有获取锁的客户端可以对数据进行修改,其余客户端只能暂时等待。

    ZooKeeper分布式锁机制的实现流程如下图:

  • 相关阅读:
    Mac 终端命令使用自动补全时忽略大小写设置
    Android App专项测试
    评估产品机会
    如何快速获取ListView的打气筒对象
    js处理日期格式yyyy-MM-dd hh:mm:ss
    websocket聊天时,图片压缩处理(url或者input-file)
    canvas图片压缩,局部放大,像素处理
    vscode 右键文件或者文件夹显示菜单
    HTML5-SQLLite连接
    ie下div模拟的表格,表头表体无法对齐
  • 原文地址:https://www.cnblogs.com/dreamboy/p/12512772.html
Copyright © 2011-2022 走看看