三种分布式锁的实现方式对比

基于数据库实现

加锁,或类似redis记录数据。性能不好不用!

基于Redis实现

这是比较常用的一种实现方式。
通过setnx可以存入key,如果存入key成功返回1,如果存入的key已经存在了,返回0.如此可以判断key存在说明已经有节点调用,不存在说明没有节点调用。

基于ZooKeeper的实现

多个客户端(jvm),同时在zk上创建相同的一个临时节点,因为临时节点路径是保证唯一,只要谁能够创建节点成功,谁就能够获取到锁,没有创建成功节点,就会进行等待,当释放锁的时候,采用事件通知给客户端重新获取锁的资源。

对比

Zookeeper实现简单,但效率较低;Redis实现复杂,但效率较高。
综合对比我还是更喜欢使用redis实现分布式锁

发布了56 篇原创文章 · 获赞 4 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/xs925048899/article/details/104709058