《云计算技术系列丛书 云原生分布式存储基石: etcd深入解析》—2.3.5分布式锁
【摘要】 本书摘自《云计算技术系列丛书 云原生分布式存储基石: 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来表示。
图2-9 etcd做时序控制
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)