java - AKKA 远程 actor 可以用于 p2p swarm 环境吗?

标签 java scala akka distributed-computing distributed-transactions

我见过 Akka 的大多数用例参与者是高性能的多核服务器或本地集群。

我很好奇它是否适用于更偏远的高延迟高度失败 群结构,例如 p2p 网络。

我想到的应用程序将具有关于集群节点的可信任性和/或资源充足性的规则,从而赋予它们一些状态,就像 bittorrent 一样。它还需要能够尽可能地在整个群中传播事务,但最终或部分一致性是可以接受的。可扩展性比一致性更重要。

AKKA 是构建此类东西的潜在解决方案吗?与其他方法相比,它是否有任何特定的优势或劣势

最佳答案

在这种情况下使用 Akka 的主要问题是 Actor 系统没有针对这种去中心化分布式计算的适当可扩展的成员管理系统。

您需要能够处理您在场景中描述的节点流失的东西。特别是,您需要一些可以监控节点何时加入、离开以及因故障而被假定为已死亡和断开连接的东西。我建议看看 Ibis:http://www.cs.vu.nl/ibis/使用基于八卦的注册表。您仍然需要一个众所周知的 Bootstrap 节点来启动系统,否则 Ibis 使用的加入、选择、离开模型与基于 Gossip 的注册表结合使用时将提供您正在寻找的可扩展性。该系统在某种程度上类似于 Akka actor,因为它基于向上或向下调用和传递消息的单向管道系统。一旦掌握了它,就可以很容易地对分布式内容进行编程。

就最终一致性而言,这是此类大型分布式环境中的一个已知难题。我需要更多地了解您要分发的交易类型以及在那里提出更多建议所需的一致性和历史记录保存级别。最近的一些论文已经证明,尽管在这样一个充满敌意的环境中,你能想出的最好办法是 fork 因果一致性,至少每个人都可以看到历史已经 fork ,如果不能确定“获胜” fork ,没有其他 fork 决议机制。

比特币是这个领域中一个有趣的例子,其中“获胜”是由最长的链决定的,但是这个领域中还有其他解决方案可能有效也可能无效,具体取决于应用语义。您的问题有点过于模糊,无法在如此大的设计空间中给出具体建议。

关于java - AKKA 远程 actor 可以用于 p2p swarm 环境吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15969146/

相关文章:

scala - 通过将带有参数的方法传递给 "become"来更改 Akka actor 状态

java - 公共(public)静态无效是什么意思?什么是类(class)?

java - 即使映射是正确的,也没有 GET 的映射

scala 组合多个序列

scala - IntelliJ : Exception in thread "main" java. lang.NoClassDefFoundError: org/apache/spark/sql/types/DataType

scala - 如何等待Akka Actor系统终止?

scala - 玩! dist 抛出异常

java - 终止服务时关闭 ScheduledExecutorService

java - Java 11 : New HTTP client send POST requests with x-www-form-urlencoded parameters

Scalacheck Prop 类型不匹配