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

  • 相关阅读:
    Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法输入日志标题
    Linux下安装oracle数据库提示DISPLAY not set. Please set the DISPLAY and try again。
    redhat 关机注销命令详解
    VirtualBox的四种网络连接方式
    修改RedHat的系统显示时间
    insufficient memory to configure kdump(没有足够的内存)解决方法(待验证、待解决)
    xen坑随笔 heartbeat dpkg垃圾数据库清除
    tomcat 监控脚本
    负载均衡随笔
    GIT命令介绍
  • 原文地址:https://www.cnblogs.com/dreamboy/p/12512772.html
Copyright © 2011-2022 走看看