【问题标题】:Is there atomic broadcast in akka?akka中有原子广播吗?
【发布时间】:2015-01-14 00:10:37
【问题描述】:

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

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

我知道,有 DistributedPubSubMediator.SendToAllCluster Aware Routers 这样的东西。有没有支持全单广播的?

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

【问题讨论】:

    标签: scala akka akka-cluster


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 是的,它会起作用,但这意味着单点故障。幸运的是,有相应的算法。
      • 您可以尝试"Cluster Singleton" 通过牺牲高可用性和在某些情况下的分区容错性来避免单点故障(您必须手动从集群中删除节点以允许“P”)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2020-12-09
      • 2022-01-11
      • 2011-09-30
      相关资源
      最近更新 更多