我正在开始我的最后一年计算机科学项目,我正在努力找出我的第一步。有关详细信息,您可以转到项目page。
背景: 因为我在分布式系统方面经验很少,所以基本上我应该如何面对这样的挑战。我想出的是系统应该如下工作:
客户端发送一个文件或一组包含要处理的代码的文件。该代码将实现由我编写的分布式算法接口,即特定类。服务器将从类中创建一个对象。该对象将负责运行算法。服务器将结果返回给客户端。 (我实际上后来读到了RMI并发现它非常相似)。
发送文件是基本的 - 常见的网络I / O. 真正的问题是对象创建并在运行时将其用作预定义接口。
问题:
寻找一些分布式系统java技术我遇到过RMI,TRMI,LINDA,CORBA,JINI等等。 RMI听起来最吸引人,因为它与我收集的解决方案非常相似,但它也很老。
如果你发现我的逻辑有些错误,请更正。
如果您有关于此主题的更多提示,您认为应该讨论,请随时与我联系。
答案 0 :(得分:5)
没有足够的信息来推荐图书馆或技术。所以我想专注于你问题的“更多提示”部分;)
远程方法调用
使用RMI,我们通常会遇到以下情况:客户端想要调用远程方法。客户端知道接口和服务器地址。服务器具有该接口的实现。现在,客户端联系服务器并在该服务器上调用该方法。
对于您的项目,它看起来有些不同:我认为客户端具有算法(java源文件或编译的类文件)的实现,并希望将其发送到一个或多个服务器。服务器应处理文件,执行算法以获取某些输入( slice )并返回结果。
RMI 可能是文件传输的候选者,但不适用于(算法)方法调用。远程方法可能看起来像这样(假设我们发送一个java源文件):
public Result process(String javaSource, Data data);
答案 1 :(得分:2)
你可以使用this example并发送类文件来执行(你可以将类文件存储在磁盘上,然后使用URLClassLoader加载它们。如果你不想在磁盘上写,McDowell有{{ 3}})。
至于沟通,有很多可供选择。您可以考虑的一件事是是否使消息传递同步或异步。同步消息传递(如RMI)没有任何问题,但您可能希望寻找异步解决方案以及它们最近应该是“热门”。或者你可以在HTTP或类似的东西上使用自己的协议。
一个有趣的练习是在节点之间分配数据并针对这些分布式数据执行算法,然后组合结果。在这种情况下,用户将指定两种算法。一个生成数据,一个聚合结果。
答案 2 :(得分:1)
请同时查看基于SOAP的Web服务。MTOM提供了一种更有效的传输二进制内容的方法。
谢谢..