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").
Zookeeper Tutorial 2 -- Programmer's Guide的更多相关文章
- [转帖]Programmer’s guide to the big tech companies 💻
Programmer’s guide to the big tech companies
- TensorFlow 官方文档 Programmer's Guide 中文翻译 —— 引言
TensorFlow Programmer's Guide (Introduction) TensorFlow 编程手册 (引言) #(本项目对tensorflow官网上给出的指导手册(TF1.3版本 ...
- 转载:ZooKeeper Programmer's Guide(中文翻译)
本文是为想要创建使用ZooKeeper协调服务优势的分布式应用的开发者准备的.本文包含理论信息和实践信息. 本指南的前四节对各种ZooKeeper概念进行较高层次的讨论.这些概念对于理解ZooKeep ...
- zookeeper[1] (转)ZooKeeper Programmer's Guide(zookeeper编程向导)---中文
原文:http://www.cnblogs.com/Xrinehart/p/3512509.html 本文是为想要创建使用ZooKeeper协调服务优势的分布式应用的开发者准备的.本文包含理论信息和实 ...
- [翻译] TensorFlow Programmer's Guide之Frequently Asked Questions(问得频率最多的几个问题)
目录: 特点和兼容性(Features and Compatibility) 建立一个TensorFlow图(Building a TensorFlow graph) 运行一个TensorFlow计算 ...
- Good Zookeeper Tutorial with Java client
参考: https://stackoverflow.com/questions/33524537/good-zookeeper-tutorial-with-java-client I was tryi ...
- Zookeeper Tutorial 1 -- Overview
ZooKepper: 一个分布式应用的分布式协调服务(Distributed Coordination Service) 分布式服务难以管理, 他们容易造成死锁和竞争, ZooKepper的动机就是为 ...
- chapter3:Collaborative Filtering ---------A Programmer's Guide to Data Mining
Implicit rating and item based filtering Explicit rating: 用户明确的对item评分 Implicit rating:反之 明确评分所存在的问题 ...
- ZooKeeper Getting Started Guide
http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html What is ZooKeeper? ZooKeeper is a centra ...
随机推荐
- 001.WordPress建站部署
一 WordPress简介 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统( ...
- 公钥,密钥,HTTPS详解
公钥与私钥,HTTPS详解 1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把.3)苏珊要给鲍勃写一封保密的信.她写完后 ...
- [python]接口签名
一个主机中的数据要通过外网发送数据给另外一个主机,为了保证接口安全,需要对接口进行签名,由于重放攻击貌似对这种接口无效,所以没有加入时间戳 直接放代码: #!/usr/bin/env python # ...
- COGS NIOP联赛 图论相关算法总结
最小生成树 Kruskal+ufs int ufs(int x) { return f[x] == x ? x : f[x] = ufs(f[x]); } int Kruskal() { int w ...
- CentOS 7设置KVM硬盘模式为SCSI
找到一下节点,把target节点的dev改成s开头,bus改成scsi即可,并删除address节点: 以此内推,如果要修改为ide需要修改dev为h开头,bus改成ide. 参考: https:// ...
- CentOS下KVM增加磁盘/磁盘扩容/在线扩容
一.磁盘镜像操作(适用于raw和qcow2格式) 1.创建镜像 qemu-img create -f qcow2(格式) /kvm/centos1_1.qcow2(路径) 5G(容量) 2.修改镜像容 ...
- CRC32 Source Code
/* The Quest Operating System * Copyright (C) 2005-2010 Richard West, Boston University * * This pro ...
- Parallel Programming--perfbook
https://www.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html
- linux后台开发核心技术
3. 常用STL的使用 3.1. string (1)string类的实现(使用strlen.strcpy.strcat.strcmp等,注意判NULL). (2)C++字符串和C字符串的转换:dat ...
- php简单浏览目录内容
<?php $dir = dirname(__FILE__); $open_dir = opendir($dir); echo "<table border=1 borderCo ...