Akka中聚类和远程处理的区别

alm*_*dar 30 akka akka-cluster

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

有两种方法可以通过聚类和远程处理来分发Akka应用程序.我没有区分这两者.如果我理解正确两者都相互排除,因为在配置中需要使用不同的提供者作为参与者:

 akka.remote.RemoteActorRefProvider
 akka.cluster.ClusterActorRefProvider
Run Code Online (Sandbox Code Playgroud)

那么用例是什么?当我选择一个而不是另一个?

也许聚类就像遥控器的超集,或者反过来可能是另一种方式?

End*_*rga 36

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

  • "直接使用远程处理很少有用,对大多数用例来说,聚类是首选." - 添加到文档中肯定是件好事. (10认同)
  • 是的,它会的.特别是你可以在AKKA网站找到一些问题的解决方案 - "HowTo:Common Patterns"只专注于远程处理.我相信这些是在引入聚类之前编写的,说实话,这使得人们对于要遵循的路径有点不确定. (10认同)

hic*_*our 5

总是最好看一下代码

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

private[akka] class ClusterActorRefProvider ... extends RemoteActorRefProvider
Run Code Online (Sandbox Code Playgroud)

首先,ClusterActorRefProvider只是RemoteActorRefProvider的扩展

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

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

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