zk分布式锁
1. 锁的类型实现
独占锁:用znode来看做一把锁,通过create znode
来实现。只有创建成功的才拥有这把锁。
时序锁:在znode的节点下面创建一些临时有序的节点。通过父节点distribute_lock来维持一份sequence,保证子节点创建时序,形成全局时序。
2. redis锁和zk锁的区别redis的优点:
优点:
- 速度快
缺点: - 在分布式情况下,redis主设置了key,但是没有同步的情况下,主挂了。导致其他线程也能正常上锁了。
zk锁的优点:
1. 锁失效实现简单,临时的节点绑定的是client端,只要client端锻炼自动失效,不需要实现过期时间然后不需要关心业务时间。
2. 锁不需要去循环轮询的方式去查看是不是可以获取锁,可以通过watch来实现。采用监听通知的模型。
缺点:
频繁的删除节点,性能不如redis