[Java后端技术]23个带答案的Zookeeper经典面试题!( 二 )
新机器加入也是类似 , 所有机器收到通知:新兄弟目录加入 , highcount又有了 , 对于第二点 , 我们稍微改变一下 , 所有机器创建临时顺序编号目录节点 , 每次选取编号最小的机器作为master就好 。
10、Zookeeper分布式锁(文件系统、通知机制)
有了zookeeper的一致性文件系统 , 锁的问题变得容易 。 锁服务可以分为两类 , 一个是保持独占 , 另一个是控制时序 。
对于第一类 , 我们将zookeeper上的一个znode看作是一把锁 , 通过createznode的方式来实现 。 所有客户端都去创建/distribute_lock节点 , 最终成功创建的那个客户端也即拥有了这把锁 。 用完删除掉自己创建的distribute_lock节点就释放出锁 。
对于第二类 , /distribute_lock已经预先存在 , 所有客户端在它下面创建临时顺序编号目录节点 , 和选master一样 , 编号最小的获得锁 , 用完删除 , 依次方便 。
11、获取分布式锁的流程
![[Java后端技术]23个带答案的Zookeeper经典面试题!](/uploads/allimg/200307/1150543103-1.png)
文章图片
在获取分布式锁的时候在locker节点下创建临时顺序节点 , 释放锁的时候删除该临时节点 。 客户端调用createNode方法在locker下创建临时顺序节点 , 然后调用getChildren(“locker”)来获取locker下面的所有子节点 , 注意此时不用设置任何Watcher 。 客户端获取到所有的子节点path之后 , 如果发现自己创建的节点在所有创建的子节点序号最小 , 那么就认为该客户端获取到了锁 。 如果发现自己创建的节点并非locker所有子节点中最小的 , 说明自己还没有获取到锁 , 此时客户端需要找到比自己小的那个节点 , 然后对其调用exist方法 , 同时对其注册事件监听器 。 之后 , 让这个被关注的节点删除 , 则客户端的Watcher会收到相应通知 , 此时再次判断自己创建的节点是否是locker子节点中序号最小的 , 如果是则获取到了锁 , 如果不是则重复以上步骤继续获取到比自己小的一个节点并注册监听 。 当前这个过程中还需要许多的逻辑判断 。
![[Java后端技术]23个带答案的Zookeeper经典面试题!](/uploads/allimg/200307/1150544343-2.png)
文章图片
代码的实现主要是基于互斥锁 , 获取分布式锁的重点逻辑在于BaseDistributedLock , 实现了基于Zookeeper实现分布式锁的细节 。
12、Zookeeper队列管理(文件系统、通知机制)
两种类型的队列:
1)同步队列 , 当一个队列的成员都聚齐时 , 这个队列才可用 , 否则一直等待所有成员到达 。
2)队列按照FIFO方式进行入队和出队操作 。
第一类 , 在约定目录下创建临时目录节点 , 监听节点数目是否是我们要求的数目 。
第二类 , 和分布式锁服务中的控制时序场景基本原理一致 , 入列有编号 , 出列按编号 。 在特定的目录下创建PERSISTENT_SEQUENTIAL节点 , 创建成功时Watcher通知等待的队列 , 队列删除序列号最小的节点用以消费 。 此场景下Zookeeper的znode用于消息存储 , znode存储的数据就是消息队列中的消息内容 , SEQUENTIAL序列号就是消息的编号 , 按序取出即可 。 由于创建的节点是持久化的 , 所以不必担心队列消息的丢失问题 。
13、Zookeeper数据复制
Zookeeper作为一个集群提供一致的数据服务 , 自然 , 它要在所有机器间做数据复制 。 数据复制的好处:
1)容错:一个节点出错 , 不致于让整个系统停止工作 , 别的节点可以接管它的工作;
2)提高系统的扩展能力:把负载分布到多个节点上 , 或者增加节点来提高系统的负载能力;
3)提高性能:让客户端本地访问就近的节点 , 提高用户访问速度 。
从客户端读写访问的透明度来看 , 数据复制集群系统分下面两种:
1)写主(WriteMaster):对数据的修改提交给指定的节点 。 读无此限制 , 可以读取任何一个节点 。 这种情况下客户端需要对读与写进行区别 , 俗称读写分离;
推荐阅读
- 「A1canton」智慧酒店震撼来袭——虚拟现实VR篇,五大技术革新传统酒店
- 「北京头条客户端」科技部:将加大对前沿技术研发的攻关和支持力度
- 『财经涂鸦』三七互娱爆发的秘密:该用技术公司估值模型来看它了
- 2020年你应该关注的8大技术趋势,眺望曙光TVP线上技术闭门会纯享实录
- 十大突破性技术-NMN,叫你如何选择最好的NMN
- CNBC:京东智联云打造欧美企业在华首选技术服务平台
- 鲁信创投■60余家创投机构代表参加新能源与先进制造专场路演活动中国科协科学技术传播中心
- 产业气象站▲固守高端显示技术领先地位,三星、LGD皆弃LCD
- 『接风娱乐』人机对战协作新时期已经来临,提高智能化与人工智能技术趋于结合
- 安卓中国■Optimus技术,联想海外发布新款Legion游戏本,首发Advanced
