目录
一.Zookeeper的概念
1.官方解释
Zookeeper 是一个分布式的协调服务 ,用于管理分布式系统中的配置、命名、同步和组服务。其核心是一个高性能的分布式数据存储(基于内存的树形结构) ,通过ZAB一致性协议 保证数据一致性,为分布式应用提供可靠的协同原语(如分布式锁、选举、状态同步),是构建分布式系统的基础设施。
2.大白话
说白了,就是一个"分布式系统的记事本和电话总机"。
记事本: 所有分布式节点(计算机)都把关键的公共信息(比如配置、谁当老大、服务地址)写在这一个本子上。大家只看这个本子,就不会乱。
电话总机: 当本子上的信息有变化时(比如老大挂了),它会立刻主动通知所有关注这个信息的节点,让它们能马上做出反应。
最终效果是: 让一堆各自为政的机器,能像一支统一指挥的队伍一样协同工作。Hadoop、Kafka这些大型系统都靠它来"管纪律"。
3.名字的寓意
ZooKeeper的名字来源于**"动物园管理员"**。
寓意很简单:它要管理"动物园"里各式各样的"动物"(分布式组件)。
就像动物园管理员负责协调、喂养、管理不同动物一样,ZooKeeper负责协调和管理Hadoop生态圈(这个"动物园")中各种分布式"动物",比如:
HBase(大象)
Hadoop(大象Logo)
Kafka(猫头鹰Logo)
这个名字生动地体现了它作为分布式系统协调者的核心定位------让这些复杂、庞大的"动物"们能有序、可靠地协同工作。
二.Zookeeper提供哪些功能?
1.配置管理(配置中心)

在分布式系统中,我们有三个项目,需要连接同一个数据库,我们确实可以将配置信息分别写在每个项目中,将来修改无非也就是修改三次呗。
但是,系统大了以后,有30个,300个项目都要连同一个数据库呢?修改时手动修改300次?这样代价太大了。
所以此时,我们只需要在配置中心(用zookeeper可以实现)中,写一次数据库的配置即可,让所有项目都连这个配置中心配置的数据库,将来修改时,只需修改一次。
2.分布式锁
当有A和B两个项目时,就不能使用JVM自带的锁(synchronized)了,因为两个项目对应两个JVM,你A项目加锁了,B项目不可能知道啊。
所以此时,应该在第三方设置一个锁(分布式锁),A和B都用这个锁就行了,这样就能互斥了。

3.集群管理
有服务的提供者(provider)、服务的消费者(consumer)两个角色。
provider在注册中心上传自己的服务,consumer在注册中心获取自己想使用的服务。
这就叫集群管理。

以上就是Zookeeper的全部内容,喜欢的话可以留个免费的关注呦~~~