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'

 

图解

  

参考资料

 

posted @ 2019-11-23 12:23  子烁爱学习  阅读(925)  评论(0编辑  收藏  举报