前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zookeeper知识点梳理,面试必看

zookeeper知识点梳理,面试必看

作者头像
公众号 IT老哥
修改2020-09-21 15:08:52
5600
修改2020-09-21 15:08:52
举报

本文源自 公-众-号 IT老哥 的分享

IT老哥,一个在大厂做高级Java开发的程序员,每天分享技术干货文章

1、zookeeper是什么

zookeeper是一个分布式的,开发源码的分布式应用程序协调服务,它是集群的管理者,监视着集群的各个节点根据节点提交的反馈进行下一步合理的操作

2、zookeeper提供了什么

文件系统、通知机制

3、zookeeper文件系统

zookeeper提供一个多层次节点的命名空间(节点名称叫znode),与文件系统不同的是,这些节点都可以设置关联 的数据,zookeeper为了保证高吞吐量和低延迟,在内存中维护了这个树状结构,这个特性使得zookeeper不能存储搭大量的数据,每个节点的上限为1M

4、znode4种类型

1、persistent—持久性目录节点,当客户端会话结束,此节点依然存在

2、persistent_sequential,持久性有顺序编号节点,zookeeper自动为你产生后面的序号(10位的数字)

3、ephemeral,临时目录节点,当客户端结束会话,此临时节点被删除,如果是正常结束会话,基本上无延时删除临时节点,如果是强制关闭会话,会有一定的延迟删除临时节点

4、ephemeral_sequential,临时有顺序目录节点,zookeeper自动生成序号(10位的数字)

5、zookeeper通知机制

client会对某个znode设置一个watcher事件,当这个znode发生改变时,zk会通知客户端znode的变化,注意:watcher监听事件是一次性操作,不会一直有效监听

6、zookeeper做了什么

命名服务、配置管理、集群管理、分布式锁、队列管理

6.1 命名服务(文件系统)

命名服务是指通过指定名称来获取资源或者服务地址,利用zk创建一个全局的路径,路径是唯一的,同一层目录不能有相同的目录名

6.2 配置管理

程序分布式的部署到多个机器上,将配置文件信息放到某一个znode上,当配置文件改变,zk会通知设置了watcher这个znode的客户端,客户端从这个znode上获取到最新的配置文件进行配置

6.3 集群管理

集群新机器加入与老机器退出,机器master选举

所有机器约定在父目录下创建一个临时目录节点,监听父目录下临时节点的子节点变化,一旦有机器加入或者机器宕机,其他机器就会收到通知

6.4 分布式锁(文件系统,通知机制)

zk是一致性文件系统,目录具有唯一性,zk的锁分为独占锁和时序锁

独占锁:zk上的znode看做是一把锁,通过createznode创建一个临时目录,当所有客户端去创建这个znode时,谁创建成功了,谁就抢到锁了,当处理完业务结束会话时删除临时目录,相当于释放锁,其他客户端在进行创建znode抢锁

时序锁:在一个已经存在的znode下面,所有客户端创建临时顺序目录znode,顺序号最小的节点最先获得锁,使用完释放锁,让下一个顺序号获取锁

客户端设置watcher在znode上,监听节点变化信息

6.5 队列管理(文件系统,通知机制)

1、同步队列,当这个队列的所有成员都到齐后才能开始使用,否则一直等待成员到齐,在约定目录下创建临时节点,监听这个临时节点下所有子节点是否全部到齐

2、FIFO进队和出队操作,入队有编号,出队按照编号,在特定的目录下创建一个persistent_sequential节点,创建成功队列watcher监听到目录变化,队列删除序列号最小的一个节点来消费,此时znode用于消息存储,znode里存储的数据就是队列里的消息内容,sequential是队列的消费序号,因为创建的是persistent_sequential节点,所以不怕数据丢失

7、zookeeper数据复制

zk做为一个集群对外提供一致性服务,所以集群间机器要同步复制数据,数据复制好处如下:

1、容错性:一个节点宕机,不至于整个集群不能对外提供服务

2、提高系统的扩展能力:增加节点提高负载能力

3、提高性能:让客户端本地访问就近的节点,提高访问速度

数据集群复制分为以下两种:

1、写主:对数据的修改提交要到指定的服务器,读数据没有限制,任何一个节点都可以,所以客户端要区分读和写,俗称读写分离

2、写任意:对数据的修改可以提交给任意一台服务器

zk采用的是写任意,通过增加机器,读吞吐能力和响应能力会提高,但是写吞吐能力下降(这也是建立obeserver的原因)

8、zookeeper工作原理

zk的核心是原子广播,这个机制是各个服务器之间保持数据状态同步的关键,实现这个机制的协议是zab协议,zab协议有两种模式,分别是恢复模式(选主)和广播模式(同步数据状态),当服务启动或者master崩溃后,zab进入恢复模式进行选主,当选出主节点并且大多数flow和master同步完数据状态后恢复模式结束,状态同步保证了master和follow具有相同的系统状态

9、zookeeper保证事物顺序一致性

zk采用递增的事物id来标识,所有的proposal(提议)在提出时都加上了zxid,zxid是一个64位的数字,高32位是epoch(时期; 纪元; 世; 新时代)用来标识master是否发生改变,如果有新的master被选举出来,那么epoch自增,低32位用来递增计数。新的proposal产生的时候,会像其他服务器发出事物执行请求,如果超过半数的服务器都能执行并且成功,那么就会开始执行

10、zookeeper的工作状态

1、looking:不知道master是谁,正在查找master

2、leading:当前server就是被选举出来的master

3、following:master已经选举出来,当前server与之同步

11、zookeeper同步过程

当zab完成恢复模式,就会进入广播模式,开始master与follow之间的同步

1、master等待follow的连接

2、follow连接master,将自己最大的zxid发送给master

3、master根据follow的zxid确定同步点

4、完成同步后通知follow已经成为uptodate状态

5、follow接收到uptodate状态后,又可以对客户端请求进行提供服务了

12、 zookeeper中主节点的作用

在分布式环境中,zookeeper集群有些业务逻辑通过master去计算,其他follow共享这个计算结果,大大的减少了重复数据计算,提高性能

13、zookeeper宕机处理

zookeeper集群默认server公式:(2n+1) ,不少于3台,当server宕机时,只要存活的server不少于(2n+1)/2个,就能进行选主,对外进行提供服务,数据不会丢失,因为广播模式使得每台机器上都有数据副本

云服务器云硬盘数据库(包括MySQL、Redis、MongoDB、SQL Server),CDN流量包,短信流量包,cos资源包,消息队列ckafka,点播资源包,实时音视频套餐,网站管家(WAF),大禹BGP高防(包含高防包及高防IP),云解析SSL证书,手游安全MTP移动应用安全云直播等等。

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

本文分享自 IT老哥 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文源自 公-众-号 IT老哥 的分享
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档