数据库实现分布式锁的问题及解决方案

1、利用唯一约束键存储key,insert成功表示获取锁成功,失败则获取失败,操作成功需要删除锁

问题:

~非阻塞,锁获取失败后没有排队机制,需要自己编码实现阻塞,可以使用自旋,直至获取锁

~不可重入,如果枷锁的方法需要递归,则第二次插入会失败,可以使用记录线程标识解决重入问题

~死锁,删除锁失败,则其他线程没办法获取锁,可以设置超时时间,使用定时任务检查

~数据库单点故障,数据库高可用

你可能感兴趣的:(数据库,分布式,database)