Cra*_*lus 5 java ipc jms rmi distributed-computing
我有兴趣实现跨越机器的一些过程,即形成分布式程序.这些流程提供的功能是我想要分发而不是数据.
那么Java目前的分布式编程规范是什么?
它仍然是RMI吗?还是某种消息传递系统?
我最初认为RMI和一些JMX用于远程管理,但想知道目前的最佳实践是什么.似乎RMI总是在另一层下"埋葬"(例如EJB对吗?)
更新:
在回答和评论后,似乎目前的趋势是消息系统?这不是在分布式设计中引入"集中式"组件吗?
我不认为 RMI 是正确的选择,如果 RMI 适合您的任务,只需使用 EJB 即可,因为您将从应用程序服务器获得许多功能,例如安全/访问控制、事务管理、数据库管理等。 RMI 中的那些工作既痛苦又浪费时间。
分布式编程的另一个选择是使用GridGain,这是一个功能强大的框架,您可以使用它在商用机器集群上轻松运行您的程序。同样,您可能会考虑Apache Hadoop
我会从 GridGain 开始,因为它非常容易安装,只需解压缩并运行,而且与应用程序集成也相对简单。
编辑
RMI 和消息系统有点不同,因为同步与异步通信的使用应取决于整体系统架构以及不同组件如何相互交互。例如,当服务调用需要很长时间才能完成(例如批量操作或归档大数据)时,异步通信可能更合适。在这种情况下,服务客户端不持有系统资源(例如套接字和线程)
另一方面,当服务/功能需要很短的时间才能完成并且每个远程服务都依赖于前一个服务的结果时,同步通信可能更合适。