为去中心化(点对点)集群设计通知/推送服务并不容易。例如,如果我希望 Cassandra 向 Service A推送通知,如果一个表字段已通过 Service B更改了其值,这并不容易。这是因为 Cassandra 是以去中心化的方式组织的,例如 5 个节点,并且在将更改推送到A之前,他们不知道何时提交了三个节点的法定人数。但是,在集中式(主从)集群中,情况有所不同。例如,ZooKeeper 知道 5 个节点中的 3 个何时提交,并且可以安排通知服务。
我们如何在去中心化集群中设计这样的推送服务?
一个明显的解决方案是等待一段时间(例如 10 秒)并通知B无论如何。
另一种选择:如果服务B已收到来自 Cassandra 的 3 个确认已满足法定人数的确认,则B会将通知发送给A,而不是 Cassandra 自己发送通知。
还有其他合适的解决方案吗?