【问题标题】:Difference between Clustering and Remoting in AkkaAkka 中聚类和远程处理的区别
【发布时间】:2023-04-02 14:11:01
【问题描述】:

我在单个 JVM 上使用 Akka 开发了我的应用程序。现在我想将工作负载分配到多台机器上。我已经开始阅读文档并感到困惑。

有两种方法可以通过集群和远程处理使 Akka 应用程序分发。 我不明白两者之间的区别。 如果我理解正确,两者都相互排斥,因为在配置中需要使用不同的提供者作为参与者参考:

 akka.remote.RemoteActorRefProvider
 akka.cluster.ClusterActorRefProvider

那么用例是什么?我什么时候会选择一个而不是另一个?

也许集群类似于远程处理的超集,或者相反?

【问题讨论】:

    标签: akka akka-cluster


    【解决方案1】:

    它们不是相互排斥的,因为集群是在远程处理之上实现的。远程处理的主要特点是 ActorRefs 的位置透明性。集群在此之上添加了分布式成员资格。直接使用远程处理很少有用,大多数用例首选集群。

    【讨论】:

    • "直接使用远程处理很少有用,大多数用例首选集群。" - 添加到文档中绝对是一件好事。
    • 是的。尤其是您可以在 AKKA 网站上找到一些问题的解决方案 - HowTo: Common Patterns 仅专注于远程处理。我相信这些是在引入集群之前编写的,老实说,这让人有点不确定要遵循的路径。
    【解决方案2】:

    始终最好查看代码

    https://github.com/akka/akka/blob/c2983c7225eeaa035af99e0affeb5f5c841668c4/akka-cluster/src/main/scala/akka/cluster/ClusterActorRefProvider.scala

    private[akka] class ClusterActorRefProvider ... extends RemoteActorRefProvider
    

    首先ClusterActorRefProvider只是RemoteActorRefProvider

    的扩展

    添加到远程处理中的 cluster-akka 的核心功能是:

    • 集群范围的故障检测
    • 具有根组和池功能的路由器

    您会在源代码中找到所有这些插件的味道。

    【讨论】:

      猜你喜欢
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多