设为首页 收藏本站
查看: 833|回复: 0

[经验分享] 认识ZooKeeper

[复制链接]

尚未签到

发表于 2019-1-8 09:09:21 | 显示全部楼层 |阅读模式
  Zookeeper

  

  ZooKeeper 是一个为分布式应用所设计的分布的、开源的协调服务。分布式的应用可以建立在同步、配置管理、分组和命名等服务的更高级别的实现的基础之上。 ZooKeeper 意欲设计一个易于编程的环境,它的文件系统使用我们所熟悉的目录树结构。
  ZooKeeper Server是一个Java语言实现的分布式协调服务框架,因此需要6或更高版本的JDK支持。

  Zookeeper主要使用于构建一般的分布式应用,Zookeeper是Hadoop的分布式协调服务。
  分布式协调服务是出了名的难得编写正确,很容易出现竞争条件和死锁之类的错误。ZooKeeper的动机是减轻为分布式应用开发协调服务的负担.
  分布式应用的困难在于会出现“部分失败”,即我们甚至不知道一个操作是否已经失败。Zookeeper并不能根除部分失败,也不能隐藏部分失败,但他提供了一组工具,使你在构建分布式应用时能够对部分失败进行正确处理。
  

  Zookeeper的特点
  1.简单性;Zookeeper的核心是一个精简的文件系统。(提供操作:排序和通知)
  2.富有表现力;实现协调数据结构和协议。(相关实例:分布式队列、分布式锁和一组同级节点中的“领导者选举 leader election”)
  3.高可用性;运行于一组机器上,高可用,完全可以依赖。(避免出现单点故障)
  4.采用松耦合交互方式;在Zookeeper支持的交互过程中,参与者不需要彼此了解。(“约会”机制,让进程在不了解其他进程或网络状况的情况下能够彼此发现并进行交互;参与协调的各方甚至可以不必同时存在,Zookeeper中可以留下一条消息。)
  5.是一个资源库;Zookeeper提供了一个通用协调模式实现和方法的开源共享存储库。
  

  理解Zookeeper的一种方法就是将其看作一个具有高可用性的文件系统。没有文件和目录,而是统一使用“节点”概念,称为znode。
  ZooKeeper中的每一个节点是都通过路径来识别。ZooKeeper的节点是通过像树一样的结构来进行维护的,并且每一个节点通过路径来标示以及访问。除此之外,每一个节点还拥有自身的一些信息,包括:数据、数据长度、创建时间、修改时间等等。
  

  Zookeeper维护一个具有层次关系的数据结构,类似于一个标准的文件系统,这种数据结构有如下这些特点:

  •   每个子目录项如 NameService 都被称作为 znode,这个 znode 是被它所在的路径唯一标识,如 Server1 这个 znode 的标识为 /NameService/Server1
  •   znode 可以有子节点目录,并且每个 znode 可以存储数据,注意 EPHEMERAL 类型的目录节点不能有子节点目录
  •   znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
  •   znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
  •   znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2
  •   znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于这个特性实现的,后面在典型的应用场景中会有实例介绍
  

  使用示例:

假设有一组服务器用于为客户端提供某种服务。我们希望每个客户端都能找到其中一台服务器,这样它们就可以使用这项服务。
有一个挑战是如何维护这组服务器的列表。这组服务器的成员列表显然不能存储在网络中的单个节点上,否则该节点的故障将意味着整个系统的故障,我们希望这个成员列表是高可用的。
我们还希望当其中一台服务器出现故障时,能够从这组服务器成员列表中删除该节点,避免提供不可用的服务。
  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-660582-1-1.html 上篇帖子: ZooKeeper安装实例 下篇帖子: Zookeeper Learning
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表