Zookeeper系列(一):它是干什么的

Zookeeper是一款开源的分布式存储系统。

ZooKeeper主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

Zookeeper分成客户端和服务端两部分,服务端通常运行于集群模式,统一为客户端提供分布式数据一致性管理服务,集群可提供水平扩展能力,以及避免单点故障。

ZooKeeper让分布式进程可通过共享的、与标准文件系统类似的分层名字空间相互协调。名字空间由znode组成,znode是和文件目录类似的树形结构。有子节点,并且ZooKeeper为znode提供了常驻内存服务,提高性能。

Zookeeper还提供了数据动态监测机制, 客户端注册监听它关心的目录节点,当znode发生变化(数据改变、被删除、子目录节点增加删除)时,客户端会触发注册事件。 

ZooKeeper的实现很重视高性能、高可用性,以及严格的顺序访问。高性能意味着可将ZooKeeper用于大的分布式系统。可靠性使之可避免单点失败。严格的顺序访问使得客户端可以实现复杂的同步原语。

服务端通常有多台服务器,这些服务器都通过QuorumPeer进程维持分布式系统间的数据交换,选举领导者(Leader)和追随者(Follower),动态监控集群,一旦发生节点故障则重新启动选举流程,选出新的Leader。每个服务器维护相同的一份全局数据,通过QuorumPeer维持数据之间的同步,这样提供高可靠性和横向扩展性。

源码地址:https://github.com/apache/zookeeper

文件目录结构,为了方便解析整个ZooKeeper的源码结构,这里只是列出主要的目录和文件:

  • /:根目录下主要是ZooKeeper客户端相关的文件

  • /cli:命令行方式的Java类

  • /server:ZooKeeperServer相关,为ZooKeeper客户端提供服务

  • /server/command:服务端命令

  • /server/admin:ZooKeeper服务端Web管理,基于Jetty实现

  • /server/persistence:事务日志和快照的持久化

  • /server/quorum:集群间状态维护和切换,实现分布式事务

客户端提供的操作包括启动、关闭、创建节点、设置节点数据、删除节点、获取节点、获取节点数据等。这里只是取其中的几个命令做为示例。

主要客户端命令表:

  • ls:获取子路径列表

  • create:创建路径和数据

  • delele:删除路径

  • get:获取路径的数据

  • set:设置路径的数据

  • connect:连接服务端

  • close:关闭与服务端连接

  • quit:退出客户端

  • setacl:设置znode路径的Acl

  • getacl:获取znode路径的Acl

1)启动客户端

zkCli.sh

2)连接服务端

Connect 10.10.27.21

3)创建路径节点

创建一个新的 znode ,使用 create /test “hello” 。这个命令在根目录下创建了一个新的 znode 节点“ test ”以及与它关联的字符串:

215bf10f2563b0b23dd421fa0c62924f7d5.jpg

4)获取目录

使用 ls 命令来查看当前 ZooKeeper 中所包含的内容,这里显示/目录下有test、zookeeper两个子节点。

567a30bb2b97d00a7d5ebd6ec0afb2e0cc6.jpg

 

5)获取节点数据

运行 get 命令来确认第二步中所创建的 znode ,显示znode的数据、创建时间等状态信息。

示例数据:

d976994a26dd417b1ee063f0acbf53b4b35.jpg

6)设置节点数据

通过 set 命令来对 zk 所关联的字符串进行设置,设置/test路径的数据为“welcome!”。

0d47f10c96c24f5780c441329c5a66f8379.jpg

 

7)删除节点

delete  /test

402c9f7c5c717753b61ece803df7162c6bd.jpg

这篇就先了解一下zookeeper的应用场景和基本操作,还有Watch功能是监听zookeeper目录结构的变化的,发生变化时所有连接到zookeeper的客户端都会实时收到事件,表明zookeeper的哪个目录内容发生了变化,变化前后的数据分别是什么。通过watch功能,所有zookeeper客户端实现了分布式一致性存储和及时更新。

 

转载于:https://my.oschina.net/u/778683/blog/3102963

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值