谈谈你对Zookeeper的理解?

37 阅读3分钟

普通人的回答

呃...Zookeeper是一种开源的分布式应用程序的一个协调的解决方案,它是一个分布式的小型文件传输系统。一般来说,它会对开发者去屏蔽这种底层的实现细节,专门去用来去解决分布式集群下的一些一致性问题。

高手的回答

对于Zookeeper的理解呢,我觉得可以从分布式系统中的三种典型的应用场景来说。

第一种是集群管理。在多个节点组成的集群中,为了去保证集群的 HA 特性,每个节点都会去冗余一份数据副本,那么这种情况下,需要保证客户端访问集群中任意一个节点都是最新的数据。

image.png

第二种分布式锁。如何保证跨进程的共享资源的并发安全性,对于分布式系统来说,也是一个比较大的挑战。而为了达到这个目的啊,必须要使用跨进程的锁,也就是分布锁来实现。

第三种Master选举。在多个节点组成集群中,为了降低集群数据同步的一个复杂度,一般会存在 Maste 和 Slave 两种角色的节点。Master 负责去做事务和非事务性的请求处理,Slave呢去专门负责非事务请求处理。但是在分布系统中,如何去确认某个节点是 Master,还是 Slave,也成了一个难度不小的挑战。

image.png

基于这三类常见场景的需求啊,所以产生了 Zookeeper 这样一个中间件。它呢是一个分布式开源的协调组件,简单来说,就是类似于一个裁判员的角色,专门负责协调和解决分布系统中的各类问题。比如针对上述描述问题,Zookeeper 都可以用来解决。第一个集群管理,Zookeeper 提供了 CP 模型来保证集群中的每个节点的数据一致性,当然,Zookeepper 本身的集群并不是一个强一致性模型,而是一个顺序一致性模型。如果我们需要去保证 CP 特性的话,我们需要调用 ' sync ' 方法进行同步。

image.png

第二个分布式锁,Zookeeper 提供了多种不同的节点类型,比如持久化节点、临时节点、有序节点和容器节点等等。其中对于分布式锁这个场景来说,Zookeeper 可以利用有序节点这样一个特性来实现。除此之外,还可以利用同一级节点的唯一特性,来实现分布式锁。

image.png

image.png

第三个 Master 选举,Zookeeper 可以利用持久化节点来存储和管理其他节点的一些信息,从而去进行 Master 选举的一种机制,或者还可以利用集中的一些有序节点的特性来实现 Master 选举,目前主流的 kafka、Hbase Hadoop都是通过 Zookeeper 来实现集群中节点的一个主从选举。总的来说,Zookeeper 本就是一个经典的分布式数据一致性解决方案,它主要致力于分布式应用中的一些高性能的、高可用的,并且就严格访问顺序控制的一些能力模型,实现分布式的协调服务,它底层的数据一致性算法是基于 Paxos 算法演进而来,ZAB 协议实现。

image.png