我正在开始我的最后一年的计算机科学项目,我正在努力找出我的第一步。有关更多细节,您可以转到项目页面。
背景:由于我在分布式系统方面的经验很少,我基本上认为我应该如何面对这样的挑战。我得出的结论是,该系统应按以下方式工作:
客户端发送一个文件或一组文件,其中包含要处理的代码。该代码将实现一个由我编写的分布式算法接口,一个特定的类。服务器将从class.That对象创建一个对象,负责运行该算法。服务器将向客户端返回结果。(我后来读到了关于RMI的文章,发现它非常类似)。
发送文件是基本的网络I/O,真正的问题是对象的创建,并在运行时使用它作为预定义的接口。
问题:
为了寻找一些分布式系统java技术,我遇到了RMI、TRMI、LINDA、CORBA、JINI和其他许多技术。RMI听起来最吸引人,因为它与我收集的解决方案非常相似,但它也很老。
如果你觉得我的逻辑有多错误,请改正。
如果你在这个问题上有更多的建议,你认为应该讨论,请随时与我联系。
发布于 2011-08-29 10:30:18
您可以使用这个例子和发送类文件来执行(您可以将类文件存储在磁盘上,然后使用URLClassLoader加载它们。如果您不想在磁盘上写入,McDowell有建议)。
至于沟通,有很多可供选择的地方。您可以考虑的一件事是使消息传递是同步的还是异步的。同步消息传递(如RMI)没有什么问题,但是您可能希望找到异步解决方案,因为它们应该是“热门”的。或者,您可以在HTTP或类似的基础上使用自己的协议。
一个有趣的练习是在节点间分配数据,并针对这些分布式数据执行算法,然后组合结果。在这种情况下,用户将指定两个算法。一个生成数据,一个聚合结果。
发布于 2011-08-29 08:42:03
没有足够的信息来推荐图书馆或技术。因此,我想集中讨论你问题中的“更多提示”部分;)
远程方法调用
使用RMI,我们通常有以下场景:客户端希望调用远程方法。客户端知道接口和服务器地址。服务器具有该接口的实现。现在,客户端与服务器联系并调用该服务器上的方法。
对于您的项目,它看起来有点不同:我认为客户端有一个算法的实现(java源文件或已编译的类文件),并且希望将它发送到一个或多个服务器。服务器将处理文件,对某些输入(切片)执行算法,并返回结果。
RMI可能是文件传输的候选对象,而不是(算法)方法调用的候选。远程方法可以是这样的(假设我们发送了一个java源文件):
public Result process(String javaSource, Data data);发布于 2011-08-29 08:51:34
也请查看基于SOAP的web服务。MTOM提供了一种更有效地传输二进制内容的方法。
谢谢..
https://stackoverflow.com/questions/7227700
复制相似问题