分布式锁理论
一、Mysql分布式锁
1.基于表记录
2.乐观锁
3.悲观锁
二、Redis分布式锁
三、zookeeper分布式锁
zk的客户端可以在znode上添加一个watch,用来监听znode相关事件并被通知
羊群效应就是 一个特定的znode 改变的时候ZooKeper 触发了所有watches 的事件。
举个例子,如果有1000个客户端watch 一个znode的exists调用,当这个节点被创建的时候,将会有1000个通知被发送。这种由于一个被watch的znode变化,导致大量的通知需要被发送,将会导致在这个通知期间的其他操作提交的延迟。因此,只要可能,我们都强烈建议不要这么使用watch。仅仅有很少的客户端同时去watch一个znode比较好,理想的情况是只有1个。