Java分布式:分布式鎖之數據庫實現


Java分布式:分布式鎖之數據庫實現

分布式鎖系列教程重點分享鎖實現原理

鎖實現原理

  創建一張名為methodLock的數據庫表,為方法名字段(method_name)添加唯一性約束。

CREATE TABLE `methodLock` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `method_name` varchar(64) NOT NULL DEFAULT '' COMMENT '鎖定的方法名',
  `desc` varchar(1024) NOT NULL DEFAULT '備注信息',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '保存數據時間,自動生成',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uidx_method_name` (`method_name `) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='鎖定中的方法';

  每次訪問方法前,都執行插入操作:

insert into methodLock(method_name,desc) values (‘method_name’,‘desc’)

  一旦插入成功,即認為此線程上鎖成功,若插入失敗,可執行while語句,在最大等待時間內,持續嘗試插入。

  當方法執行完業務操作以后,執行DELETE語句,即視為放棄鎖,讓其他線程競爭鎖資源。

delete from methodLock where method_name ='method_name'

 

圖解

  

參考資料

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM