Zookeeper Tutorial 2 -- Programmer's Guide
数据模型
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相关推荐
- WinRTP Programmer's Guide 翻译
WinRTP Programmer's Guide MWG_arden 翻译 免责申明:此文档来自vovida.org 并遵守GPL 我翻译是为了自己熟悉,要是错了别找我茬. 纵览Overview ...
- NEON Programmer’s Guide
NEON Programmer's Guide NEON Programmer's Guide Version: 1.0 https://static.docs.arm.com/den0018/a/D ...
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 0)
这是一本Java Card开发者的Bible,本人在Amazon上花了45大刀还不算运费才搞到的,翻译过来给大家共享.如果您觉得书不错,或者我翻译的烂,请支持正版. Java Card Technol ...
- ZooKeeper Programmer's Guide(3.4.6)英文快读
为什么80%的码农都做不了架构师?>>> Introduction This document is a guide for developers wishing to cre ...
- Zookeeper Tutorial 1 -- Overview
ZooKepper: 一个分布式应用的分布式协调服务(Distributed Coordination Service) 分布式服务难以管理, 他们容易造成死锁和竞争, ZooKepper的动机就是为 ...
- 程序员延寿指南 | A programmer's guide to live longer
说明 程序员延寿指南是个开源项目,因为作者之前和一些技术群分享过,大家好评很多,于是作者索性把这些年攒的方法开源了,目前已有3.1k的Star. 考虑到一些童鞋打不开Github,也放了Gitee的链 ...
- DPDK Programmer’s Guide(3)环境抽象层(EAL)
官方文档查看地址: http://doc.dpdk.org/guides/prog_guide/env_abstraction_layer.html PDF下载地址: https://www.inte ...
- [大数据] zookeeper 安装和配置
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...
- Zookeeper C API 指南
以前自己的博客中转载.翻译或写过(不过自己才疏学浅,写的不好)一些 Zookeeper 方面的文章,但是都没有涉及到 Zookeeper C API 的内容,今天的这篇博客是我农历新年的第一篇技术博客 ...
最新文章
- Linux 命令(记录)
- C语言求随机两个向量乘积,用C语言生成2个随机的矩阵并进行乘法运算
- 腾讯offer-众里寻他千百度
- 为record类型自定义Equals方法
- 简述使用计算机对会计工作的影响,简述使用计算机对会计工作的影响。
- C语言排序方法-----二分插入排序
- 保温杯都这么给力了,你的 Bug 就不能少点?
- 15天玩转redis —— 第四篇 哈希对象类型
- java类路径定制_设置Java类路径的注意事项
- Atmega328p-pu与Atmega16A-PU区别
- 《大数据基础教程、实验和案例教程---林子雨版》分布式模式的HBase配置
- python合并两个文本文件内容_Python将多个txt文本合并为一个文本的代码
- android编辑keynote,Keynote添加和编辑母版幻灯片
- 《托福写作——100 个替换词汇》
- MATLAB神经网络工具箱函数各种图的解释
- Windows上必备的7个国产小众软件,每一个都是良心推荐,建议常备使用哦。
- 百度地图API 浏览器端调用 傻瓜教程
- 设置网络唤醒电脑(WAKE ON LAN,WOL)
- 鸿蒙 OS 2.0 正式发布!小米也能用?
- 红海云签约中国中医药出版社,开启出版行业人力资源数字化新篇章
热门文章
- Flutter AppBar 简述
- Xcode6 手动建empty application
- Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies 【贪心 】
- RabbitMQ配置文件
- jsp 静态资源 打入jar
- php基础_变量和比较符
- 陈艳青(为奥运冠军名字作诗)
- [React] 尚硅谷 -- 学习笔记(一)
- MSP430杂谈--AD7793硬件SPI驱动与模拟SPI驱动
- 查看端口命令及端口功能详解