簡體   English   中英

如何在分散群集中設計通知/推送服務?

[英]How do I design a Notification/Push Service in a decentralized cluster?

為分散(對等)集群設計通知/推送服務並不容易。 例如,如果我希望Cassandra向服務A推出通知,如果一個表字段已經通過服務B更改了它的值,那就不容易了。 這是因為Cassandra以分散的方式組織,例如5個節點,並且在將更改推送到A之前,他們不知道何時提交了三個節點的法定數量。 但是,在集中式(主從)集群中,情況有所不同。 例如,ZooKeeper知道5個節點中的3個節點何時提交,並且可以安排通知服務。

我們如何在分散的集群中設計這樣的推送服務?

一個明顯的解決方案是等待一段時間(比如10秒)並且無論如何都要通知B.

另一個選擇:如果服務B從Cassandra收到了3個滿足法定人數的滿足,那么B會向A發送通知而不是Cassandra自己發送通知。

還有其他合適的解決方案嗎?

您可以使用Cassandra 一致性級別 這就像等待一段時間,但這樣你肯定有正確的數據。

用一個小例子:

假設您的RF為3,那么在寫入時,如果您將一致性級別設置為3,則需要3台計算機(寫入數據)的答案來驗證寫入是否一致。

您可以將此參數設置為all ,但所需的計數越大,它就越慢。 我認為與RF一樣多的機器都可以,所以你可以比較不同副本的所有時間戳。

有一些預定義的一致性級別。 要更好地理解這一點,請閱讀以下文檔:

https://docs.datastax.com/en/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html

這種機制減緩了Cassandra,因為Cassandra不是一致的,而是可用的。 如果您想要一致性,請查看HBaseMongoDB

我想你想要的是Change Data Capture,它將在未來版本的Cassandra中發布。

https://issues.apache.org/jira/browse/CASSANDRA-8844

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM