数据模型

ZooKeeper跟分布式文件系统一样, 有一系列的命名空间. 唯一不同的地方是命名空间中的每个节点都有数据和他相关联. 它类似于一个允许文件同时是一个目录的文件系统. 节点的路径永远是以斜杠分隔的标准绝对路径; 没有相对路径. 你可以使用任何unicode字符, 但必须遵循以下限制:

  • 路径名不允许使用null字符(\u0000).(这会引起C绑定问题)
  • 以下字符不允许使用, 因为他们的显示渲染有问题: \u0001 - \u001F 以及 \u007F - \u009F
  • 以下字符不允许使用: \ud800 - uF8FF, \uFFF0 - uFFFF, \uXFFFE - \uXFFFF (X 是数字 1 - E), \uF0000 - \uFFFFF.
  • "."字符可以用在路径名中, 但是"."和".."不能单独用作节点路径, 因为ZooKeeper没有相对路径. 例如下面的路径是非法的: "/a/b/./c" 或者 "/a/b/../c"
  • "zookeeper"是保留字

ZNodes

每个ZooKeeper节点都表示为一个znode. Znode维护了包括数据和acl变化的版本号的状态数据结构. 这些状态数据结构也有时间戳. 利用版本号和时间戳, ZooKeeper可以验证缓存, 以及协调更新. 每当znode的数据改变, 版本号就会增加. 例如, 客户端获取数据时, 它也会获得数据的版本号. 每当客户端执行更新或删除操作, 它必须同时提供znode数据的当前版本号. 假如提供的版本号和数据的实际版本号不一致, 更新就会失败. (这种行为是可以被覆盖的.[tbd...])

注意

在分布式系统中, "节点"(node)一词可以用来表示一台主机, 一台服务器, 一个集群中的成员, 一个客户端进程. 在ZooKeeeper的文档中, znode表示的是数据节点. 服务器(Servers) 表示的是组成ZooKeeper服务的机器;  Quorum Peer 指的是组成集群的服务器; 客户端(Client)指的是任何使用ZooKeeper服务的主机或进程.

Znode是程序员最主要的访问试题.他们有好些值得提一提的特性.

Watches

客户端可以在znode上设置watches. Znode的变化会触发watch, 之后清除watch. 当watch被触发, ZooKeeper会发送给客户端一个通知. 更多关于watches的信息可以参看 ZooKeeper Watches 章节.

数据访问(Data Access)

命名空间中的节点数据都是可读并且原子可写的. 读操作获取节点中的所有数据字节, 写操作则替换所有数据. 每个节点都有访问控制列表(Access Control List, ACL)来限制读写操作.

ZooKeeper不是设计用来做为普通数据库和大数据存储的. 他是用来管理协调数据的. 这个数据可以是配置信息, 状态信息, 聚集信息. 这些协调数据的特点是他们都非常小: 大约是KB级别. ZooKeeper客户端和服务端都有健全的检查机制来保证znode的数据不会超过1M, 但是的品均大小应该比这个小得多. 操作相对较大的数据会导致操作时间过长, 从而影响某些操作的延迟, 因为需要额外的时间在网络中传输更多的数据并存储到媒体中. 假如确实有大数据需要存储, 一般的解决方案是使用大容量存储系统, 例如NFS或者HDFS, 并且将存储指针存储在ZooKeeper中.

临时节点(Ephemeral Nodes)

ZooKeeper中有临时节点这个概念. 这些znode在创建他的会话期间存在. 当会话结束时, 节点会被删除. 因此, 临时节点是不允许拥有子节点的.

顺序节点 - 唯一命名(Sequence Nodes - Unique Naming)

创建一个节点时, 你可以要求ZooKeeper在路径末尾添加一个递增的计数器. 这个计数器对于父节点来说是唯一的. 计数器的格式是%010d -- 补0的10位数字(这种格式的计数器可以简化排序), 例如, "<路径>00000000001". 示例请查看Queue Recipe. 注意: 用来存储下一个序列号的计数器是一个由父节点维护的有符整型(4 bytes), 如果他的值超过了2147483647, 会造成溢出(变成 "<path>-2147483647").

