Etcd 实现分布式锁的分析

简介: 锁,主要是用来解决并发情况时对共享资源的使用时互斥控制。

分布式锁的理解

锁,主要是用来解决并发情况时对共享资源的使用时互斥控制。

案例:秒杀系统中,某商品的库存只有5件,一百个用户来抢购,售完即止。那么商品的库存量就是共享变量。保证资源访问互斥,需要对每个请求锁定共享变量,请求处理完后下个请求才能处理。否则,容易出现仅有5件商品,缺有超出5个人下单购买,这将引起极大损失。

在分布式环境中,因可能是多实例多物理机部署,所以就会变成是既多线程又多进程的情况。Go语言中,使用Lock,对于单机应用可以产生效果,但是对于分布式因部署不同机器中,Lock将会失去效果。

我的理解:分布式锁,就是在多进程的情况下,一个外界工具能够控制每个进程请求共享资源时,对共享资源进行锁定,限制一次仅一个进程访问到。

现目前常见分布式锁的方案,大致有以下几种:

  • 基于数据库实现分布式锁
  • 基于ZooKeeper实现分布式锁
  • 基于缓存实现分布式锁,如redis、etcd等

Etcd实现分布式锁

基于缓存的锁有memcached、redis、etcd三种。相比较于数据库实现分布式锁,缓存方式实现分布式锁性能会更好些。因为:

  • 缓存主要存储在内存中,存取速度会更快
  • 缓存支持集群部署,可以解决单点问题

etcd实现分布式锁思路

锁,仅只能被一个进程获取到的,并占用它,其他进程请求时只能等待。通过etcd的事务txn、lease租约、watch监听三个特性实现分布式锁。

1、首先,客户端初始化于etcd服务端建立连接,并以某前缀prefile_key创建全局唯一key=prefile_key/uuid1;客户端分别为自己的key创建租约Lease。

2、为了防止其他客户端等待期间,持有者的租约失效,持有者应当创建一个定时任务作为“心跳”进行续约

3、持有者将key绑定租约写入Etcd中,根据Etcd的Revision机制,写入etcd时会返回revision。

4、客户端通过前缀key获取所有的key-value列表以及对应的Revision,判断自己的key的Revision是否是最小的,如果是则表示获取到锁

5、得到锁后就可以执行业务逻辑,处理完后释放锁

目录
相关文章
|
6天前
|
存储 缓存 NoSQL
【分布式】Redis与Memcache的对比分析
【1月更文挑战第25天】【分布式】Redis与Memcache的对比分析
|
6天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
41 0
|
3天前
|
前端开发 JavaScript 算法
分布式系统的一致性级别划分及Zookeeper一致性级别分析
分布式系统的一致性级别划分及Zookeeper一致性级别分析
|
6天前
|
数据采集 存储 运维
如何使用SkyWalking收集分析分布式系统的追踪数据
通过以上步骤,你可以使用 SkyWalking 工具实现对分布式系统的数据采集和可视化。SkyWalking 提供了强大的追踪和度量功能,帮助开发者和运维人员更好地理解系统的性能状况。欢迎关注威哥爱编程,一起学习成长。
|
6天前
|
存储 负载均衡 NoSQL
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
54 1
|
6天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
67 0
|
6天前
|
缓存 应用服务中间件 数据库
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
53 1
|
6天前
|
缓存 监控 负载均衡
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据缓存不一致分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据缓存不一致分析)
39 2
|
6天前
|
存储 缓存 监控
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据更新场景策略和方案分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据更新场景策略和方案分析)
16 0
|
8月前
|
存储 缓存 数据挖掘
AtomData结合阿里云分布式存储实现海量数据分析(三)
AtomData结合阿里云分布式存储实现海量数据分析(三)
80 0