Java分布式系统

时间:2011-08-29 08:16:31

标签: java distributed-computing

我正在开始我的最后一年计算机科学项目,我正在努力找出我的第一步。有关详细信息,您可以转到项目page

背景: 因为我在分布式系统方面经验很少,所以基本上我应该如何面对这样的挑战。我想出的是系统应该如下工作:

客户端发送一个文件或一组包含要处理的代码的文件。该代码将实现由我编写的分布式算法接口,即特定类。服务器将从类中创建一个对象。该对象将负责运行算法。服务器将结果返回给客户端。 (我实际上后来读到了RMI并发现它非常相似)。

发送文件是基本的 - 常见的网络I / O. 真正的问题是对象创建并在运行时将其用作预定义接口。

问题:

  1. 我提出的挑战听起来像是一个反思挑战,这是正确的吗?
  2. 您对如何实施它有任何初步建议吗?
  3. 寻找一些分布式系统java技术我遇到过RMI,TRMI,LINDA,CORBA,JINI等等。 RMI听起来最吸引人,因为它与我收集的解决方案非常相似,但它也很老。

    1. 您认为哪些图书馆可以帮我完成这项任务?请记住,我是一名计算机科学专业的学生,​​因此开箱即用的解决方案不会与我的教授保持一致。
    2. RMI已经老了,还有更好的解决方案吗?
    3. 任何关于TRMI的综合教程?
    4. 如果你发现我的逻辑有些错误,请更正。

      如果您有关于此主题的更多提示,您认为应该讨论,请随时与我联系。

3 个答案:

答案 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提供了一种更有效的传输二进制内容的方法。

谢谢..