美文网首页我爱编程
分布式锁-记录

分布式锁-记录

作者: 板栗南瓜 | 来源:发表于2018-06-21 12:09 被阅读0次

本质

个人理解:在应用多机器集群部署环境下,针对特定业务场景为保证数据正确性,强制相关业务逻辑在集群范围内串行运行

典型业务场景

1. 全局参数设置

2. 特定业务消息消费

实现方式

分布式锁实现关键点:1、引入第三方介质构建锁对象   2、集群范围内同一时间只有唯一运行单元持有锁   3、防止死锁    4、特性扩充(阻塞、可重入)  5、执行性能。目前主要实现方式:数据库、高速缓存、zookeeper。

数据库

锁对象—— 构建锁信息表存储锁对象,对象信息可以为:方法名、获取时间、过期时间、自定义信息等

锁持有唯一性保证——数据库唯一键约束保证,根据业务场景设定唯一键(如:方法名)

防止死锁——定时任务轮询,通过判断过期时间主动删除锁对象信息

特性扩充——阻塞(自旋轮询)、可重入(调整唯一键信息)

执行性能——较差

zookeeper

锁对象—— 特定有序节点,最小序列节点构建方持有锁

锁持有唯一性保证—— 节点文件名唯一性、顺序节点、数据一致性

防止死锁—— 临时顺序节点,客户端异常断开自动清除

特性扩充—— 阻塞(通过Watcher 机制,监听比自己序列小节点)、重入(不支持?)

执行性能—— 文件机制限制性能一般

高速缓存(redis)

锁对象—— K-V结构缓存锁对象, key:自定义资源名称(可以为方法名)  value:唯一标识随机数(可以为时间+IP),用于判定持有者

锁持有唯一性保证—— 多个redis master节点(不需要复制数据),客户端在这些节点上请求锁,若N/2+1节点设置成功则获取锁成功

特性扩充—— 阻塞(随机延时轮询重试)、可重入(Lua判定 value信息)

执行性能—— 应该是最高的

参考链接

https://www.cnblogs.com/siodoon/articles/5321987.html

http://ifeve.com/redis-lock/

相关文章

  • 分布式锁

    为什么要用分布式锁 数据库乐观锁redis分布式锁zookeeper分布式锁 使用分布式锁的场景 实现分布式锁的方...

  • 分布式锁-记录

    本质 个人理解:在应用多机器集群部署环境下,针对特定业务场景为保证数据正确性,强制相关业务逻辑在集群范围内串行运行...

  • 什么是分布式锁?几种分布式锁分别是怎么实现的?

    一、什么是分布式锁: 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资...

  • 4:Redis 分布式锁 (文末有项目连接)

    1:什么是缓存分布式锁 2:分布式锁的关键代码 3:业务代码使用分布式缓存锁 4:业务代码使用分布式缓存锁 5:测...

  • 锁(2)-- 分布式锁

    前言: 锁分3种:java锁、分布式锁、DB锁 分布式锁的几种实现方式 目前几乎很多大型网站及应用都是分布式部署...

  • java锁的概念

    参考文档探究分布式并发锁并发编程-锁的发展和主流分布式锁比较总结从构建分布式秒杀系统聊聊分布式锁探索并发编程(六)...

  • Redis实现分布式锁

    分布式下的分布式锁一般实现有三种: 基于数据库的乐观锁 基于redis的分布式锁 基于zookeeper的分布式锁...

  • 分布式锁续约问题

    Redis的分布式锁实现原理网上已经有很多文章了,这里主要记录一下续约问题。 一般情况下,分布式锁是直接申请固定时...

  • 分布式锁

    为什么要用分布式锁? 分布式锁是悲观锁的实现; 如果采用乐观锁的方案就用不着分布式锁了。 能用乐观锁的地方尽量用乐...

  • 3.10:分布式锁

    本文将梳理微服务架构下,分布式锁的常用方案。整体包含以下三部分: 分布式锁的提出 分布式锁主流方案 分布式锁选择 ...

网友评论

    本文标题:分布式锁-记录

    本文链接:https://www.haomeiwen.com/subject/tifmeftx.html