《云计算技术系列丛书 云原生分布式存储基石: etcd深入解析》—2.3.5分布式锁

举报
华章计算机 发表于 2019/06/04 14:14:33 2019/06/04
【摘要】 本书摘自《云计算技术系列丛书 云原生分布式存储基石: etcd深入解析》一文中的第2章,第2.3.5节,作者是华为云容器服务团队、杜军等编著。

2.3.5 分布式锁

       因为etcd使用Raft算法保持了数据的强一致性,某次操作存储到集群中的值就必然是全局一致的,所以etcd很容易实现分布式锁。

锁服务包含两种使用方式,一是保持独占,二是控制时序。

       1.保持独占

       保持独占即所有试图获取锁的用户最终只有一个可以得到。

       etcd为此提供了一套实现分布式锁原子操作CAS(ComparaAndSwap)的API。通过设置prevExist值,可以保证在多个节点上同时创建某个目录时,只有一个节点能够成功,而成功的那个即可获得分布式锁。

       2.控制时序

       试图获取锁的所有用户都会进入等待队列,获得锁的顺序是全局唯一的,同时还能决定队列的执行顺序。

       etcd为此也提供了一套API(自动创建有序键),它会将一个目录的键值指定为POST动作,这样,etcd就会在目录下生成一个当前最大的值作为键,并存储这个新的值(客户端编号)。

       同时还可以使用API按顺序列出所有目录下的键值。此时这些键的值就是客户端的时序,而这些键中存储的值则可以是代表客户端的编号。以上过程可以用图2-9来表示。

image.png

图2-9 etcd做时序控制


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。