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

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

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

问题导读

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

二、分布式集群中为什么会有 Master?

三、zookeeper 节点宕机如何处理?

01

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

正经回答:

zookeeper 采用了全局递增的事务 Id 来标识,所有的 proposal(提议)都在被提出的时候加上了 zxid,

zxid 实际上是一个 64 位的数字,高 32 位是 epoch( 时期; 纪元; 世; 新时代)用来标识 leader 周期,

如果有新的leader 产生出来,epoch 会自增。

低 32 位用来递增计数,当新产生 proposal 的时候,会依据数据库的两阶段过程,首先会向其他的 server 发出事务执行请求,

如果超过半数的机器都能执行并且能够成功,那么就会开始执行。

分享朋友圈,每天进步一点点~

02

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

正经回答:

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

03

zookeeper 节点宕机如何处理?

正经回答:

Zookeeper 本身也是集群,推荐配置不少于 3 个服务器。

Zookeeper 自身也要 保证当一个节点宕机时,其他节点会继续提供服务。

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

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

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

所以

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

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

- End -

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正经回答:
  • 正经回答:
  • 正经回答:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档