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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 秋招面试题系列- - -Java工程师(九)

ZooKeeper面试题


13.服务器角色

Leader


1、事务请求的唯一调度和处理者,保证集群事务处理的顺序性2、集群内部各服务的调度者


Follower


1、处理客户端的非事务请求,转发事务请求给 Leader服务器2、参与事务请求 Proposal的投票


3、参与 Leader选举投票


Observer


1、3.0版本以后引入的一个服务器角色,在不影响集群事务处理能力的基础上提升集群的非事务处理能力


2、处理客户端的非事务请求,转发事务请求给 Leader服务器


3、不参与任何形式的投票


14. Zookeeper下 Server工作状态

服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。


1、LOOKING:寻找 Leader状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader选举状态。


2、FOLLOWING:跟随者状态。表明当前服务器角色是 Follower。


3、LEADING:领导者状态。表明当前服务器角色是 Leader。


4、OBSERVING:观察者状态。表明当前服务器角色是 Observer。


15.数据同步

整个集群完成 Leader选举之后,Learner(Follower和 Observer的统称)回向Leader服务器进行注册。当 Learner服务器想 Leader服务器完成注册后,进入数据同步环节。


数据同步流程:(均以消息传递的方式进行)


Learner向 Learder注册


数据同步


同步确认


Zookeeper的数据同步通常分为四类:


1、直接差异化同步(DIFF同步)


2、先回滚再差异化同步(TRUNC+DIFF同步)


3、仅回滚同步(TRUNC同步)


4、全量同步(SNAP同步)


在进行数据同步前,Leader服务器会完成数据同步初始化:


peerLastZxid:


从 learner服务器注册时发送的 ACKEPOCH消息中提取 lastZxid(该


Learner服务器最后处理的 ZXID)


minCommittedLog:


Leader服务器 Proposal缓存队列 committedLog中最小 ZXID


maxCommittedLog:


Leader服务器 Proposal缓存队列 committedLog中最大 ZXID


直接差异化同步(DIFF同步)


场景:peerLastZxid介于 minCommittedLog和 maxCommittedLog


之间


先回滚再差异化同步(TRUNC+DIFF同步)


场景:当新的 Leader服务器发现某个 Learner服务器包含了一条自己没


有的事务记录,那么就需要让该 Learner服务器进行事务回滚--回滚到 Leader服务器上存在的,同时也是最接近于 peerLastZxid的 ZXID


仅回滚同步(TRUNC同步)


场景:peerLastZxid大于 maxCommittedLog


全量同步(SNAP同步)


场景一:peerLastZxid小于 minCommittedLog


场景二:Leader服务器上没有 Proposal缓存队列且 peerLastZxid不等


于 lastProcessZxid


16. zookeeper是如何保证事务的顺序一致性的?

zookeeper采用了全局递增的事务 Id来标识,所有的 proposal(提议)都在被提出的时候加上了 zxid,zxid实际上是一个 64位的数字,高 32位是 epoch(时期;纪元;世;新时代)用来标识 leader周期,如果有新的 leader产生出来,epoch会自增,低 32位用来递增计数。当新产生 proposal的时候,会依据数据库的两阶段过程,首先会向其他的 server发出事务执行请求,如果超过半数的机器都能执行并且能够成功,那么就会开始执行。


17.分布式集群中为什么会有 Master?

在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行leader选举。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
2月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
4月前
|
架构师 前端开发 Java
Java开发工程师的职业规划应该是什么样的?
Java开发工程师的职业规划涵盖多个阶段,包括初入行业(0-1年)、技能提升(1-3年)、技术专家(3-5年)及管理或专家路线选择(5年以上)。各阶段设定了明确的技能要求与职业目标,从掌握Java基础、常用框架到深入研究高级技术、微服务架构乃至担任管理职务或成为技术专家。通过持续学习与实践,结合个人兴趣,Java工程师可在技术或管理领域找到合适的发展方向,最终实现职业成功。
547 83
|
2月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
100 2
|
2月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
76 4
|
3月前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
98 2
|
4月前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
80 18
|
4月前
|
人工智能 前端开发 Java
Java开发工程师转哪个行业比较好?
Java开发工程师转哪个行业比较好?
343 2
|
3月前
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
40 0
|
4月前
|
小程序 前端开发 JavaScript
Java开发工程师转小程序开发的前景如何?
Java开发工程师转小程序开发的前景如何?
60 0

热门文章

最新文章