💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 一、概述 zookeeper 的名字很有意思,顾名思义就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小 猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper; Zookeeper: 是一个分布式的、开源的程序协调服务,是 hadoop 项目下的一个子项目。他提供的主要功 能包括:配置管理、名字服务、分布式锁、集群管理; ## 二、作用 ### **配置管理** 应用中除了代码外比如数据库连接等除通过配置文件之外,如果使用的服务器很多,需要采用集中管理配置的方式; Zookeeper 就是这种服务,它使用 Zab 这种一致性协议来提供一致性; 现在有很多开源项目使用 Zookeeper 来维护配置,比如在 HBase 中,客户端就是连接一个 Zookeeper,获得必要的 HBase 集群的配置信息,然后才可以进一步操作;还有在开源的消息队列 Kafka 中,也使用 Zookeeper来维护broker的信息。在 Alibaba开源的 SOA 框架Dubbo 中也广泛的使用 Zookeeper 管理一些配置来实现服务治理; ### **名字服务** 类似于DNS的域名服务,在我们的服务特别多的时候, 如果我们在本地保存服务的地址的时候将非常不方便,但是如果我们只需要访问一个大家都 熟知的访问点,这里提供统一的入口,那么维护起来将方便得多了; ### **分布式锁** Zookeeper 是一个分布式协调服务。Zookeeper协调多个分布式进程之间的活动; 比如在一个分布式环境中,为了提高可靠 性,集群的每台服务器上都部署着同样的服务,如果同时运行,相互之间需要协调,编程起来将非常复杂;而如果我们只让一个服务进行操作,那又存在单点;因此,可以采用分布式锁,在某个时刻只让一个服务去 干活,当这台服务出问题的时候锁释放,立即 fail over 到另外的服务; 这在很多分布式系统 中都是这么做,这种设计有一个更好听的名字叫 Leader Election(leader 选举);比如 HBase 的 Master 就是采用这种机制; ### **集群管理** 在分布式的集群中,经常会由于各种原因,比如硬件故障,软件故障,网络问题,有些 节点会进进出出。有新的节点加入进来,也有老的节点退出集群。这个时候,集群中其他机 器需要感知到这种变化,然后根据这种变化做出对应的决策; 比如:Alibaba 开源的 SOA 框架 Dubbo 就采用了 Zookeeper 作为服务发现的底层机制)。还有开源的 Kafka 队列就 采用了 Zookeeper 作为 Cosnumer 的上下线管理;