【大数据面试题】Zookeeper

1-Zookeep定义&应用场景

定义:

ZooKeeper是一个分布式的,开放源码的,用于分布式应用程序的协调服务。所谓分布式协调主要是来解决分布式系统中多个进程之间的同步限制,防止出现脏读,例如我们常说的分布式锁。zookeeper服务端有两种模式:单机的独立模式和集群的仲裁模式,所谓仲裁是指一切事件只要满足多数派同意就执行,不需要等到集群中的每个节点反馈才执行。Zookeeper本身也是服从主从架构的,在仲裁模式下会有一个主要的节点作为Leader(领导者),而其余集群中的节点作为Follower(公民),对某一事件是否执行,leader都会先征询各个follower的反馈信息再做决定,如果多数派同意,leader就将命令下发到所有的follower去执行。

特点:

1、Zookeeper是由一个Leader和多个Follower组成的集群。

2、集群中只要有半数以上的节点存活,Zookeeper就能正常工作。

3、全局数据一致性,每个server上保存的数据都一样,客户端无论访问哪个节点,数据都一致。有几个节点就有几个副本。

4、更新请求顺序进行,来自同一个客户端的更新请求按其发送顺序一次执行。

5、数据更新的原子性,一次更新要么成功,要么失败。

6、实时性,在一定时间范围内,客户端能读到最新数据。

应用场景:

1)数据发布/订阅

数据的发布与订阅,顾名思义就是一方把数据发布出来,另一方通过某种手段获取。

通常数据发布与订阅有两种模式:推模式和拉模式,推模式一般是服务器主动往客户端推送信息,

拉模式是客户端主动去服务端请求目标数据(通常采用定时轮询的方式)

Zookeeper采用两种方式互相结合:发布者将数据发布到Zookeeper集群节点上,

订阅者通过一定的方法告诉Zookeeper服务器,自己对哪个节点的数据感兴趣,那么在服务端数据发生变化时,就会通知客户端去获取这些信息。

2)负载均衡

首先在服务端启动的时候,把自己在zookeeper服务器上注册成一个临时节点。

zookeeper拥有两种形式的节点,一种是临时节点,一种是永久节点。注册成临时节点后,在服务端出问题时,节点会自动的从zookeeper上删除,

如此zookeeper服务器上的列表就是最新的可用的列表。

客户端在需要访问服务器的时候首先会去Zookeeper获得所有可用的服务端的连接信息。

客户端通过一定的策略(如随机)选择一个与之建立连接。

当客户端发现连接不可用时,会再次从zookeeper上获取可用的服务端连接,并同时删除之前获取的连接列表。

3)命名服务

提供名称的服务。如一般使用较多的有两种id,一种是数据库自增长id,一种是UUID,两种id都有局限,自增长id仅适合在单表单库中使用,uuid适合在分布式系统中使用但由于id没有规律难以理解。

而ZK提供了一定的接口可以用来获取一个顺序增长的,可以在集群环境下使用的id。

4)分布式协调,通知,心跳服务

在分布式服务系统中,我们常常需要知道哪个服务是可用的,哪个服务是不可用的,传统的方式是通过ping主机来实现的,ping得200的结果说明说明该服务是OK的。而在使用zookeeper时,可以将所有的服务都注册成一个临时节点,我们判断一个服务是否可用,只需要判断这个节点是否在zookeeper集群中存在就可以了,不需要直接去连接和ping服务所在主机,减少系统的复杂度和对服务主机的压力。

2-选举机制

半数机制:2n+1,安装奇数台

10台服务器:3台

20台服务器:5台

100台服务器:11台

台数多,好处:提高可靠性;坏处:影响通信延时

3-常用命令

ls、get、create

4-Paxos算法

Paxos算法一种基于消息传递且具有高度容错特性的一致性算法。

分布式系统中的节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。基于消息传递通信模型的分布式系统,不可避免的会发生以下错误:进程可能会慢、被杀死或者重启,消息可能会延迟、丢失、重复,在基础Paxos场景中,先不考虑可能出现消息篡改即拜占庭错误的情况。Paxos算法解决的问题是在一个可能发生上述异常的分布式系统中如何就某个值达成一致,保证不论发生以上任何异常,都不会破坏决议的一致性。

