假設我們只有兩個節點A和B.Consul鍵值存儲是否可以保證在使用兩個不同的鍵進行兩次寫入時的順序?
當我們發起的節點A這兩個命令,
$ curl -X PUT -d one .../v1/kv/key1
$ curl -X PUT -d two .../v1/kv/key2
(即PUT one key1
之前發生PUT two key2
),然後GET
節點B上的/v1/kv/key2
返回two
,是否保證GET
的/v1/kv/key1
在節點B上返回one
?換句話說,Consul KVS榮譽在節點A上的兩次寫入之間的關係之前發生了嗎?
領事使用一致性協議,以提供一致性(通過CAP所定義的)。
是的,但我的理解是CAP定理不談論多個寄存器。這兩個寫入可能最終傳播到節點B,但它是保證我們永遠不會看到意外的中間狀態?
AFAIK Consul只有一個Raft日誌,這樣可以確保無論資源如何,寫入都將相互排列。僅僅因爲共識的本質,人們就不得不使自己的寫作無序。 – kuujo
不知道是否需要你,但consul 0.7(剛剛發佈)也有新的交易密鑰/值API - https://github.com/hashicorp/consul/blob/master/CHANGELOG.md#070-september- 14-2016 – deniszh