ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

zookeeper学习总结第一篇:zookeeper功能简要

2019-02-24 21:53:23  阅读:224  来源: 互联网

标签:简要 第一篇 zookeeper leader follower 集群 znode 节点


一、zookeeper功能描述       

       zookeeper是一个开源的、分布式的服务框架,是Hadoop的一个子项目。zookeeper被应用到很多分布式应用场景,如被广泛应用到Hadoop生态体系中为各种框架提供分布式协调服务。

但其实zookeeper的功能非常简单,主要包含以下两个功能:
1、替客户端保存数据;
2、为客户端提供数据的监听服务(如数据发生变化则通知客户端)

 

二、zookeeper应用场景

       zookeeper本身的功能简单但被广泛应用主要是因为我们可以利用其功能性质来简化分布式的应用开发,实现一些分布式的协调服务,例如,我们可以利用zookeeper实现以下的分布式协调服务:
1、统一名称服务(dubbo)
2、分布式配置管理
3、分布式锁(分布式服务一起竞争共享资源时为服务分配资源锁)
4、集群节点状态协调(负载均衡/主从协调)

 

三、zookeeper集群

      zookeeper本身是一个分布式的应用,我们可以使用单节点模式,也可以使用分布式模式。但无论是哪一种模式,对于客户端而言,zookeeper都可以看做一个整体,或者说是一个黑匣子,客户端只需要连接zookeeper集群的其中一台机器,就等于是连接整个集群。
      在集群模式下,zookeeper的节点有三种类型:

  • leader server:特殊之处在于具有决定权,具有request processor;
  • follower server;
  • observer server(很少使用,在较简单的集群下一般不需要),集群中只有一个leader,剩下的都是follower。

    注:observer server与follower server 的区别就在于不参与leader的选举;


        zookeeper的集群模式配置不需要像hdfs那样配置指定name node,data node....,只需要配置集群有哪些服务器组成,然后zookeeper会动态选举哪台机器是leader,剩下的就是follower。
       leader和follower之间有心跳(可以配置心跳的时间间隔),通过每隔一段时间的心跳检测,leader和follower可以互相知道彼此是否存在,当follower发现leader挂掉时,follower会再次动态的选举一个leader(选举算法:paxos);当leader发现follower挂掉时,会更新一些关于集群服务的信息。
       另外,zookeeper集群中只要有半数以上节点活着,集群就可以正常提供服务,比如有5个节点的集群,最多可以挂掉两台机器,原因在于选举算法,因为选举算法需要某一台机器获取半数以上的票数才能当选leader(如果没有机器达到票数,则再次重新选举),因此当挂掉>=半数机器时,没有节点能被选举成leader,因此集群不能工作。
注:集群中服务器节点个数最好是奇数。

       基于zookeeper这样的工作机制,zookeeper集群具有高可用性和稳定性,也因此可以为其他的分布式应用提供可靠的服务。

 

四、zookeeper数据结构及znode

       zookeeper保存数据的结构类似于树结构,其中的每个数据节点叫znode,可以通过路径来访问指定的znode。znode具有一些以下特点:
(1)客户端可以对指定的znode进行监听,同时可以设置不同的监听类型(可以监听指定znode的状态/数据的变化,或者监听指定znode的子节点的变化),当znode发生变化时会触发监听器(watcher)通知客户端,并且监听器是一次性的,就是每注册一次监听器只会触发一次,因此要持久监听的话就要在每次监听器失效后重新注册一次。      
(2)每个znode维护着一些数据:数据(客户端存入的数据)、stat数据(ACL(访问权限)、时间戳以及版本号),这些数据量都很小,KB级别的。
(3)znode的数据每次更新后版本号(每更新一次+1)、时间等信息也会更新。
(4)znode还具有原子性操作的特点:写--全部替换,读--全部数据读取;也是就读操作将会读取节点相关所有数据,写操作也会修改节点相关所有数据。
(5)znode有临时节点和永久节点两种,临时节点指:当创建它的session一结束,该节点也会被zookeeper删除,永久节点就不会。另外临时节点和永久节点也分有序的无序的。即znode具有以下4种类型节点:

  • 临时节点(EPHEMERAL):临时创建的,会话结束节点自动被删除,也可以手动删除,临时节点不能拥有子节点
  • 临时顺序节点(EPHEMERAL_SEQUENTIAL):具有临时节点特征,但是它会在节点名称后自动添加一个序列号,如分布式锁中会用到该类型节点
  • 永久节点(PERSISTENT):创建后永久存在,除非主动删除。
  • 持永久顺序节点(PERSISTENT_SEQUENTIAL):该节点创建后持久存在,相对于持久节点它会在节点名称后面自动增加一个10位的数字序列号,这个计数对于此节点的父节点是唯一,此节点的父节点每添加一个新节点该序号+1,但如果这个序列号大于2^32-1就会溢出。

 

 

标签:简要,第一篇,zookeeper,leader,follower,集群,znode,节点
来源: https://blog.csdn.net/mifan5658/article/details/87908132

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有