程序员转型到互联网面试必问题:谈谈你对Zookeeper的理解

2022-09-22 11:21:04 浏览数 (1)

对一个没有接触过分布式的小伙伴来说,可能还不太清楚Zookeeper在分布式应用中的重要性,今天有位从传统行业转型到互联网的小小伙伴问我,希望跟他讲讲Zookeeper什么,能解决什么问 题?今天,我给大家详细介绍一下。

另外,我花了1个多星期,准备了一份10W字的面试题解析配套文档,想获取的小伙伴可以

↓ ↓ ↓

扫描下方二维码联系我领取!

1、什么是Zookeeper?

在讲什么Zookeeper之前,有必要先介绍一下分布式多个节点组成的集群环境中,所面临的3个常见的挑战。

第一种,集群管理

ENTER TITLE

为了保证集群的高可用,每个节点都会创建一个数据副本。这种情况下,要保证客户端访问集群中的任意一个节点,都要是最新的数据。

第二种,分布式锁

ENTER TITLE

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

第三种,Master选举

ENTER TITLE

在多个节点集群中,为了降低集群数据同步的复杂度,一般会将节点设置为两个角色Master和Slave,Master一般负责数据的读写等事务性操作,而Slave只提供数据的读操作。但是,如何去确定某个节点是Master还是Salve也是一项比较复杂的工作。

ENTER TITLE

Zookeeper的出现,主要是为了满足分布式环境中,以上三种常见的场景需求,作为一个分布式的中间件而存在。它相当于是一个分布式开源的协调组件。简单理解,就相当于是一个裁判员的角色,专门负责协调和解决分布式系统中的各类问题。

2、分布式协调的基本原理

1、集群管理

Zookeeper提供了CP模型,来保证集群中的每个节点的数据一致性。当然,ZK本身的集群并不是强制一致性的,而是一个顺序一致性模型。如果我们需要去保证CP特性的话,我们需要调动“sync”同步方法进行同步。

ENTER TITLE

2、分布式锁

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

ENTER TITLE

3、Master选举

Zookeeper可以利用持久化节点来存储和管理其他集群节点的一些信息。从而去进行Master选举的一种机制,或者还可以利用集群中的一些有序节点的特性来实现Master选举。目前,主流的Kafka、HBase、Hadoop都是通过Zookkeeper来实现集群节点的主从选举。

ENTER TITLE

3、总结

总的来说,Zookeeper本就是一个经典的分布式数据一致性解决方案。它主要致力于分布式应用中的一些高性能、高可用,并且就严格访问顺序控制的一些能力模型,实现分布式的协调服务。它底层的数据一致性算法是基于Paxos算法演进而来的ZAB协议实现。

以上就是我对Zookeeper的理解。想更深入了解Zookeeper Watch机制、Leader选举底层原理的小伙伴,可以关注我,面试不再难

我是被编程耽误的文艺Tom,如果我的分享对你有帮助,请动动手指一键三连分享给更多的人。

0 人点赞