etcd 怎样设计公平锁和非公平锁?
查看完整题解
参考回答
直接回答
用每次竞争时创建的候选键排序,按 CreateRevision 轮到才进,可获得按服务器登记顺序的近似 FIFO。只用条件创建单个锁键时,所有人释放后重新抢,属于非公平。
讲清原理
客户端实际先发请求的时间可能与服务器先提交不同。取消、租约失效和重连也会影响排队。公平策略的目标应写清是按服务器完成登记的顺序。
例子与易错点
后来的请求网络更快,可能先登记。公平锁保证登记后的次序,不保证按每台机器的本地时钟先后来执行。
延伸阅读 etcd 分布式锁的核心步骤是什么? · etcd 怎样用 Revision 和 Watch 实现锁竞争? · 如何避免 etcd 锁等待的羊群效应?
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。