zookeeper和redis分布式锁对比

zookeeper实现分布式锁方式:
1.在某父节点下创建临时的顺序节点
2.获取父节点下的所有节点,然后查看自己创建的节点是不是其中顺序最小的,
  是的话则获取锁成功,然后执行自己的业务,最后删除节点
  不是的话,监听上一个节点的删除事件,得到通知后,再查询一次父节点下所有节点,然后再判断自己是否顺序最小。
3.如客户端获取锁后宕机了,zookeeper能自动检测到,然后把其创建的临时节点删了。

curator框架实现了zookeeper分布式锁,使用方法如下:
//在/myLocks/lock1节点下创建临时节点,实现分布式锁
InterProcessMutex lock = new InterProcessMutex(client, "/myLocks/lock1");
lock.acquire();
System.out.println("处理业务);
lock.release();

zookeeper和redis分布式锁对比
1.对高并发,性能要求比较高时,推荐使用redis,此时如果对高可用要求也高,可以搭建多个Redis单位使用RedLock算法。
2.对性能要求不高,直接用zookeeper方便,zookeeper是CP模式,注重一致性,每个节点间的数据都会保持一致,
  不会出现主从不同步问题,所以可以直接使用zookeeper集群实现高可用,不用搭建多个zookeeper单位。

你可能感兴趣的:(zookeeper,zookeeper)