1

我需要原子广播,我想使用 akka 集群。

我不确定akka中是否有原子广播,所以我只想问一下,确定。

我知道,有这样的事情DistributedPubSubMediator.SendToAll以及Cluster Aware Routers. 有没有支持全点播的?

我的意思是原子(全序)广播,演员 A 发送广播 bA 以及演员 B 发送广播 bB(并行并从另一个节点)。最终,(每个参与者在 bB 之前收到消息 bA)或(每个参与者在 bA 之前收到消息 bB)。

4

2 回答 2

3

Akka 提供的唯一排序保证是从 actor 发送A到 actor 的消息B将按该对 actor 的顺序接收。其他参与者到参与者的消息可以在来自toB的消息之前、之后或交错接收。AB

所以不,Akka 不提供您要求的订购保证。

于 2015-01-14T04:38:53.370 回答
1

默认情况下,没有这样的保证,因为消息是异步发送的。但是您可以只使用一些调解器X(包括 的任何参与者DistributedPubSubMediator),这将导致这样的保证:发送(bA, recipients)到,发送A到,并且应该只将每条消息广播给它的接收者(它将是“原子的”和连续的,就像在一个演员内部所做的那样)。X(bB, recipients)BXX

如果您需要在集群中执行此操作 - 您可以尝试“集群单例”通过牺牲高可用性和分区容错来避免单点故障(您必须手动从集群中删除节点以允许“P”)

于 2015-01-14T04:55:34.020 回答