分布式鎖的三種實(shí)現(xiàn)方式http://www.cnblogs.com/austinspark-jessylu/p/8043726.html 基于數(shù)據(jù)庫實(shí)現(xiàn)分布式鎖; 基于緩存(Redis等)實(shí)現(xiàn)分布式鎖; 基于Zookeeper實(shí)現(xiàn)分布式鎖; 基于數(shù)據(jù)庫的實(shí)現(xiàn)方式的核心思想是:在數(shù)據(jù)庫中創(chuàng)建一個表,表中包含方法名等字段,并在方法名字段上創(chuàng)建唯一索引,想要執(zhí)行某個方法,就使用這個方法名向表中插入數(shù)據(jù),成功插入則獲取鎖,執(zhí)行完成后刪除對應(yīng)的行數(shù)據(jù)釋放鎖。 1、選用Redis實(shí)現(xiàn)分布式鎖原因: (1)Redis有很高的性能; 2、使用命令介紹: (1)SETNX
(2)expire
(3)delete
在使用Redis實(shí)現(xiàn)分布式鎖的時(shí)候,主要就會使用到這三個命令。 基于ZooKeeper的實(shí)現(xiàn)方式ZooKeeper是一個為分布式應(yīng)用提供一致性服務(wù)的開源組件,它內(nèi)部是一個分層的文件系統(tǒng)目錄樹結(jié)構(gòu),規(guī)定同一個目錄下只能有一個唯一文件名。基于ZooKeeper實(shí)現(xiàn)分布式鎖的步驟如下: (1)創(chuàng)建一個目錄mylock; 這里推薦一個Apache的開源庫Curator,它是一個ZooKeeper客戶端,Curator提供的InterProcessMutex是分布式鎖的實(shí)現(xiàn),acquire方法用于獲取鎖,release方法用于釋放鎖。 |
|