基于ZOOKEEPER实现分布式锁
获得锁的规则: 当前列表中序号最小 && 当前列表中序号最小 == 我自己创建的节点
基本思想:
数据同步:
	客户端A更改了付款状态为已经付款状态,
	客户端B去获取付款状态立刻返回已经付款状态。进实时
数据监听:
	在客户端A监听付款状态节点,在客户端B更改付款状态节点的数据,
	客户端A马上收到通知信息。
	监听器监听一次就失效了。需要重新监听。
	
分布式锁实现:
	1.创建一个永久父节点A
	2.客户端启动后创建一个自己的临时节点带自增序号的放在A下
	3.获取A节点下的节点列表.SIZE = 1 就是自己刚创建的直接使用(获得锁)
		3.1 排序节点列表取最小的一个节点和自己比较如果最小的节点 == 自己创建的节点(获得锁)
	4.执行自己的业务功能
	5.释放锁(删除自己创建的节点)、临时锁断开后ZK也会删除
	6.创建锁  执行2 
	7. 和3 一样的逻辑 监听父节点A下的节点类型变化为 节点修改类型的通知 有变动再去获取比较(粗糙实现)
	8.监听当前比自己小的节点 ,比自己小 的节点有变化,下一个就是自己啦。(排队1-100  自己99号 监听98号)
    传播知识,分享快乐!
作者:IT_BULL
出处:http://www.cnblogs.com/itBulls/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
博客园-博客园。
                    
                
                
            
        
浙公网安备 33010602011771号