Zookeeper,etcd,consul内部机制和分布式锁和选主实现的比较
我的另外3篇文章分別介紹了Zookeeper,etcd,consul是如何實現分布式鎖和選主的。本文想比較一下Zookeeper、etcd、consul內部機制有哪些不同,他們實現鎖和選主的方式相同和不同。
Zookeeper提供了臨時節點,sequence,和變更通知。利用Zookeeper的這3個特性實現了按照sequence的順序依次獲取鎖和成為主。
etcd沒有臨時節點的概念,但是通過租約的方式提供了類似的功能。etcd沒有sequence的概念,但是提供了全局遞增的序列號revision,通過判斷每個key的revision,也可以實現類似的sequence功能。提供多鍵條件事務(類似etcdv2的Compare-and-Swap)。雖然提供的機制不同與Zookeeper,但是實現的鎖方式和選主方式與zookeeper非常類似,也是按照key建立時間依次獲得鎖和成為主。
consul也沒有臨時節點的概念,但是有session的概念,通過session也可以實現臨時節點的功能。consul沒有提供sequence的功能,類似于etcd也提供了modifyindex,這種全局遞增的序號。consul的接口類對外暴露了cas(check-and-set)的語意(似于etcdv2),與此同時對外直接暴露了鎖的語意。提供了與etcd相同的機制,額外還提供了鎖的機制。所以基于consul不需要考慮怎么實現鎖,只需要考慮實現選主。官方文檔中給出的選主的實現,是基于鎖機制的,所以consul的選主不同與zookeeper和etecd。Zookeeper和etcd的實現可以避免群驚現象。但是consul提供類似于etcd的機制,所以也可以不基于鎖的來實現選主,也可以實現出類似于etcd的選主實現。
總結,zookeeper、consul、etcd實現鎖和選主時依賴自身的多個機制,但是有最核心的機制,比如zookeeper的sequence機制,etcd的revision和多鍵條件事務,consul的index、cas和鎖,以上這些特性歸根結底是3個系統的consistency的特性的一種表現。
總結
以上是生活随笔為你收集整理的Zookeeper,etcd,consul内部机制和分布式锁和选主实现的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CHIL-SQL-FIRST() 函数
- 下一篇: hibernate validate验证