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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 秋招面试题系列- - -Java工程师(九)

目录

ZooKeeper面试题

13.服务器角色

14. Zookeeper下 Server工作状态

15.数据同步

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

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


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选举。


相关文章
|
5月前
|
搜索推荐 算法 Java
2025 年互联网大厂校园招聘 JAVA 工程师笔试题及备考要点解析
本文针对互联网大厂校招Java工程师笔试题进行解析,涵盖基础知识、面向对象编程、数据结构与算法、异常处理及集合框架等核心内容。从数据类型、运算符到流程控制语句,从类与对象、继承多态到数组链表、排序算法,再到异常捕获与集合框架应用,结合实际案例深入剖析,助你系统掌握考点,提升应试能力。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
243 9
|
5月前
|
Java 数据库连接 API
互联网大厂校招 JAVA 工程师笔试题解析及常见考点分析
本文深入解析互联网大厂校招Java工程师笔试题,涵盖基础知识(数据类型、流程控制)、面向对象编程(类与对象、继承与多态)、数据结构与算法(数组、链表、排序算法)、异常处理、集合框架、Java 8+新特性(Lambda表达式、Stream API)、多线程与并发、IO与NIO、数据库操作(JDBC、ORM框架MyBatis)及Spring框架基础(IoC、DI、AOP)。通过技术方案讲解与实例演示,助你掌握核心考点,提升解题能力。
238 2
|
9月前
|
机器学习/深度学习 Java PyTorch
Java工程师如何理解张量?
刚接触AI和PyTorch,理解“张量(Tensor)”是入门关键。张量可类比为Java中的多维数组,但更强大,尤其在AI领域支持GPU加速、自动求导等特性。它不仅能高效存储数据,还能进行复杂运算,是深度学习的核心数据结构。掌握张量的维度、数据类型及GPU加速特性,对学习PyTorch至关重要。
256 3
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
1528 2
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
310 4
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
1965 2
|
人工智能 前端开发 Java
Java开发工程师转哪个行业比较好?
Java开发工程师转哪个行业比较好?
863 2
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
185 0