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分布式锁机制的实现流程如下图:

  • 相关阅读:
    7 MSSQL数据库备份与恢复
    6.Netbackup-Oracle数据库恢复演练报告(下)
    5、Oracle备份(oracle备份脚本配置)
    1.6 NBU Catalog备份还原
    标示符和关键字的总结--希望别再犯错
    JDBC_基础6步骤- 及优化
    算法总结
    bootstrap-全局CSS&js插件
    bootstrap入门&栅格系统
    JavaScript中的事件
  • 原文地址:https://www.cnblogs.com/dreamboy/p/12512772.html
Copyright © 2011-2022 走看看