一、Redis實作分布式鎖
1、使用Redis分布式鎖的原因:Redis性能好;指令支援比較好,實作友善。
2、實作方式:直接用int setnx寫key,如果成功了,說明擷取鎖成功,否則拿鎖失敗。拿鎖成功之後對key設定逾時時間,操作完成時可通過del key釋放鎖。
二、Zookeeper實作分布式鎖
1、通過建立zk的znode節點進行控制。檢查zookeeper叢集下的這個節點是否存在存在證明已經有鎖了,不存在就沒有。
Redis分布式鎖:必須使用者自己間隔時間輪詢去嘗試加鎖,當鎖被釋放後,存在多線程去争搶鎖,并且可能每次間隔時間去嘗試鎖的時候,都不成功,對性能浪費很大。
Zookeeper分布鎖:首先建立加鎖标志檔案,如果需要等待其他鎖,則添加監聽後等待通知或者逾時,當有鎖釋放,無須争搶,按照節點順序,依次通知使用者。
redis鎖效率更高?