Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
at7211 opened this issue Aug 9, 2022 · 2 comments
Open

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

at7211 opened this issue Aug 9, 2022 · 2 comments
Labels
need tracking Need additional survey question Further information is requested

Comments

@at7211
Copy link

at7211 commented Aug 9, 2022

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

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

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

  • strong consistency 保證了資料順序是正確的但高延時
  • waek consistency 保證了低延時但資料可能有誤,( Eventual consistency 需要經過一段時間 sync 才會拿到正確資料順序)

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

  • Sequential consistency 是一個 process 的操作有保持順序 (partial order)
  • Linearizability consistency 則是指整個系統(多個 process) 的操作有保持順序 (total order)

但裡面提到

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

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

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

@kylemocode kylemocode changed the title 第九章節: zookeeper 的 linearizability 第九章節: zookeeper 的 linearizability - Jay Chou Aug 10, 2022
@kylemocode kylemocode added question Further information is requested need tracking Need additional survey labels Aug 10, 2022
@0x171-0
Copy link

0x171-0 commented Aug 12, 2022

我有讀到另外的說法是說 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
Copy link
Author

at7211 commented Aug 15, 2022

讚啦,懂哩

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
need tracking Need additional survey question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants