学科分类
目录
Hadoop技术栈

分布式锁

分布式锁,这个主要得益于ZooKeeper为我们保证了数据的强一致性。锁服务可以分为两类,一个是保持独占,另一个是控制时序。

所谓保持独占,就是将所有试图来获取这个锁的客户端,最终只有一个客户端可以成功获得这把锁,从而执行相应操作(通常的做法是把Zookeeper上的一个Znode看作是一把锁,通过创建临时节点的方式来实现);

控制时序则是所有试图来获取锁的客户端,最终都会被执行,只是存在了全局时序。它的实现方法和保持独占基本类似,这里/distribute_lock预先存在,那么客户端在它下面创建临时序列化节点(这个可以通过节点的属性控制:CreateMode.EPHEMERAL_SEQUENTIAL来指定),并根据序列号大小进行时序性操作。接下来,我们介绍分布式锁的主要应用场景。

当所有客户端都去创建/distribute_lock临时非序列化节点,那么最终成功创建的客户端也即拥有了这把锁,拥有了访问该数据的权限,当操作完毕后,断开与Zookeeper连接,那么该临时节点就会被删除,如果其他客户端需要操作这个文件,客户端只需监听这个目录是否存在即可。

点击此处
隐藏目录