Zookeeper(一)可以用来干啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper(一)可以用来干啥?相关的知识,希望对你有一定的参考价值。

参考技术A

当我们在学习一项新技术的时候,首先应了解的就是它是用来干什么的。下面一段话是来自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协议等等。

最后祝大家看完此文后能够有所收获!

以上是关于Zookeeper(一)可以用来干啥?的主要内容,如果未能解决你的问题,请参考以下文章

Zookeeper原理 一

python zookeeeper 学习和操作

Zookeeper 入门第一篇

zookeeper 实战操作

Python一般可以用来干啥呢?

Zookeeper的简单入门