9

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

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

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

4

3 回答 3

17

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

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

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

在主机之间移动代理的能力看起来很有趣,我们仍然必须实现它(参见路线图)。

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

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

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

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

于 2013-03-08T21:43:24.567 回答
9

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

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

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

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

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

只是我的两分钱!

于 2015-08-23T23:29:30.783 回答
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 中需要注意的一个主题是基于分布式消息的解决方案中的安全性(身份、身份验证、授权)。

Concluding this: Jade is far more powerful and feature rich then a first glance reveals. Jade needs modernization.

It would be interesting to investigate how Akka and Jade can mutually benefit, the AkkaAgent.

于 2016-12-09T10:17:51.917 回答