前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java高频面试题- 每日三连问?【Day29】 — ZooKeeper篇(五)

Java高频面试题- 每日三连问?【Day29】 — ZooKeeper篇(五)

作者头像
浩说编程
发布2022-04-12 14:19:24
1800
发布2022-04-12 14:19:24
举报
文章被收录于专栏:Java经验之谈

问题导读

一、说说 Zookeeper 的服务器角色?

二、Zookeeper 下 Server 工作状态?

三、Zookeeper 的数据同步 是怎样的?

01

说说 Zookeeper 的服务器角色?

正经回答:

Leader

(1)事务请求的唯一调度和处理者,保证集群事务处理的顺序性

(2)集群内部各服务的调度者

Follower

(1)处理客户端的非事务请求,转发事务请求给 Leader 服务器

(2)参与事务请求 Proposal 的投票

(3)参与 Leader 选举投票

Observer

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

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

(3)不参与任何形式的投票

朋友圈分享一下

02

Zookeeper 下 Server 工作状态?

正经回答:

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

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

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

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

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

03

Zookeeper 的 数据同步 是怎样的?

正经回答:

整个集群完成 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 中最小

ZXIDmaxCommittedLog:

· 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

- End -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩说编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正经回答:
  • 正经回答:
  • 正经回答:
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档