程序员:面试官,ELK原来这么简单

广播模式需要保证 proposal 被按顺序处理,因此 zk 采用了递增的事务 id 号(zxid)来保证。所有的提议(proposal)都在被提出的时候加上了 zxid。

实现中 zxid 是一个 64 为的数字,它高 32 位是 epoch 用来标识 leader 关系是否改变,每次一个 leader 被选出来,它都会有一个新的 epoch。低 32 位是个递增计数。

当 leader 崩溃或者 leader 失去大多数的 follower,这时候 zk 进入恢复模式,恢复模式需要重新选举出一个新的 leader,让所有的 server 都恢复到一个正确的状态。

如果往多了来讲,它内部原理具体分为以下十项:

  1. 请求、事务和标识符
  2. 群首选举
  3. Zab:状态更新的广播协议
  4. 观察者
  5. 服务器的构成
  6. 本地存储
  7. 服务器与会话
  8. 服务器与监视点
  9. 客户端
  10. 序列化

**面试官:**怎么样小伙子?知道了吗?

**程序员Y:**虽然听了半天我也没有听懂你说的什么,但是感觉很有道理的样子,告辞!

程序员Y头也没回的走出了面试房间…

**面试官赶忙擦了一把汗:**还好是我知道的zk,要是前面几个什么kafka、RabbitMQ,就出丑大了

**面试官(拿出手机,拨出一个电话):**喂,是人事吗?你们怎么回事?我这里招的是中高级程序员,给出的薪资是24K,你们是不是把隔壁部门的初级岗位应聘者丢我这里来了?

看完上面的小故事,小on就来给大家分享Zookeeper的相关知识了。

注意:以下内容摘自一份283页的pdf,《Java核心技术点》↓

还有一些大厂面试真题↓

需要的程序员朋友,私信霸哥【面试】免费领取!

Zookeeper 概念

Zookeeper 是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。Zookeeper 提供了一个类似于 Linux 文件系统的树形结构(可认为是轻量级的内存文件系统,但只适合存少量信息,完全不适合存储大量文件或者大文件),同时提供了对于每个节点的监控与通知机制。

Zookeeper 角色

Zookeeper 集群是一个基于主从复制的高可用集群,每个服务器承担如下三种角色中的一种

Leader

  • 一个 Zookeeper 集群同一时间只会有一个实际工作的 Leader,它会发起并维护与各 Follwer及Observer间的心跳。
  • 所有的写操作必须要通过 Leader 完成再由 Leader 将写操作广播给其它服务器。只要有超过半数节点(不包括 observeer 节点)写入成功,该写请求就会被提交(类 2PC 协议)。

Follower

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

image

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

资料领取方式:点击这里下载

image

资料领取方式:点击这里下载](https://gitee.com/vip204888/java-p7)

[外链图片转存中…(img-7no8gpi6-1628633146733)]

搜集费时费力,能看到此处的都是真爱!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值