演员(Akka)和代理(JADE)在分布式系统中有什么区别?

时间:2013-03-08 13:52:00

标签: java akka agents-jade

Akka 演员和 Jade 代理商的概念是否存在重大差异?

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

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

3 个答案:

答案 0 :(得分:16)

之前我不知道JADE,而且我是Akka技术主管,所以请耐心等待。

浏览他们的网站(可能应该在更小的屏幕上查看)看起来他们的代理人执行演员的连续消息处理部分,但他们缺乏监督,因此缺乏容忍性,他们似乎鼓励阻止或轮询,而Akka的actor完全由事件驱动,因此消耗更少的资源(线程)。看一下程序员指南,似乎这个概念主要是针对GUI开发的用例而开发的,而Akka actor并不是特定的,可以用来模拟任何类型的计算或交互。

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

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

如果我在JADE方面没有遗漏某些内容,那么Akka可以更好地支持反应式编程及其完全非阻塞的actor,ask模式与composable Futures相结合(即不是来自java.util的阻塞模式) .concurrent但使用异步合成的转换方法),STM support等等。

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

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

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

答案 1 :(得分:7)

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

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

我不会对范例进行介绍(如果你感兴趣,你可以参考论文)但是在没有相关知识的情况下比较框架似乎是不公平的。只是提到JADE实现了范式概念的许多(不是所有,自上次检查以来),不仅可以与演员比较的部分,还有BDI model,Ontologies等概念。 .JADE还实现了FIPA specification,它有几个部分。

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

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

只是我的两分钱!

答案 2 :(得分:3)

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

Jade并不主要针对GUI开发。

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

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

群集在Jade中不可用,但Wade提供可配置代理池,其中分布式代理池负责某项任务。

关于弹性伸缩和玉的一些研究已经完成,我不知道它的状态。也许最好在jvm级别处理弹性缩放。

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

结论:翡翠更强大,功能丰富,第一眼就能看出来。玉需要现代化。

调查Akka和Jade如何互惠互利,AkkaAgent会很有趣。