首页 > 其他分享 >ZooKeeper核心概念和架构

ZooKeeper核心概念和架构

时间:2023-01-10 11:01:59浏览次数:41  
标签:架构 核心 ZooKeeper 观察者 分布式 Znode 节点 客户端

ZooKeeper简介

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

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

ZooKeeper架构

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

ZooKeeper核心概念和架构_ZooKeeper

ZooKeeper数据模型

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

ZooKeeper核心概念和架构_客户端_02


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_03

ZooKeeper分布式锁

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

ZooKeeper核心概念和架构_客户端_04


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

ZooKeeper核心概念和架构_客户端_05

更多内容及Java+大数据个人原创视频,可关注公众号观看:

ZooKeeper核心概念和架构_Hadoop_06


原创文章,转载请注明出处!!



标签:架构,核心,ZooKeeper,观察者,分布式,Znode,节点,客户端
From: https://blog.51cto.com/dreamboy/5999415

相关文章

  • 带你认识数仓的增量备份核心设计
    摘要:增量备份是重要的常规备份策略,正确快速识别增量变化文件的相关信息对增量备份至关重要。本文分享自华为云社区《其疾如风,GaussDB(DWS)增量备份核心设计》,作者:我的橘子......
  • 基于Kintex-7 FPGA的核心板电路设计
    1.引言    FieldProgrammableGateArray(简称,FPGA)于1985年由XILINX创始人之一RossFreeman发明,第一颗FPGA芯片XC2064为XILINX所发明,FPGA一经发明,后续的发展速度之快,......
  • jQuery核心函数和核心对象
    视频jQuery主要结构详解(function(window){varjQuery=function(){returnnewxxx();}window.$=window.jQuery=jQuery;})(window)核心函数和核......
  • C++核心知识回顾(自定义数据类型)
    复习C++类自定义数据类型最灵活的方式就是使用C++的类结构现在定义一个货币类型Currency:enumsignType{PLUS,MINUS};classCurrency{public:Currency(signTy......
  • Vue搭建项目的完整流程 如何搭建一个完整的vue项目 vue项目架构
    vue项目架构技术栈:vue3、vue-router、vuex(和pinia)、elementplus、axios、ts、sass1、安装vue3脚手架+tsvuecreateadmin2、分析目录结构node_modules......
  • 第二周 shell脚本以及Zookeeper基本知识
    1.shell脚本编程shell中有3种变量:用户变量、环境变量、特殊变量;变量的使用最好就是使用双引号括起来。变量需要遵循的规则:变量名可以由字母、数字和下画线组成,但是......
  • 学习笔记——Mybatis核心配置文件概述及根标签
    2023-01-09一、Mybatis核心配置文件概述及根标签1、核心配置文件的概述(即“mybatis-config.xml”)MyBatis的配置文件包含了会深深影响MyBatis行为的设置和属性信息。2、......
  • zookeeper占用8080端口的处理
    今天部署项目,启动时提示8080端口已被占用。用以下命令查看占用情况:lsof-itcp:8080根据列出的信息,查询pid:ps-ef|greppid发现是已经安装好的zookeeper占用了808......
  • 软件架构设计 - 01 操作系统
     1、零拷贝(【内核区】内存缓存区-Socket缓冲区映射) 2、内存映射(【内核区】内核内存缓冲区-【用户区】应用程序内存) 3、Reactor和Proactor模式    Reactor......
  • #百人创作先锋团#自动驾驶最核心的技术是什么?
    结论先行:自动驾驶车辆核心技术为环境感知、路径规划、精确定位、线控执行,其中环境感知是所有关键技术的数据基石。:::hljs-center:::自动驾驶车辆核心技术为:环境感知、......