目录
1、分布式锁
作为分布式锁,我觉得至少得:1. 资源唯一且能异步多线程访问; 2. 能改变状态(加锁 / 开锁);
【数据库】你可以设置字段唯一,可以创建 state 字段;
【redis】 的key唯一,能设置value状态;
【zookeeper】文件名唯一,状态通过创建文件,删除文件来表示状态;
分布式锁存在的问题:
1. 因为是分布式大系统,若分布式锁挂了影响甚大;
2. 是锁就得考虑死锁;redis设置过期时间,数据库感觉可以考虑定时开锁,zookeeper貌似也可以设置定时任务开锁;
2、实现方式
2.1 数据库实现
DROP TABLE IF EXISTS `method_lock`;
CREATE TABLE `method_lock` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`method_name` varchar(64) NOT NULL CO