什么是Zookeeper?

开课吧开课吧锤锤2021-04-06 16:31

    Zookeeper已经被很多像Kafka,Hadoop,HBase这样的中间件所使用,所以很多人会去了解Zookeeper究竟是什么,以及为什么它在分布式系统中具有不可替代的地位。

    走了这么多弯路后,我决定回答这个问题。

    实际上,学习任何一项技术,首先要搞清楚,为什么需要这项技术。

    今天就为大家解答一下什么是Zookeeper?

Java

    ZooKeeper主要服务于分布式系统,可以用ZooKeeper来做:统一配置管理、统一命名服务、分布式锁、集群管理。

    使用分布式系统就无法避免对节点管理的问题(需要实时感知节点的状态、对节点进行统一管理等等),而由于这些问题处理起来可能相对麻烦和提高了系统的复杂性,ZooKeeper作为一个能够通用解决这些问题的中间件就应运而生了。

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

    ZooKeeper包含一个简单的原语集,提供Java和C的接口。

    ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_home\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。

    ZooKeeper是以FastPaxos算法为基础的,Paxos算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而FastPaxos做了一些优化,通过选举产生一个leader(领导者),只有leader才能提交proposer,具体算法可见FastPaxos。因此,要想弄懂ZooKeeper首先得对FastPaxos有所了解。

    ZooKeeper的基本运转流程:

    1、选举Leader。

    2、同步数据。

    3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。

    4、Leader要具有最高的执行ID,类似root权限。

    5、集群中大多数的机器得到响应并接受选出的Leader。

    以上就是什么是Zookeeper的全部介绍,如果你想对Zookeeper有一个更深入的了解的话,不妨点击下方课程,免费领取。

Java

    这篇文章主要讲解了ZooKeeper的概念相关的知识,如果你想熟练掌握它,就快快报名吧。

有用1
分享