转载于:https://www.cnblogs.com/zemliu/p/3565493.html

Zookeeper Tutorial 2 -- Programmer's Guide相关推荐

  1. WinRTP Programmer's Guide 翻译

    WinRTP Programmer's Guide MWG_arden  翻译 免责申明:此文档来自vovida.org 并遵守GPL  我翻译是为了自己熟悉,要是错了别找我茬. 纵览Overview ...

  2. NEON Programmer’s Guide

    NEON Programmer's Guide NEON Programmer's Guide Version: 1.0 https://static.docs.arm.com/den0018/a/D ...

  3. Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 0)

    这是一本Java Card开发者的Bible,本人在Amazon上花了45大刀还不算运费才搞到的,翻译过来给大家共享.如果您觉得书不错,或者我翻译的烂,请支持正版. Java Card Technol ...

  4. ZooKeeper Programmer's Guide(3.4.6)英文快读

    为什么80%的码农都做不了架构师?>>>    Introduction This document is a guide for developers wishing to cre ...

  5. Zookeeper Tutorial 1 -- Overview

    ZooKepper: 一个分布式应用的分布式协调服务(Distributed Coordination Service) 分布式服务难以管理, 他们容易造成死锁和竞争, ZooKepper的动机就是为 ...

  6. 程序员延寿指南 | A programmer's guide to live longer

    说明 程序员延寿指南是个开源项目,因为作者之前和一些技术群分享过,大家好评很多,于是作者索性把这些年攒的方法开源了,目前已有3.1k的Star. 考虑到一些童鞋打不开Github,也放了Gitee的链 ...

  7. DPDK Programmer’s Guide(3)环境抽象层(EAL)

    官方文档查看地址: http://doc.dpdk.org/guides/prog_guide/env_abstraction_layer.html PDF下载地址: https://www.inte ...

  8. [大数据] zookeeper 安装和配置

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  9. Zookeeper C API 指南

    以前自己的博客中转载.翻译或写过(不过自己才疏学浅,写的不好)一些 Zookeeper 方面的文章,但是都没有涉及到 Zookeeper C API 的内容,今天的这篇博客是我农历新年的第一篇技术博客 ...

最新文章

  1. Linux 命令(记录)
  2. C语言求随机两个向量乘积,用C语言生成2个随机的矩阵并进行乘法运算
  3. 腾讯offer-众里寻他千百度
  4. 为record类型自定义Equals方法
  5. 简述使用计算机对会计工作的影响,简述使用计算机对会计工作的影响。
  6. C语言排序方法-----二分插入排序
  7. 保温杯都这么给力了,你的 Bug 就不能少点?
  8. 15天玩转redis —— 第四篇 哈希对象类型
  9. java类路径定制_设置Java类路径的注意事项
  10. Atmega328p-pu与Atmega16A-PU区别
  11. 《大数据基础教程、实验和案例教程---林子雨版》分布式模式的HBase配置
  12. python合并两个文本文件内容_Python将多个txt文本合并为一个文本的代码
  13. android编辑keynote,Keynote添加和编辑母版幻灯片
  14. 《托福写作——100 个替换词汇》
  15. MATLAB神经网络工具箱函数各种图的解释
  16. Windows上必备的7个国产小众软件,每一个都是良心推荐,建议常备使用哦。
  17. 百度地图API 浏览器端调用 傻瓜教程
  18. 设置网络唤醒电脑(WAKE ON LAN,WOL)
  19. 鸿蒙 OS 2.0 正式发布!小米也能用?
  20. 红海云签约中国中医药出版社,开启出版行业人力资源数字化新篇章

热门文章

  1. Flutter AppBar 简述
  2. Xcode6 手动建empty application
  3. Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies 【贪心 】
  4. RabbitMQ配置文件
  5. jsp 静态资源 打入jar
  6. php基础_变量和比较符
  7. 陈艳青(为奥运冠军名字作诗)
  8. [React] 尚硅谷 -- 学习笔记(一)
  9. MSP430杂谈--AD7793硬件SPI驱动与模拟SPI驱动
  10. 查看端口命令及端口功能详解