鸟菜基础篇_2012_9_2 ZooKeeper入门基本结构

周末出去吃饭,席间聊到了Zookeeper。他们也在用,不过他们定制了自己的keeper。我们的工程里也用到了zookeeper,却从没仔细研究过。所以今天给自己补补课,把应该掌握的东西消化掉。

1. zookeeper是什么东东?有什么作用?为什么用它?

    按照zookeeper官方的说法:为管理分布式节点之间的配置、命名、同步规则等提供的一种服务。鉴于不同分布式系统中都会存在此类操作,zookeeper提供了一种统一的管理框架,简单高效地解决分布式系统中的这些必要的操作和情况。

    作为分布式系统的开发者来讲,通过zookeeper来进行个节点/服务器之间的交互,可以更专注节点内提供服务的实现,而不用花更多精力去定义节点之间通信/规则等细节。

   对于一个具有多个服务器的分布式系统来说,每个服务器作为一个节点,所有的节点都提供相同的服务,将节点挂在zookeeper下,通过简单的接口就可以实现对于所有服务器的管理,这确实是方便又省力的方式。

2.zookeeper结构

   zookeeper节点结构类似于Linux系统的文件结构,呈树状分布。每个节点以“/”开头

如图所示:


在asshole中,以每台服务器的ip地址作为一个节点,那么某个服务器节点名即为:/192.168.1.1   


3.   节点  Znode

        znode用来来描述zookeeper中的数据节点。每个节点维护一个stat结构,包括数据变更, 权限变更的版本信息等。每当znode的数据变更时,版本号都会递增.例如, 每次client在获取数据时,它同时也获得了数据的版本信息.

     存储在znode中的数据对read, write都是原子性操作的.read会获取znode中的所有字节, write会整个替换znode中的信息.每个znode都包含一个访问控制列表(ACL)以约束谁可以访问此节点.

4  watches 监听器

       zookeeper提供监听器的概念。 client可以在某个znode上设置watch. 当znode有变更时, 相关的watch会被触发或删除.一旦watch触发, client将会收到一个数据包以通知znode的变更.如果在client和zookeeper server之间的连接被中断了, client将会收到一个本地的通知。

5. 简单的接口

    create: 在树种某个位置创建一个节点.

    delete:  删除一个节点.
    exists:  检查给定节点是否存在.
    get data:  从一个节点读取数据.
    set data:  写数据到给定节点.
   get children:  获取节点的子节点列表
    sync: 等待知道数据被传输.

通过这些简单的接口,就可以实现对于分布式系统中多个节点的管理,基础部分大致如此,接下来我们会创建一个简单的实例,进入zookeeper代码,看看内部如何实现。

另外,zookeeper的选举算法需要好好研究。



  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值