启动每一台zk服务:/bin/zkServer.sh start
启动一台zk客户端:./zkCli.sh或/bin/zkCli.sh-server 服务器名称 2181(端口在conf目录下的zoo.cfg中配置的)
当启动客户端口在命令行输入
ls / [zookeeper]#zk自带的节点
3.2创建一个节点并对该节点写入信息
create /demo testzk
3.3从新设置该节点中的内容
set /demo testzookeeper
3.4在另一台服务器上启动客户端并获取另一台服务器上写入的节点信息
get /demo
4. ZooKeeper数据模型和层次命名空间
提供的命名空间与标准的文件系统非常相似。一个名称是由通过斜线分隔开的路径名序列所组成的。ZooKeeper中的每一个节点是都通过路径来识别。如图:
5. ZooKeeper中的数据节点:
每一个节点称为znode,通过路径来访问
每一个znode维护着:数据、stat数据结构(ACL、时间戳及版本号)
znode维护的数据主要是用于存储协调的数据,如状态、配置、位置等信息,每个节点存储的数据量很小,KB级别
znode的数据更新后,版本号等控制信息也会更新(增加)
znode还具有原子性操作的特点:写--全部替换,读--全部
znode有永久节点和临时节点之分:临时节点指创建它的session一结束,该节点即被zookeeper删除;
6.zk性能:
Zookeeper 的读写速度非常快(基于内存数据库),并且读的速度要比写的速度更快。
顺序一致性:客户端的更新顺序与它们被发送的顺序相一致。
原子性:更新操作要么成功要么失败,没有第三种结果。
单系统镜像:无论客户端连接到哪一个服务器,客户端将看到相同的 ZooKeeper 视图。
可靠性:一旦一个更新操作被应用,那么在客户端再次更新它之前,它的值将不会改变。这个保证将会产生下面两种结果:
1 .如果客户端成功地获得了正确的返回代码,那么说明更新已经成功。如果不能够获得返回代码(由于通信错误、超时等等),那 么客户端将不知道更新操作是否生效。
2 .当从故障恢复的时候,任何客户端能够看到的执行成功的更新操作将不会被回滚。
实时性:在特定的一段时间内,客户端看到的系统需要被保证是实时的。在此时间段内,任何系统的改变将被客户端看到,或者被客户端侦测到。
给予这些一致性保证, ZooKeeper 更高级功能的设计与实现将会变得非常容易,例如:leader 选举、队列以及可撤销锁等机制的实现。
本文出自 “为了手指那个方向” 博客,谢绝转载!