秋招面试题系列- - -Java工程师(十)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 秋招面试题系列- - -Java工程师(十)

ZooKeeper面试题


18. zk节点宕机如何处理?

Zookeeper本身也是集群,推荐配置不少于 3个服务器。Zookeeper自身也要保证当一个节点宕机时,其他节点会继续提供服务。


如果是一个 Follower宕机,还有 2台服务器提供访问,因为 Zookeeper上的数据是有多个副本的,数据并不会丢失;


如果是一个 Leader宕机,Zookeeper会选举出新的 Leader。


ZK集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在 ZK节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。


所以


3个节点的 cluster可以挂掉 1个节点(leader可以得到 2票>1.5)


2个节点的 cluster就不能挂掉任何 1个节点了(leader可以得到 1票


19. zookeeper负载均衡和 nginx负载均衡区别

zk的负载均衡是可以调控,nginx只是能调权重,其他需要可控的都需要自己写插件;但是 nginx的吞吐量比 zk大很多,应该说按业务选择用哪种方式。


20. Zookeeper有哪几种几种部署模式?

部署模式:单机模式、伪集群模式、集群模式。


21.集群最少要几台机器,集群规则是怎样的?

集群规则为 2N+1台,N>0,即 3台。


22.集群支持动态添加机器吗?

其实就是水平扩容了,Zookeeper在这方面不太好。两种方式:


全部重启:关闭所有 Zookeeper服务,修改配置之后启动。不影响之前客户端的会话。


逐个重启:在过半存活即可用的原则下,一台机器重启不影响整个集群对外提供服务。这是比较常用的方式。


3.5版本开始支持动态扩容。


23. Zookeeper对节点的watch监听通知是永久的吗?为什么不是永久的?

不是。官方声明:一个 Watch事件是一个一次性的触发器,当被设置了 Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了 Watch的客户端,以便通知它们。


为什么不是永久的,举个例子,如果服务端变动频繁,而监听的客户端很多情况下,每次变动都要通知到所有的客户端,给网络和服务器造成很大压力。


一般是客户端执行 getData(“/节点 A”,true),如果节点 A发生了变更或删除,客户端会得到它的 watch事件,但是在之后节点 A又发生了变更,而客户端又没有设置 watch事件,就不再给客户端发送。


在实际应用中,很多情况下,我们的客户端不需要知道服务端的每一次变动,我只要最新的数据即可。

相关文章
|
移动开发 JavaScript 前端开发
分享76个鼠标特效,总有一款适合您
分享76个鼠标特效,总有一款适合您
420 7
|
Web App开发 前端开发
ZLMediaKit解决webrtc前端replaceTrack断流问题
ZLMediaKit解决webrtc前端replaceTrack断流问题
|
7月前
|
人工智能 自然语言处理 算法
DeepSeek模型的突破:性能超越R1满血版的关键技术解析
上海AI实验室周伯文团队的最新研究显示,7B版本的DeepSeek模型在性能上超越了R1满血版。该成果强调了计算最优Test-Time Scaling的重要性,并提出了一种创新的“弱到强”优化监督机制的研究思路,区别于传统的“从强到弱”策略。这一方法不仅提升了模型性能,还为未来AI研究提供了新方向。
1113 9
|
设计模式 Java
【设计模式系列笔记】抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种设计模式,属于创建型模式之一。它提供了一种方式来创建一系列相关或相互依赖的对象,而无需指定它们具体的类。抽象工厂模式通过引入抽象的工厂接口,使得客户端代码可以使用抽象的接口来创建一组相关的产品,而不关心这些产品的具体实现。
343 4
|
算法 JavaScript 前端开发
编码之舞:我的技术感悟之旅
在编程的世界里,代码不仅仅是冷冰冰的文字排列,它们更像是一种艺术的表达。本文通过个人的技术成长经历,探讨如何将编程转化为一种创造性的活动,以及在技术探索中如何找到乐趣和成就感。文章旨在分享从初学者到资深开发者的转变过程中的心得体会,鼓励读者以积极的心态面对技术挑战,享受编程带来的乐趣。
|
前端开发 druid Java
基于SpringBoot+Layui的社区物业管理系统
社区物业管理系统是基于java程序开发,本系统分为业主和管理员两个角色 业主可以登陆系统,查看车位费用信息,查看物业费用信息,在线投诉,查看投诉,在线报修; 管理员可以车位收费信息,物业收费信息,投诉信息,楼宇信息,房屋信息,业主信息,车位信息,抄表信息等进行管理。
160 0
基于SpringBoot+Layui的社区物业管理系统
|
XML JSON JavaScript
推荐一个比较好用的c++版本http协议库-cpp-httplib
推荐一个比较好用的c++版本http协议库-cpp-httplib
1136 1
|
JSON 前端开发 JavaScript
Bootstrap Table表格分页的使用及分页数据(Excel)导出
Bootstrap Table表格分页的使用及分页数据(Excel)导出
236 0
|
机器学习/深度学习 传感器 人工智能
基于MATLAB进行荧光光谱数据处理包括三维荧光光谱图、等高线图、激发光谱图、发射光谱图
基于MATLAB进行荧光光谱数据处理包括三维荧光光谱图、等高线图、激发光谱图、发射光谱图