weblab-tw / ddia-study-group

Designing Data-Intensive Applications Study Group
36 stars 5 forks source link

第九章節: zookeeper 的 linearizability - Jay Chou #105

Open at7211 opened 2 years ago

at7211 commented 2 years ago

因為一開始讀 ddia 的第九章節看不太懂,又去看了其他資源,先推薦這篇:https://segmentfault.com/a/1190000022248118

基本上內容概括了這次的章節,但用不同的方式解說。

這次章節有提到的 causal consistency 屬於弱一制性,Linearizability 則屬於強一制性 強弱一制性的差別在於

而根據我的理解,皆是屬於強一制性的

但裡面提到

其实,实现上ZooKeeper 的一致性更复杂一些,ZooKeeper 的读操作是 sequential consistency 的,ZooKeeper 的写操作是 linearizability 的,关于这个说法,ZooKeeper 的官方文档中没有写出来,但是在社区的邮件组有详细的讨论。ZooKeeper 的论文《Modular Composition of Coordination Services》 中也有提到这个观点。

总结一下,可以这么理解 ZooKeeper:从整体(read 操作 +write 操作)上来说是 sequential consistency,写操作实现了 Linearizability。

這邊我就有點不太懂,原來 sequential consistency 或 Linearizability consistency 可以分讀寫來看,這邊有人可以求解釋嗎?

0x171-0 commented 2 years ago

我有讀到另外的說法是說 Sequential consistency 本身是 存在 total order 的,只是他的 total order 是不確定性的(arbitrary total order),只有維持操作合理性。而 Linearizability 本身不僅維持操作合理性,更追求時間上的全序(real-time order)。用影片例子表示:

—W(1 )——————————>

————W(2)———————>

—————————-R?——>

Sequential Consistency : R 有兩種可能: 1 or 2

—W(1)———W(2)———-R?——> 

—W(2)———W(1)———-R?——>

Linearizability 只有一種可能: 2

—W(1)———W(2)———-R?——>

這樣子再回來看這篇文章所提到的:

总结一下,可以这么理解 ZooKeeper:从整体(read 操作 +write 操作)上来说是 sequential consistency,写操作实现了 Linearizability。

從整體操作上 ZooKeeper 在併發的狀況因為讀寫是 Sequential Consistency 所以 user 密集讀可能讀取到 1, 2,但是因為寫是 Linearizability,所以最終一定都是讀到 2,感覺算是最終一致的意思。

refs: http://www.bailis.org/blog/linearizability-versus-serializability/ https://www.youtube.com/watch?v=YmhmsHE7be4&t=130s

at7211 commented 2 years ago

讚啦,懂哩