Zk分布式锁的实现
            
            
              第一种方法
 | 类似于Redis的setnx实现机制,但容易引起羊群效应
 
  | 
 
第二种方法

读写锁
1
   | 因为读读之间是不需要排他的,所以基于Curator的ReentrantReadWriteLock可以实现读写锁提高性能
 
  | 
 
原理
1 2 3
   | 1. 写入锁判断自己前面还有没有节点,如果没有就可以获取到锁,如果有就等待前面的节点释放锁。
  2. 读锁判断自己前面还有没有写入锁的节点,也就是前面的节点是否包含WRIT,如果有那么等待前面的节点释放锁。
 
  | 
 
1 2 3 4 5 6 7
   | 写入锁在申请锁时写入的节点名称是这样的   xxxx-__WRIT__00000000xxx  例如:   _c_9b6e456b-94fe-47e7-b968-34027c094b7d-__WRIT__0000000006
  读取锁在申请锁时写入的节点名称是这样的  xxxx-__READ__00000000xxx  例如:    _c_9b6e456b90-9c33-6294665cf525--b6448-__READ__0000000005
  区别就是写入锁的字符串包含WRIT,读取所包含READ
 
  |