【问题标题】:What is the difference between actors (Akka) and agents (JADE) in distributed systems? [closed]分布式系统中的参与者(Akka)和代理(JADE)有什么区别? [关闭]
【发布时间】:2013-03-08 13:51:59
【问题描述】:

Akka 演员和 Jade 代理人的概念有什么实质性区别吗?

据我所知,两者都通过创建独立实体(具有系统逻辑块)来实现系统分发,这些实体可以通过在它们之间发送消息来进行通信。

是否还有其他因素使它们不同(如性能或预期用途)?

【问题讨论】:

    标签: java akka agents-jade


    【解决方案1】:

    我以前不知道 JADE,而我是 Akka 技术负责人,所以请对我的回答持保留态度。

    浏览他们的网站(可能应该在小得多的屏幕上查看),看起来他们的代理在执行演员的串行消息处理部分,但他们缺乏监督,因此容错,他们似乎鼓励当 Akka 的 Actor 完全由事件驱动时,无论是阻塞还是轮询,因此消耗的资源(线程)更少。查看程序员指南,似乎该概念主要是为 GUI 开发的用例而开发的,而 Akka Actor 并不具体,可用于对任何类型的计算或交互进行建模。

    我在肤浅的搜索中偶然发现了一个非常大的区别,即为代理和演员提供的接口的大小:这可能是 Akka 的抽象更简单,因此更强大。

    在主机之间移动代理的功能看起来很有趣,我们仍然需要实现它(参见roadmap)。

    如果我在 JADE 方面没有遗漏一些东西,那么 Akka 对反应式编程的支持要好得多,它的完全非阻塞演员、ask 模式与 composable Futures 相结合(即不是来自 java.util.concurrent 的阻塞模式)但具有异步组合的转换方法),STM support 等。

    我不知道 JADE 是如何做到的,但在 Akka 中,您可以通过更改配置来弹性扩展和扩展您的演员,请参阅 routing

    最后但并非最不重要的是 Akka 中的 cluster 支持,我在 JADE 中找不到相应的功能,但我也没有深入挖掘。

    我刚刚注意到的一件事:Akka 不需要登录即可试用 ;-)

    【讨论】:

    • 我的心都碎了。没想到有第一手的见解。谢谢!
    • 我可能错了,但我听了 JADE 项目负责人之一关于 AMUSE(它是基于 JADE 的社交视频游戏的更具体框架)的讲座。他告诉我们的是,JADE 代理对更改和故障反应非常灵敏,因此具有容错性。
    • 另一件事,在我的大学里,他们鼓励将代理的含义理解为更成熟的演员。他们告诉我们,演员只是封装了他的控制线的东西,实际上我仍然不了解 akka 演员,因为对于我被教导的愿景,他们更像是代理人。
    • 请注意,如果您想在单个位置保持某些状态,Akka 具有受 clojure 启发的代理。 doc.akka.io/docs/akka/snapshot/scala/agents.html
    【解决方案2】:

    我知道这个问题已经有几年的历史了,但是为了完整起见(对于那些寻找有关此主题的信息的人,例如我自己),我想在与Ronald(比 Akka 更了解 JADE)。我不是 JADE 的贡献者,但(几年前)使用它并研究过(很多)移动软件代理。

    软件代理范例已经存在很多年了,对该主题的一个很好的介绍是the paper of Jeffrey M. Bradshaw。它比普通演员有更多的概念。

    我不会对范式进行介绍(感兴趣的可以参考论文),但是在不了解它的情况下比较框架似乎不公平。顺便提一下,JADE 实现了很多(不是全部,自从我上次检查以来)范式的概念,不仅有可以与actors 比较的部分,还有BDI model、Ontologies 等概念。还有JADE 实现了FIPA specification,它有几个部分。

    就像我说的,自从我上次检查 JADE 实现以来已经有好几年了,所以我不会逐点进行技术比较。就像 Ronald 说的,JADE 没有实现像反应式或弹性伸缩这样的概念,但必须考虑到这些概念在今天广泛存在,但在很多年前(当 JADE 开始时)并不太流行。我想澄清的是,JADE 确实具有容错性、可扩展性和非阻塞的工作方式(可能在网站上并不清楚)。 Developing Multi-Agent Systems with JADE 这本书很好地介绍了该框架。

    总而言之,如果演员模型足以满足您的要求,我会选择 Akka,因为它比 JADE 更干净(可能更苗条)和更现代。如果您需要/想要一些与(移动)软件代理相关的更高级/特定功能,JADE 是更广泛使用的框架+平台(或者至少在我研究时是这样)。

    只要我的两分钱!

    【讨论】:

      【解决方案3】:

      一年后再次......我可以确认故障转移是 Jade 的关键,仅提及一些机制:备份平台、虚拟复制代理的概念、无状态中介容器(处理断开连接和 ip 更改),持久的消息传递。 Wade 增加了容错能力:http://jade.tilab.com/wade/doc/WADE-User-Guide.pdf

      Jade 并不主要针对 GUI 开发。

      我想提一下 Jade 的另一个强大功能是代理不需要开放端口来通过网络进行双向通信,只有平台和备份需要开放端口。

      此外,STM(有限状态机)是 Jade 的重要组成部分,FIPA 会话模型是使用 STM 实现的。 Jade 代理与其说是发送和接收消息,不如说是在工作流中执行对话。

      集群在 Jade 中不可用,但 Wade 提供了可配置的代理池,其中分布式代理池负责处理特定任务。

      关于 Elastic scaling 和 Jade 已经做了一些研究,我不知道它的状态。也许在 jvm 级别解决弹性缩放问题会更好。

      在 Jade 和 Akka 中需要注意的一个主题是基于分布式消息的解决方案中的安全性(身份、身份验证、授权)。

      结论:Jade 比乍一看更强大,功能更丰富。翡翠需要现代化。

      研究 Akka 和 Jade 如何互惠互利,AkkaAgent 会很有趣。

      【讨论】:

        猜你喜欢
        • 2014-02-18
        • 2018-03-10
        • 2019-02-28
        • 1970-01-01
        • 2023-01-05
        • 1970-01-01
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多