etcd踩坑记录
etcd踩坑记录
问题:获取etcd锁时一直阻塞
运行结果:
原因:
出现这种问题的原因和etcd的分布式锁的实现原理有关,简单来说:etcd的锁实现原理就是
所有的客户端都在pfx(这里就是/pfx/v1)下创建一个自己的key,createrevision最小的那个客户端获得锁,也就是最早建立key的客户端获得锁,之后按照创建的时间先后依次获得锁。
由于我们最开始在pfx下建立的一个key,所以它的创建时间回比我们创建的所有关于锁的key的创建时间要早,导致我们永远获取不到锁。
详细信息可以参考 cadem 这位博主的一篇文章 用Etcd实现分布式锁和选主
解决办法:
谨慎选择锁的pfx的值,确定除了锁之外不会在此之下创建或修改其他key