赞
踩
Zookeeper:Yahoo研发的开源分布式协调系统。是Hadoop/Hbase环境的一部分。
目前广泛应用于分布式系统对于master节点的容错。
(1)数据模型:Data Tree
共同维护一个数据状态
(2)Client API
Watch机制:Client的读操作可注册watch,ZooKeeper数据改变,通知Client一次(仅一次,继续关注需继续注册watch)
create(path,data,flags(regular/ephemeral))返回Znode的name
delete(path,version)version与现在Znode一致才删除
exists(path,watch)返回T/F
getData(path,watch)返回data和version
setData(path,data,version)version与现在Znode一致才修改
getChildren(path,watch)返回所有孩子Znode
sync()等待前面的写操作完成create、delete、setdata
支持同步与异步方式
写操作可串行化 Linearizable writes;
client的读写操作按照FIFO顺序发生 FIFOclient order;
不同client之间的读写顺序没有保证,读可能得到旧数据,so读最新数据要sync!
3、基本原理
(1)ZooKeeper系统结构
(2)ZooKeeper节点内部结构
读请求直接由本地的Replicated database回答。
写请求Atomic Broadcast发给leader统一处理(写操作全局串行化,使用ZAB协议,2PC变型)。
leader将写请求包装为Idempotent Transaction(每个Txn可赤执行多次来恢复,Txn有唯一递增ID)。
Atomic Broadcast后,写操作修改本地Replicated database。
(3)ZAB:两个主要工作模式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。