gpt4 book ai didi

cassandra - 如何在去中心化集群中设计通知/推送服务?

转载 作者:行者123 更新时间:2023-12-02 23:05:26 26 4
gpt4 key购买 nike

为去中心化(点对点)集群设计通知/推送服务并不容易。例如,如果我希望 Cassandra 向服务 A 推送通知,如果一个表字段已被服务 B 更改了其值,这并不容易。这是因为 Cassandra 以去中心化的方式组织,例如 5 个节点,并且他们不知道在将更改推送到 A 之前何时提交了三个节点的法定人数。然而,在集中式(主从)集群中,情况就不同了。例如,ZooKeeper 知道 5 个节点中的 3 个节点何时提交,并且可以安排通知服务。

如何在去中心化集群中设计这样的推送服务?

一个明显的解决方案是等待一段时间(例如 10 秒)并通知 B

另一种选择:如果服务 B 已从 Cassandra 收到 3 个确认,表明法定人数已满足,B 就会向 A 发送通知em> 而不是 Cassandra 本身发送它。

还有其他好的解决方案吗?

最佳答案

您可以使用 Cassandra 一致性级别。这就像等待一段时间,但这样你就一定能获得正确的数据。

举一个小例子:

假设您的 RF 为 3,那么在写入时,如果您将一致性级别设置为 3,则需要 3 台计算机(写入数据)的答案来验证写入使其一致。

阅读

您可以将此参数设置为全部,但所需的计数越大,速度就越慢。我认为与 RF 一样多的机器都可以,因此您可以比较来自不同副本的所有时间戳。

有一些预定义的一致性级别。为了更好地理解这一点,请阅读以下文档:

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

这种机制会减慢 Cassandra 的速度,因为 Cassandra 并不是为了保持一致,而是为了可用性。如果您想要一致性,请查看HBaseMongoDB

关于cassandra - 如何在去中心化集群中设计通知/推送服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36925171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com