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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 对一个没有接触过分布式的小伙伴来说,可能还不太清楚Zookeeper在分布式应用中的重要性,今天有位从传统行业转型到互联网的小小伙伴问我,希望跟他讲讲Zookeeper什么,能解决什么问 题?今天,我给大家详细介绍一下。

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

1、什么是Zookeeper?

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


第一种,集群管理

78204ffb94dd39ce1a5c5e2d066311b4.jpg

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


第二种,分布式锁

28f8084e157e786f09fc725f4ddff76e.jpg

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


第三种,Master选举

e5efd39e4ec447458051953ac7108cd2.jpg

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

1c3f3fe589a4e455f144bb00b3f02032.jpg

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

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

1、集群管理


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

6c25cb1f4dc1462bd8afd1aef5eed68a.jpg

2、分布式锁


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

954a26f29255277575b61a31ba08b709.jpg

3、Master选举


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

0c40692136a6cb2edb665802aedf90df.jpg

3、总结

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


以上就是我对Zookeeper的理解。想更深入了解Zookeeper Watch机制、Leader选举底层原理的小伙伴,可以在评论留言。


最后,我把之前分享的视频全部整理成了文字,想获取的小伙伴可以扫描文章底部二维码拿!希望能够以此来提高各位粉丝的通过率。

ee90d9963df444db88b33d6e798a5b94.gif

我是被编程耽误的文艺Tom,只弹干货不掺水!你们的支持就是我最大的动力!关注我,面试不再难!

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
57 10
|
3月前
|
JavaScript 前端开发 小程序
CoderGuide 程序员前后端面试题库,打造全网最高质量题库
CoderGuide涵盖范围包括且不限于:前端面试题(Vue,React,JS,HTTP,HTML,CSS面试题等),后端面试题(Java,Python,Golang,PHP,Linux,Mysql面试题等),以及算法面试题,大厂面试题,高频面试题,校招面试题等,你想要的,这里都有!
65 2
|
5月前
|
前端开发 应用服务中间件 程序员
老程序员分享:Nginx相关面试题
老程序员分享:Nginx相关面试题
57 2
|
5月前
|
SQL JavaScript Java
java程序员面试题大全含答案(2018--2019)
java程序员面试题大全含答案(2018--2019)
|
6月前
|
前端开发 JavaScript 程序员
2024年最新65% 的程序员竟都是自学成才?_为啥学技术都自学,2024年最新42岁程序员面试
2024年最新65% 的程序员竟都是自学成才?_为啥学技术都自学,2024年最新42岁程序员面试
2024年最新65% 的程序员竟都是自学成才?_为啥学技术都自学,2024年最新42岁程序员面试
|
5月前
|
前端开发 程序员 JavaScript
9年程序员总结个人的面试技巧
9年程序员总结个人的面试技巧
41 2
|
5月前
|
缓存 NoSQL 数据库
分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
105 0
|
6月前
|
数据采集 XML 程序员
最新用Python做垃圾分类_python垃圾分类代码用key和format,5年经验Python程序员面试27天
最新用Python做垃圾分类_python垃圾分类代码用key和format,5年经验Python程序员面试27天
最新用Python做垃圾分类_python垃圾分类代码用key和format,5年经验Python程序员面试27天
|
6月前
|
算法 程序员
2024年有哪些话一听就知道一个程序员是个水货?(1),2024年最新面试真题及答案
2024年有哪些话一听就知道一个程序员是个水货?(1),2024年最新面试真题及答案
2024年有哪些话一听就知道一个程序员是个水货?(1),2024年最新面试真题及答案