IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ZooKeeper 数据模型 -> 正文阅读

[大数据]ZooKeeper 数据模型

本文为笔者学习 ZooKeeper 笔记,主要内容来自于 ZooKeeper 官网文档的翻译。

前序笔记

ZooKeeper快速启动

ZooKeeper 简介

ZooKeeper有一个层次命名空间,非常像分布式文件系统。唯一的区别是,名称空间中的每个节点都可以拥有数据以及子节点。这就像一个允许文件同时作为目录的文件系统。到节点的路径总是表示为规范的、绝对的、斜杠分隔的路径;没有相对参照。任何 unicode 字符都可以在路径中使用,受以下约束:

  • 空字符(\u0000)不能作为路径名的一部分。(这将导致与 C 语言绑定出现问题。)
  • 以下字符不能使用,因为它们不能很好地显示:\u0001 ~ \u001F 和 \u007F ~ \ u009F。
  • 不能包含以下字符:\ud800 ~ uF8FF、\uFFF0 ~ uFFFF。
  • “.” 字符可以作为另一个名称的一部分,但是 “.” 和 “…” 不能单独用来指示路径上的节点,因为ZooKeeper不使用相对路径。以下语句无效:”/ a / b / . / c” 或 “c / a / b / . . /”。
  • 关键字 “zookeeper” 被保留。

1. Znodes

ZooKeeper树中的每个节点都称为 znode

每个 Znode 主要维护了以下信息

  • path:在 ZooKeeper 中,每个节点都可以通过一个唯一的路径进行标识

  • childNode:每个节点可以创建若干子节点

  • type: ZooKeeper提供了不同种类的节点以满足实际使用需求,ZooKeeper 提供了以下节点类型

    • PERSISTENT: 持久节点,ZooKeeper创建的节点默认为持久节点

    • EPHEMERAL: ZooKeeper也有临时节点的概念。只要创建临时节点的会话保持活动,这些节点就会存在。当会话结束时,znode被删除。临时节点不允许有子节点。可以使用getEphemerals() api检索当前会话的临时节点列表。

      • 创建时,在 create 命令后加上 -e 参数即可创建临时节点

        create -e /temp
        
    • SEQUENTIAL:创建时可以在路径上加上序号作为后缀。适合用于分布式锁、分布式选举等场景。序号为有符号的int (4bytes)),因此会出现溢出,格式为十位数,不足十位数的用 0 填充,该序号由父节点维护

      • 创建时,在 create 命令后加上 -s 参数

        create -s /test
        
      • 序号节点可以创建持久序号节点(PERSISTENT_SEQUENTIAL)和临时序号节点(EPHEMERAL_SEQUENTIAL

    • CONTAINER:(3.6.0新增)容器节点是特殊用途的znode,用于leader、lock等。当容器的最后一个子元素被删除时,该容器将成为将来某个时候服务器删除的候选对象。在容器节点中创建字节的时,可能会抛出 KeeperException.NoNodeException 异常

    • TTL:(3.6.0新增)当创建PERSISTENT或PERSISTENT_SEQUENTIAL 节点时,您可以选择为znode设置一个以毫秒为单位的TTL。如果znode没有在TTL中修改,并且没有子节点,那么它将成为将来某个时候被服务器删除的候选节点。

      • 注意:TTL节点必须通过 system 属性启用,因为它们在默认情况下是禁用的。如果没有配置 system 属性的情况下创建TTL节点,服务器将抛出 KeeperException.UnimplementedException.
  • stat:当前节点的状态信息,主要包括以下信息:

    • czxid:创建当前节点的事务 ID
    • mzxid:最近修改当前节点的事务 ID
    • pzxid :最近导致子节点变更的事务 ID
    • ctime:创建当前节点的时间
    • mtime:最近修改当前节点的时间
    • version:当前节点数据的更改次数(版本号)
    • cversion:当前节点字节的的更改次数
    • aversion:当前节点 ACL 更改次数
    • ephemeralOwner:临时节点所属的会话 ID ,如果当前节点不是临时节点,则该项为 0
    • dataLength:当前节点数据长度
    • numChildren:当前节点的子节点数
  • data:与当前节点关联的数据。

    • ZooKeeper 最初的设计理念是管理协调数据,而不是用于通用数据库或大型对象存储。 节点中的数据一般为配置、状态信息、集合(rendezvous)等协调服务的信息。这些数据相对较小:以千字节(kb)为单位。ZooKeeper 客户端和服务器都进行完整性检查,以确保znodes的数据少于1M,但是平均数据应该比 1M 少得多。对相对较大的数据进行操作将导致某些操作比其他操作花费更多的时间,并会影响某些操作的延迟。通常处理这种大数据的模式是将其存储在大容量存储系统上,如 NFS 或 HDFS ,并在ZooKeeper中存储指向存储位置的指针。
    • 存储在名称空间中每个znode上的数据是原子式读写的。读操作获取与znode关联的所有数据字节,写操作替换所有数据。
  • ACL即Access Control List:访问控制列表,用于控制 ZooKeeper 节点的访问操作权限

  • watches:客户端可以在 znodes 上设置监控。watch 是一次性的。对该 znode 的更改会触发 watch,然后 watch 就被清除。当一个watch触发时,ZooKeeper向客户端发送一个通知。

    • 在命令后添加 -w 参数可以为某个路径上添加监控

在分布式应用程序工程中,节点可以指通用主机、服务器、集群中的成员、客户端进程等。在ZooKeeper文档中,

  • znodes 指的是数据节点;
  • Servers 是指组成ZooKeeper服务的机器;
  • Quorum peers 指的是组成一个集合的服务器;
  • client 是指使用ZooKeeper服务的任何主机或进程。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 11:34:54  更:2021-07-10 11:35:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 16:05:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码