zookeeper工作原理

一、简介

    zookeeper是一个分布式协调服务,即zookeeper是为其他分布式程序提供服务的。zookeeper本身就是一个分布式程序,且zookeeper集群中有半数以上的机器存活,这个zookeeper服务就能用,所以zookeeper适合安装在单数机器上。zookeeper机器有一个leader和多个follower角色,机器中的每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的,分布式读写以及更新请求转发都由leader实施。

    zookeeper只有两个功能:管理用户程序提交的数据为用户程序提供数据节点监听服务;

二、zookeeper所提供的服务

1、服务器节点动态上下线

2、分布式共享锁

3、统一名称服务

4、统一配置

5、主从协调

三、zookeeper数据结构

1、层次化的目录结构,命名符合常规文件系统规范(见下图)

2、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识

3、节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点,下一页详细讲解)

4、客户端应用可以在节点上设置监视器

        节点类型:

      ZooKeeper 节点是有生命周期的,这取决于节点的类型。在 ZooKeeper 中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下 4 种节点类型。

      所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。

      临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。

        所有机器约定在父目录service下创建临时目录节点,然后监听父目录节点的子节点变化消息。一旦有机器挂掉,该机器与 zookeeper的连接断开,其所创建的临时目录节点被删除,所有其他机器都收到通知:某个兄弟目录被删除,于是,所有人都知道:它上船了。

四、服务器节点动态上下线(主要为了理解服务器端有server下线)

        一个分布式程序的服务器端(有三台服务器 server1、server2、server3)和客户端,通过zookeeper来进行协调。server1上线的时候,去创建一个临时节点,这样服务器端到zookeeper的会话失效,新建的这个节点就会失效,然后加上监听,客户端就能进行相应的操作。

zk.create("/servers/" + “server1”.getBytes("utf-8"), Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);

相关的代码就不再赘述。








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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值