【Zookeeper技术栈篇】高频面试点

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: zookeeper的选举机制其实就是zab(原子广播)的恢复机制选举有两种, 一种是basic paxos算法,一种是fast paxos算法默认的半数选举机制是fast paxos算法,当有一半以上的节点选举时, 这个节点就是leader.
  1. Zookeeper的选举过程

zookeeper的选举机制其实就是zab(原子广播)的恢复机制

选举有两种, 一种是basic paxos算法,一种是fast paxos算法

默认的半数选举机制是fast paxos算法,当有一半以上的节点选举时, 这个节点就是leader.

假如有五台节点组成的集群, 当第一台节点启动时, 他把票投给自己, 但是它发出去的报文没响应,所以它的状态是looking, 当第二台节点启动, 他们都各自把票投给自己, 这是第二台的myid 大,他的权重大, 第一台节点改票为第二台, 但是第二台的票数未过半, 所以两台都为looking状态. 第三台启动, 他们同样的选举, 最后第三台myid大,胜出,且票数过半, 当选为leader 一二台为follower. 第四台启动, 由于已经选出来了leader了, 所以第四台也只能是follower.

  1. Zookeeper的角色

zk提供了什么,简单的说,zookeeper=文件系统+通知机制

1、领导者(leader),负责进行投票的发起和决议,更新系统状态

2、学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票

3、Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度

4、客户端(client),请求发起方

  1. Zookeeper的核心

核心原理(ZAB协议)

Zookeeper的核心是原子广播(Zookeeper Atomic Broadcast),这个机制保证了各个Server之间的同步。实现这个机制的协议叫做ZAB协议。

  1. Zab原理

Zab协议要求每个 Leader 都要经历三个阶段:发现,同步,广播。

发现:要求zookeeper集群必须选举出一个 Leader 进程,同时 Leader 会维护一个 Follower 可用客户端列表。将来客户端可以和这些 Follower节点进行通信。

同步:Leader 要负责将本身的数据与 Follower 完成同步,做到多副本存储。这样也是提现了CAP中的高可用和分区容错。Follower将队列中未处理完的请求消费完成后,写入本地事务日志中。

广播:Leader 可以接受客户端新的事务Proposal请求,将新的Proposal请求广播给所有的 Follower。

  1. Zookeeper的读写请求

Zookeeper 客户端会随机的链接到 zookeeper 集群中的一个节点

如果是读请求,就直接从当前节点中读取数据;

如果是写请求,那么节点就会向 Leader 提交事务,Leader 接收到事务提交,会广播该事务,只要超过半数节点写入成功,该事务就会被提交。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
5月前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
526 2
|
5月前
|
消息中间件 负载均衡 Kafka
【大厂面试演练】听说你很懂ZooKeeper?那我考考你
面试官:看你简历写了精通ZooKeeper,那我就随便考考你吧。首先我上面说的共享锁实现方式如果在集群不大的情况下是可行的,而且他实现简单实用。而如果在集群规模大的场景下,可以这样改进...
202 3
【大厂面试演练】听说你很懂ZooKeeper?那我考考你
|
存储 算法 Java
准备跳槽必看的这道【Java面试题】:谈谈你对Zookeeper 选举原理的理解
一位工作了 7 年的程序员,最近在面试时被问到一个关于Zookeeper的问题。因为平时很少研究,所以面试的时候只能一直说:不知道,不知道,不知道。当时,他感觉很尴尬,面试还没结束,就已经知道应该被Pass了。于是又来问我,希望我能分享一期这样的视频。
97 2
|
4月前
|
缓存 NoSQL 数据库
分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
98 0
|
5月前
|
缓存 NoSQL Redis
Java技术栈Redis面试总结(全面,实时更新)
Java技术栈Redis面试总结(全面,实时更新)
|
5月前
|
缓存 架构师 Java
Java开发三年,花费半年时间学完这些技术栈,面试定级阿里P7
现在 Java 相关岗位薪资越来越高、涨幅越来越大。 通过职友集数据可以查看,以北京 Java 相关岗位为例,其中 【20k-30k】 薪酬的 Java 工程师,占到了整体从业者的 30.8%!
|
消息中间件 存储 分布式计算
程序员转型到互联网面试必问题:谈谈你对Zookeeper的理解
对一个没有接触过分布式的小伙伴来说,可能还不太清楚Zookeeper在分布式应用中的重要性,今天有位从传统行业转型到互联网的小小伙伴问我,希望跟他讲讲Zookeeper什么,能解决什么问 题?今天,我给大家详细介绍一下。
81 1
|
敏捷开发 Cloud Native Go
做好面试前的功课:了解公司文化和技术栈
做好面试前的功课:了解公司文化和技术栈
71 0
|
NoSQL 算法 Java
高频面试题实现分布式锁中,zookeeper和Redis哪种更好?
一位6年工作经验的小伙伴,在某厂面试时被问到“实现分布式锁,Zookeeper 和 Redis 哪种更好?“,这其实是一个开放性的问题。并没有标准答案。那今天呢,我给大家分享一下我的理解,希望能够帮助到大家。
239 0
高频面试题实现分布式锁中,zookeeper和Redis哪种更好?
|
消息中间件 NoSQL Java
2023年秋招,金九银十Java后端最全面试攻略,吃透25个技术栈
前言 我分享的这份春招,金三银四Java后端开发面试总结包含了JavaOOP、Java集合容器、Java异常、并发编程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL数据库、消息中间件MQ、Dubbo、Linux、ZooKeeper、 分布式&数据结构与算法等25个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份PDF拿下众多大厂的offer,今天在这里总结分享给到大家!