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

ato*_*tok 9 java akka agents-jade

Akka演员和Jade特工的概念有什么实质性的区别吗?

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

还有其他因素使它们不同(如表现或预期目的)?

Rol*_*uhn 17

我以前不知道JADE,而且我是Akka技术主管,所以我的回答是一丝不苟.

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

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

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

如果我在JADE方面没有遗漏任何东西,那么Akka对其完全无阻塞的演员的反应式编程提供了更好的支持,问题模式与可组合的Futures相结合(即不是来自java.util.concurrent的阻塞编程,而是使用转换方法用于异步组合),STM支持等.

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

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

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

  • 我的心碎了。并不期望有第一手的见识。谢谢! (2认同)

Mat*_* SM 8

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

软件代理范例已经存在多年了,Jeffrey M. Bradshaw的论文对该主题进行了很好的介绍.它比简单的演员有更多的概念.

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

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

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

只是我的两分钱!