5-讲一讲什么是CAP法则?Zookeeper符合了这个法则的哪两个?

CAP法则:强一致性、高可用性、分区容错性;

Zookeeper符合强一致性、分区容错性

#23届找工作求助阵地##我的求职思考##数据人offer决赛圈怎么选##阿里##腾讯#
全部评论
zookeeper是cp
1 回复 分享
发布于 2023-04-30 09:25 湖北
1 回复 分享
发布于 2023-05-31 13:22 浙江
zookeeper不能保证每个节点的数据一致吧 只能保证最终一致
点赞 回复 分享
发布于 2023-09-19 14:48 上海

相关推荐

oppo二面1自我介绍2本科有参加项目或者比赛吗?3展开讲解一下硕士学位论文。课题目前什么进度?现有算法缺陷是什么,用人工智能做是创新点吗,怎么想到的?需要做实物吗?这个研究是理论封存还是有实际的工程价值,有相关的项目背景吗?做项目或者科研,刚开始拿到项目时,有会给自己定更高的指标的情况吗?加工误差在实际过程中怎么解决的?4经历偏天线,从个人发展来说,你怎么看天线射频领域?5本科,硕士学习中有遇到让你挫败感的事情吗?6项目是个人做的吗,还是一个团队做的?7最近一年除了毕设,有对生活学习有什么规划吗?8有了解oppo的一些产品吗?oppo hr面1自我介绍2为什么应聘oppo,对oppo的了解。对射频工程师和天线工程师的看法,优先选哪个?3求职中最关心的3个因素?4对oppo产品的了解?该产品设计不错的功能是什么?区别于别的品牌优势是什么?5手表手环面向群体是什么?你手机是什么,他的优势是什么?6对于工作地点怎么考虑的?西安东莞有什么先后级吗?家人怎么考虑的?7你现在投了哪些产业,有什么排序?手上有其他offer吗?8毕业设计进度怎么样了?有数据了吗?发论文了吗,达到毕业要求了吗?9本科毕业为什么选择东南大学?10西安,南京你觉着这两个地方怎么样?东莞或者广东你来过吗?会议在广州开为什么去深圳?11放暑假了吗?课题组工作强度怎么样?对加班怎么看待?能接受的工作强度?12运动爱好?每天上班到10.还会运动?13导师接受学生提前来实习吗?14考虑读博吗,为什么?15反问【招聘岗位】产品类、AI/算法类、标准研究类、软件类、硬件类、设计类、工程技术类、米哈游、销售服务类、品牌策划类、采购类、综合职能类【工作地点】东莞、深圳、成都、上海、北京、西安、南京、重庆、武汉、杭州、海外【福利待遇】极具竞争力的薪资+制化培养体系+多样化发展机制内推链接:https://careers.oppo.com/university/oppo/campus【内推码】X9020137(后续有流程/面试时间上的问题,欢迎随时联系~)留下岗位和姓名缩写~我会帮你跟进大家投递完可以在评论区打上姓名缩写+岗位,我来确认有没有内推成功喽
OPPO
|
校招
|
超多精选岗位
点赞 评论 收藏
分享
一面1. go基本八股,有线程和协程的区别(我答的一般,感觉这里可以联系gmp),三色标记法,如何通知goroutine让其关闭,map的底层结构2. mysql基本八股,几种并发问题,对应怎么解决的,索引的结构,你是怎么建立索引的等等(记不太清了)3. mysql执行一条语句的时候突然变得很慢,如何去优化,列举一下可能的原因4. gin框架为什么快5. redis的基本八股,几种数据结构,zset底层6. 问简历上一些项目相关的技术以及具体实现7. 手撕插入区间,思路没问题,但是边界没处理后越界了二面当天就约了二面,我给推到下周一了。二面问的也不是特别难,可以说是八股进阶吧。1. go八股必不可少2. 聊项目,具体怎么实现的,有什么难题,怎么解决的3. redis的集群方案,描述几种方式的架构,再说一些优缺点4. 手撕合并两个有序链表(怎么才easy,我准备算法的时间最长了)5. 聊了聊实习岗位的业务以及相关技术栈6. 面试官当场说oc了,几分钟后hr电话来了魔门塔(‌Momenta)‌不是外企也不是国企,‌而是一家民营科技企业‌。‌以下是关于魔门塔的详细背景信息:‌‌性质‌:‌民营科技企业、‌独角兽企业、‌高新技术企业。‌‌成立时间‌:‌2016年12月(‌北京公司)‌,‌2018年6月(‌苏州公司)‌。‌‌注册资本‌:‌北京公司注册资本为88997.215万人民币,‌苏州公司为84905.7108万美元。‌‌经营范围‌:‌包括科技领域内的技术开发、‌技术推广、‌技术转让、‌技术咨询、‌技术服务等,‌涉及自动驾驶、‌人工智能、‌汽车智能化等领域。‌‌投资与合作‌:‌曾获得多轮融资,‌包括通用汽车的投资,‌用于加速自动驾驶技术的研发和应用。‌总结!实力雄厚!!!!!自动驾驶独角兽Momenta2025届校园招聘开启【公司介绍】Momenta是全球领先的自动驾驶公司,致力于通过突破性的AI科技,创造更美好的生活。【岗位需求】算法、后端开发、前端开发、嵌入式开发、架构集成、中间件开发、系统研发【薪酬待遇】行业独角兽有竞争力的薪资+免费三餐、弹性工作不打卡、米哈游、福利奖金、六险一金、带薪假期、社团活动、定期体检、免费健身房、更多福利等你解锁!【工作地点】苏州、北京、上海、深圳【内推链接】https://momenta.jobs.feishu.cn/s/irAa1chE内推码:YRHKRW8(后续有流程/面试时间上的问题,欢迎随时联系) 投递的uu留下姓名缩写和岗位~我会一一跟进~
Momenta
|
校招
|
24个岗位
点赞 评论 收藏
分享
项目遇到什么问题?(ffmpeg+qt+sdl播放器)(多线程,同步)项目是从零开始还是学开源项目的?(肯定开源啊)有修改哪些模块吗?把音频模块修改了,将QAudioOutput改写成sdl处理(实际情况是反过来,但简历来不及改了,嘻嘻)qt用的是qml还是qwidget(用的是qwidget)qt框架了解多吗?(只能说会用,这么多东西鬼记得住)为什么没做一些功能拓展?(倍速和播放分辨率没弄)如果让你实现倍速需要哪些操作?opengl熟吗?(只是用到,了解一下)多线程同步有哪些手段?(互斥、信号量、条件变量)进程同步怎么实现?(希腊奶)计算机网络5层和7层模型?http在哪一层?tcp在哪一层?http和tcp有什么区别?tcp和udp区别?http用的是tcp还是udp?路由器在哪一层?知道哪些路由协议吗?(希腊奶)dns解析有几级缓存?输入www.baidu.com到返回显示页面经历哪些过程?对于面向对象的理解?项目有用到面向对象吗?(有,但不多)项目有用到设计模式吗?(没有)C++哪些语法特性给你愉悦开发体验?(头一次听说这种问题,随便答了个lambda表达式)lambda有哪些捕获方式?你用lambda哪些地方用到比较多?(答了子线程)子线程加锁要怎么实现?创建子线程时把锁传进去吗?问了一下为什么简历做了rtsp服务器项目(说是为了以后做视频会议做考虑,实际是来凑数的)stl了解吗?列举你知道的map和unordered_map区别?为什么要有红黑树和哈希表,即应用场景是什么?问了一下学校课程情况?说了一下课程情况(学校讲的都是大便,还不都是自学的)两道题:(不知道为什么题写不了)第一道题:给定一个数组,求最大连续子数组的和(动态规划没思路,就说了用两个for循环暴力求解)第二道题:题目不知道怎么表述,反正是链表+递归解决
查看30道真题和解析
点赞 评论 收藏
分享
3 20 评论
分享
牛客网
牛客企业服务