看大数据大佬手把手带你实现基于Zookeeper
就是master,获取失败的就是slave。又或者能够获取锁的实例能够完成特定的操作。 目前比较常用的分布式锁实现有两种,基于zookeeper实现和基于redis实现。zookeeper和redis也是生产环境中经常用到的第三方组件。下面我会分析它们的实现原理。 分布式锁实现要求 实现一个分布式锁至少要满足下面三点要求:
zookeeper分布式锁 在讲解zookeeper的分布式锁之前有两个概念需要明确:
zookeeper的分布式锁实现原理就是利用临时顺序节点,大概流程为:
例如,对于加锁过程,所有的客户端都在/lock目录下面创建临时节点,如果发现自己创建的临时节点是/lock目录中最小的节点,那么就获取锁成功,否则就watch比自己小的节点中的最大节点。 监控比自己小的节点中的最大节点是为了避免“惊群”效应,避免一个锁释放把所有等待的客户端唤醒,但是只有一个客户端能获取锁。
对于释放锁,只需要把自己创建的临时顺序节点删除即可。整个过程流程图如下: (编辑:保山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |