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、得到锁后就可以执行业务逻辑,处理完后释放锁

目录
相关文章
|
存储 缓存 NoSQL
【分布式】Redis与Memcache的对比分析
【1月更文挑战第25天】【分布式】Redis与Memcache的对比分析
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
358 0
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
720 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
345 11
|
机器学习/深度学习 分布式计算 算法
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
|
程序员
后端|一个分布式锁「失效」的案例分析
小猿最近很苦恼:明明加了分布式锁,为什么并发还是会出问题呢?
261 2
|
运维 安全
基于simulink的分布式发电系统自动重合闸的建模与仿真分析
本课题研究配电系统中分布式电源接入后的自动重合闸问题,着重分析非同期重合闸带来的冲击电流及其影响。通过Simulink搭建模型,仿真不同位置及容量的分布式电源对冲击电流的影响,并对比突发性和永久性故障情况。利用MATLAB2022a进行参数设置与仿真运行,结果显示非同期重合闸对系统安全构成挑战,需通过优化参数提升系统性能。
|
存储 Kubernetes 监控
etcd:分布式键值存储系统技术
`etcd` 是一个用于共享配置和服务发现的高度可用键值存储系统,基于Raft算法保证数据一致性。它提供HTTP/GRPC API,常用于服务发现、配置共享和分布式锁。etcd集群包含多个节点,每个节点可为领导者或跟随者。在Kubernetes中,etcd存储集群状态,其稳定性和一致性至关重要。维护etcd涉及备份、状态监控、日志审计和安全措施。
848 2
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
666 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
数据采集 存储 运维
如何使用SkyWalking收集分析分布式系统的追踪数据
通过以上步骤,你可以使用 SkyWalking 工具实现对分布式系统的数据采集和可视化。SkyWalking 提供了强大的追踪和度量功能,帮助开发者和运维人员更好地理解系统的性能状况。欢迎关注威哥爱编程,一起学习成长。
883 0