Java分布式:分布式锁之数据库实现

网友投稿 618 2023-04-06

Java分布式:分布式锁之数据库实现

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'

图解

参考资料

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:从TiDB学习分布式数据库
下一篇:SQL分布式查询、跨数据库查询
相关文章