NO1:说说zookeeper是什么?

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现(Chubby是不开源的),它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 。

Zookeeper一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心,服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到Zookeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据,简单示例图如下:

NO2:了解Zookeeper的系统架构吗?

ZooKeeper 的架构图中我们需要了解和掌握的主要有:

(1)ZooKeeper分为服务器端(Server) 和客户端(Client),客户端可以连接到整个 ZooKeeper服务的任意服务器上(除非 leaderServes 参数被显式设置, leader 不允许接受客户端连接)。

(2)客户端使用并维护一个 TCP 连接,通过这个连接发送请求、接受响应、获取观察的事件以及发送信息。如果这个 TCP 连接中断,客户端将自动尝试连接到另外的 ZooKeeper服务器。客户端第一次连接到 ZooKeeper服务时,可以接受这个连接的 ZooKeeper服务器会为这个客户端建立一个会话。当这个客户端连接到另外的服务器时,这个会话会被新的服务器重新建立。

(3)上图中每一个Server代表一个安装Zookeeper服务的机器,即是整个提供Zookeeper服务的集群(或者是由伪集群组成);

(4)组成ZooKeeper服务的服务器必须彼此了解。它们维护一个内存中的状态图像,以及持久存储中的事务日志和快照, 只要大多数服务器可用,ZooKeeper服务就可用;

(5)ZooKeeper 启动时,将从实例中选举一个 leader,Leader 负责处理数据更新等操作,一个更新操作成功的标志是当且仅当大多数Server在内存中成功修改数据。每个Server 在内存中存储了一份数据。

(6)Zookeeper是可以集群复制的,集群间通过Zab协议(Zookeeper Atomic Broadcast)来保持数据的一致性;

(7)Zab协议包含两个阶段:leader election阶段和Atomic Brodcast阶段。

  • a) 集群中将选举出一个leader,其他的机器则称为follower,所有的写操作都被传送给leader,并通过brodcast将所有的更新告诉给follower。
  • b) 当leader崩溃或者leader失去大多数的follower时,需要重新选举出一个新的leader,让所有的服务器都恢复到一个正确的状态。
  • c) 当leader被选举出来,且大多数服务器完成了 和leader的状态同步后,leadder election 的过程就结束了,就将会进入到Atomic brodcast的过程。
  • d) Atomic Brodcast同步leader和follower之间的信息,保证leader和follower具有形同的系统状态。

NO3:能说说Zookeeper的工作原理?

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

Zab协议有两种模式,它们 分别是恢复模式(选主)和广播模式(同步)。

Zab协议 的全称是 Zookeeper Atomic Broadcast** (Zookeeper原子广播)。Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。Zab协议要求每个 Leader 都要经历三个阶段:发现,同步,广播。

当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。

为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加 上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一 个新的epoch,标识当前属于那个leader的统治时期。第32位用于递增计数。

epoch:可以理解为皇帝的年号,当新的皇帝leader产生后,将有一个新的epoch年号。

每个Server在工作过程中有三种状态:

  • LOOKING:当前Server不知道leader是谁,正在搜寻。
  • LEADING:当前Server即为选举出来的leader。
  • FOLLOWING:leader已经选举出来,当前Server与之同步。

NO4:Zookeeper为什么要这么设计?

ZooKeeper设计的目的是提供高性能、高可用、顺序一致性的分布式协调服务、保证数据最终一致性。

高性能(简单的数据模型)

  1. 采用树形结构组织数据节点;
  2. 全量数据节点,都存储在内存中;
  3. Follower 和 Observer 直接处理非事务请求;

高可用(构建集群)

  1. 半数以上机器存活,服务就能正常运行
  2. 自动进行 Leader 选举

顺序一致性(事务操作的顺序)

  1. 每个事务请求,都会转发给 Leader 处理
  2. 每个事务,会分配全局唯一的递增id(zxid,64位:epoch + 自增 id)

