ZooKeeper导图
ZooKeeper 服务:
ZooKeeper 名字空间:
推荐一本书
《ZooKeeper分布式过程协同技术详解》
基于 Paxos 算法
wiki: https://en.wikipedia.org/wiki/Paxos_(computer_science)
ZooKeeper 支持的api
ZooKeeper API:
1.create /path data
2.delete /path
3.exists /path
4.setData /path data
5.getData /path
6.getChildren /path
单点ZooKeeper 与 ZooKeeper集群
ZooKeeper服务器的两种工作模式: 独立模式(standalone)和仲裁模式(quorum)
独立模式(standalone): 单独的ZooKeeper服务器。
仲裁模式(quorum): ZooKeeper集合(ZooKeeper ensemble)。 仲裁模式中,为减少ZooKeeper Server数据同步的延迟,法定人数 的概念被使用,法定人数的大小设置非常重要。
仲裁模式试验:
configure 文件:
z1.cfg
1 2 3 4 5 6 7 8
| tickTime=2000 initLimit=10 syncLimit=5 dataDir=/root/zookeeper-3.4.8/conf/z1/data clientPort=2181 server.1=127.0.0.1:2222:2223 server.2=127.0.0.1:3333:3334 server.3=127.0.0.1:4444:4445
|
z2.cfg
1 2 3 4 5 6 7 8
| tickTime=2000 initLimit=10 syncLimit=5 dataDir=/root/zookeeper-3.4.8/conf/z2/data clientPort=2182 server.1=127.0.0.1:2222:2223 server.2=127.0.0.1:3333:3334 server.3=127.0.0.1:4444:4445
|
z3.cfg
1 2 3 4 5 6 7 8
| tickTime=2000 initLimit=10 syncLimit=5 dataDir=/root/zookeeper-3.4.8/conf/z3/data clientPort=2183 server.1=127.0.0.1:2222:2223 server.2=127.0.0.1:3333:3334 server.3=127.0.0.1:4444:4445
|
启动3个节点命令:
1 2 3
| /root/zookeeper-3.4.8/bin/zkServer.sh start z1/z1.cfg /root/zookeeper-3.4.8/bin/zkServer.sh start z2/z2.cfg /root/zookeeper-3.4.8/bin/zkServer.sh start z3/z3.cfg
|
连接集群:
1
| /bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
|
创建 ephemeral 节点:
1
| create -e /master "master.example.com"
|
创建 sequential 节点:
1
| create -s /master/task- “cmd"
|
WatchedEvent 数据结构包含以下信息:
1 2 3 4 5 6 7 8
| ZooKeeper会话状态(KeeperState):Disconnected, SyncConnected, AuthFailed, ConnectedReadOnly, SaslAuthenticated, Expired. 事件类型(EventType):NodeCreated, NodeDeleted, NodeDataChanged, NodeChildrenChanged, None. 如果事件类型不是None时,返回一个znode路径. Watch监视点设置: NodeCreated:通过exists调用设置监视点。 NodeDeleted:通过exists或getData调用设置监视点。 NodeDataChanged:通过exists或getData调用设置监视点。 NodeChildrenChanged:通过getChildren调用设置监视点。
|