Zookeeper(一)可以用来干什么?
当我们在学习一项新技术的时候,首先应了解的就是它是用来干什么的。下面一段话是来自Zookeeper官网的一段解释:
ZooKeeper用于为分布式应用程序提供分布式并且开源的协调服务。它公开了一组简单的原语,分布式应用程序可以基于这些原语来实现用于同步,配置维护以及组和命名的更高级别的服务。
对于不了解Zookeeper的初学者来说,看完是不是很懵逼?所以本文将从程序员的角色出发,引导大家快速的去了解Zookeeper能够用来干什么。以此作为学习Zookeeper的入门,希望能够帮助到大家。
操作基于node组成的树形模型的方法很简单,无非就是创建node,删除node,监听node等简单的操作。
在介绍Zookeeper的主要用途前,我们先按不同维度将node对象划分为几种类型。
综上,node可分为四大类。持久无序、持久有序、临时无序、临时有序。
到此,我们不妨思考一下,基于node的树形结构以及四种不同的分类,可以实现什么用途呢?
思考倒计时 10......
思考倒计时 9........
思考倒计时 8........
思考倒计时 0........
有没有跟笔者一样,一个都没想出来的同学?没关系,接下来就简明说说Zookeeper到底可以用来干什么?
获得锁时,无非就是多个客户端,争着抢着去创建同一个node节点,谁第一个创建成功,谁就获得锁。
释放时,抢到锁的客户端就去删除node,然后通知其他需要创建锁的客户端,去再次争抢创建node节点。
正如我们之前介绍的一共有四种类型的node,那么创建时我们该选择哪种类型呢?
如果选择持久node,那当持有该node锁的客户端出现网络故障后,会产生什么问题呢?客户端是不是就无法主动删除node,导致锁无法正常释放了!所以我们应选用临时node,这样即时故障后,node锁也会随着会话结束而删除。
至于有序还是无序的node,则需要根据不同类型的锁来选择。例如:实现非公平独占锁,我们就选择无序;实现公平锁或共享锁,我们就选择有序。实现原理很简单,小伙伴们可以自己稍作思考,本文不再细说。
Master的选举过程其实类似node锁的创建,删除与监听。
临时node由客户端A创建,所以客户端A所在服务器当选为master。
前面介绍过,node组成了树形结构。类似操作系统中的文件路径,树形分支上的node名称拼接成的全路径,它必定是唯一的。因此我们可以使用node的全路径作为命名方式。
本文作为Zookeeper的入门篇,主要从Node对象的角度讲解了Zookeeper可以用来干么。当然Node的设计还有更多可具体深入的地方。Zookeeper也不仅只有Node,还有更多值得我们学习的知识,例如:Watcher机制,如何保障事务的顺序一致性、集群间数据的一致性,以及必须要知道的ZAB协议等等。
最后祝大家看完此文后能够有所收获!
2024-12-27 广告