最终一致性

  1. 通过提议投票方式,保证事务提交的可靠性
  2. 提议投票方式,只能保证 Client 收到事务提交成功后,半数以上节点能够看到最新数据

NO5:你知道Zookeeper中有哪些角色?

系统模型:

领导者(leader)

Leader服务器为客户端提供读服务和写服务。负责进行投票的发起和决议,更新系统状态。

学习者(learner)

  • 跟随者(follower) Follower服务器为客户端提供读服务,参与Leader选举过程,参与写操作“过半写成功”策略。
  • 观察者(observer) Observer服务器为客户端提供读服务,不参与Leader选举过程,不参与写操作“过半写成功”策略。用于在不影响写性能的前提下提升集群的读性能。

客户端(client):服务请求发起方。

NO6:你熟悉Zookeeper节点ZNode和相关属性吗?

节点有哪些类型?

Znode两种类型:

持久的(persistent):客户端和服务器端断开连接后,创建的节点不删除(默认)。

短暂的(ephemeral):客户端和服务器端断开连接后,创建的节点自己删除。

Znode有四种形式:

  • 持久化目录节点(PERSISTENT):客户端与Zookeeper断开连接后,该节点依旧存在持久化顺序编号目录节点(PERSISTENT_SEQUENTIAL)
  • 客户端与Zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号:临时目录节点(EPHEMERAL)
  • 客户端与Zookeeper断开连接后,该节点被删除:临时顺序编号目录节点(EPHEMERAL_SEQUENTIAL)
  • 客户端与Zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

「注意」:创建ZNode时设置顺序标识,ZNode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护。

Ending

Tip:由于文章篇幅有限制,下面还有20个关于MySQL的问题,我都复盘整理成一份pdf文档了,后面的内容我就把剩下的问题的目录展示给大家看一下,点击这里即可解锁全部内容!

如果觉得有帮助不妨【转发+点赞+关注】支持我,后续会为大家带来更多的技术类文章以及学习类文章!(阿里对MySQL底层实现以及索引实现问的很多)

类文章以及学习类文章!**(阿里对MySQL底层实现以及索引实现问的很多)

[外链图片转存中…(img-e2NsNkLi-1626046387638)]

[外链图片转存中…(img-EulpLLEk-1626046387640)]

吃透后这份pdf,你同样可以跟面试官侃侃而谈MySQL。其实像阿里p7岗位的需求也没那么难(但也不简单),扎实的Java基础+无短板知识面+对某几个开源技术有深度学习+阅读过源码+算法刷题,这一套下来p7岗差不多没什么问题,还是希望大家都能拿到高薪offer吧。

