【问题标题】:Could AKKA remoted actors be a used in a p2p swarm context?AKKA 远程演员可以在 p2p 群环境中使用吗?
【发布时间】:2013-04-04 20:24:12
【问题描述】:

我看到的Akka 演员的大多数用例都是高性能的多核服务器或本地集群。

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

我想到的应用程序将有关于集群节点的可信任性和/或资源丰富性的规则,为它们提供一些状态,就像 bittorrent 那样。它还需要能够尽可能地跨集群传播事务,但最终或部分一致性是可以接受的。可扩展性比一致性更重要。

AKKA 是否是构建此类项目的潜在解决方案?与其他方法相比,它是否有任何特定的优点或缺点。

【问题讨论】:

  • @Viktor Klang 理想情况下尽可能多的,像单个 bittorrent 这样的规模,但相当大。
  • 我认为 AKKA 的设计考虑了高度耦合的分布式系统(例如集群),而不是您描述的场景(例如传感器网络或分散式社交网络,尽管这些仍然位于分布式计算领域但在异构/分散领域)。但由于我不是专家,让我们等待更好的答案:D

标签: java scala akka distributed-computing distributed-transactions


【解决方案1】:

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

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

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

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

【讨论】:

  • 你提到比特币很有趣,因为我想到的应用程序是关于分布式交换和比特币等数字资产的价格发现!所以没有大量的计算,而是大量的实时数据传递。我正在考虑的真相版本的方法是根据一些信心因素(例如历史声誉)制定有关信息质量的规则
  • 依赖信誉是一个好的开始,但信誉系统容易受到基于合谋的攻击。听起来你正试图破解一个非常坚硬的坚果。祝你好运。
猜你喜欢
  • 1970-01-01
  • 2012-05-09
  • 2014-05-28
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2012-02-25
相关资源
最近更新 更多