mysqlfront无法连接到数据库,文末有彩蛋相关推荐

  1. Android中的状态保存-SharedPreferences和Bundle(文末小彩蛋)

    SharedPreferences 是使用键值对的方式来存储数据的.也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来.而且Shared ...

  2. 科普:什么是ChatGPT?(文末有彩蛋)

    科普:什么是ChatGPT?(文末有彩蛋) ChatGPT介绍 ChatGPT是OpenAI开发的一个大型预训练语言模型.它是GPT-3模型的变体,GPT-3经过训练,可以在对话中生成类似人类的文本响 ...

  3. Python3,网站搭建之数据库表设计及数据存储!文末的彩蛋,我酸了~

    搭建自己的网站,是作为一个码农成功标志之一, 那其他成功标志有啥呢, 嘿- 左手搂着白富美,右手撸着小烧烤,脚底踩着桑塔纳- 嗯~ 这么潇洒的人生,就从数据库表设计及数据存储开始吧! 数据库表设计及存 ...

  4. 五一在家宅5天?前端开发工程师必读书单送给你!(文末大彩蛋!)

    OMG,据说五一小长假马上就来了,所以你要去旅游(惊恐表情)了吗?如果你没有这项计划,小编建议你"用阅读丈量世界"! 今天为大家准备了前端开发工程师必读书单, 趁着京东423世界图 ...

  5. 做不背锅的运维(文末有彩蛋!)

    系统出了故障,第一个挨板子的就是运维人员.不管任何原因,先找运维,给他一口好锅.运维好苦啊!稳定运行时,似乎是多余的存在:有问题时,要替人背锅.与其被动,不如主动一点,不做背锅侠! 怎么做呢?先看几个 ...

  6. 说说每月至少一次的那点事,文末有彩蛋!

    老读者知道的,每个月都会有那么一次,图灵教育出版社的小姐姐会赞助一些 IT 优质书籍,我都会拿来反馈给读者,这个月也一样.无套路送书 9 本,以下 3 种书籍各自  3 本. 不用你看一堆公众号二维码 ...

  7. 骨髓基质在正常和白血病个体中的细胞图谱|Cell最新(文末有彩蛋)

    文章解读:Tiger 文章校对:生信宝典 研究背景 基质细胞是几乎每个器官中都存在的定义不明确的非实质成分,在器官发育,体内平衡和修复中起关键作用.对骨髓基质的研究已经确定了干细胞生态位中的基质细胞的 ...

  8. 新年伊始,我们共赴数据盛宴,与未来对话!​(文末有彩蛋)

    2018年1月3日,第四届清华大学大数据人才新春交流会如期而至.本届交流会继续秉承"跨界融合.谋求共赢"的理念,邀请了数据科学研究院管理委员会及教育指导委员会的代表.大数据培养项目 ...

  9. 新年伊始,我们共赴数据盛宴,与未来对话 !​(文末有彩蛋)

    2018年1月3日,第四届清华大学大数据人才新春交流会如期而至.本届交流会继续秉承"跨界融合.谋求共赢"的理念,邀请了数据科学研究院管理委员会及教育指导委员会的代表.大数据培养项目 ...

  10. 你们猜猜,哪个省的女生最爱丰胸?文末有彩蛋!

    本文图文来自好奇博士,数据来自天猫官方 来来来,彩蛋来了,文末送书10本,非常感谢北大出版社的大力支持.都是不错的Python好书,大家可以试一下手气哦! <Python数据分析全流程实操指南& ...

最新文章

  1. Vijos1683 有根树的同构问题
  2. java -cp 引用多个包_javac编译单文件、多文件引入jar包、-cp解决无法加载主类问题...
  3. 串口通信的基本原理----STM32
  4. malloc/free 和 new/delete
  5. 二叉树前序遍历、中序遍历、后序遍历手稿
  6. Xception总结
  7. 导致解码延时/丢帧的语法元素—H264
  8. 测试用例的优先级概念
  9. Linux 下rzsz最新安装方法
  10. #PLC_一次看懂数位低通滤波器设计(含代码实现)
  11. Win10 快速检查修复系统方法
  12. 3DText无法被物体遮挡 - 解决
  13. 网络营销策略——4P
  14. 凛冬至送温暖,无价资源免费送
  15. 《星际探索》首席数码绘景师为你解析Blender场景制作
  16. 前端页面div设计的css模板
  17. android shape画虚线
  18. 数字书法教室/智慧书法教室
  19. shell的echo命令
  20. Spring Data Commons主要梳理

热门文章

  1. [Android]简易播放视频
  2. 使用 Windows AIK 创建自定的客户端系统WIM文件
  3. 数商云电子税务系统搭建方案:财税务、资金预算管理全面智能化、数字化
  4. 苹果ppt_苹果PPT动画真的太酷了~用PPT也能做出来吗?是的
  5. 使用由 Python 编写的 lxml 实现高性能 XML 解析
  6. 与“色情”割席,陌生人社交如何重塑品牌形象?
  7. 学习笔记—网页设计基础知识(一)
  8. MMC型APF,MMC型statcom,MMC型储能系统,MMC-HVDC
  9. 微信开发者工具代码管理
  10. java 根据gps坐标计算总里程