Java分布式系统

标签 java distributed-computing

我正在开始我最后一年的计算机科学项目,我正在尝试弄清楚我的第一步。更多详情可以前往项目page .

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

客户端发出一个文件或一组包含要处理的代码的文件。那段代码会实现一个我写的分布式算法接口(interface),一个具体的类。服务器将从该类创建一个对象。该对象将负责要运行的算法。服务器将结果返回给客户端。 (其实后来看了RMI,发现很像)。

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

问题:

  1. 我提出的挑战听起来像是反射(reflection)挑战,这是正确的吗?
  2. 关于如何实现它,您有什么初步建议吗?

在寻找一些分布式系统 Java 技术时,我遇到了 RMI、TRMI、LINDA、CORBA、JINI 和许多其他技术。 RMI 听起来最吸引人,因为它与我收集的解决方案非常相似,但它也很旧。

  1. 您认为哪些库可以帮助我完成这项任务?请记住,我是一名计算机科学专业的学生,​​所以完整的开箱即用解决方案不会坚持我的教授。
  2. RMI 很旧,有没有更好的解决方案?
  3. 有关于 TRMI 的综合教程吗?

如果您觉得我的逻辑有问题,请指正。

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

最佳答案

没有足够的信息来推荐库或技术。所以我想专注于您问题的“更多提示”部分;)

  • 服务器发送文件 - 通常是客户端服务器发送请求,服务器将创建响应。你应该遵循那个约定。
  • 需要执行文件 - 我们无法执行文件。文件可能包含一些可以由解释器或计算机执行的脚本或二进制代码。挑剔的原因:你必须对文件的内容做一些事情(解析、编译、解释、链接……)
  • 文件将实现一个 [...] 接口(interface) - 见上文,文件不实现任何东西。
  • 客户端将运行接口(interface) - 接口(interface)无法执行或运行。
  • 将算法的结果返回给服务器 - 如上所述:通常是客户端将文件(“请求”)发送到服务器。然后服务器将获取文件,根据文件内容进行一些计算并将结果(“响应”)返回给客户端。

远程方法调用

使用 RMI 我们通常会遇到以下场景:客户端 想要调用一个远程方法。客户端知道接口(interface)和服务器地址。服务器该接口(interface)的实现。现在客户端联系服务器并调用该服务器上的方法。

对于您的项目,它看起来有些不同:我认为客户端 有一个算法的实现(java 源文件或编译的类文件)并希望将它发送到一个或多个服务器。服务器应处理文件,执行一些输入(切片)的算法并返回结果。

RMI 可能是文件传输的候选者,但不是(算法)方法调用的候选者。远程方法可能看起来像这样(假设我们发送一个 java 源文件):

public Result process(String javaSource, Data data);

关于Java分布式系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7227700/

相关文章:

完全独立于系统时间变化的Java调度器

java - 如何保证所有Sparkworker都被停止了?

java - 在继承层次结构中使用类型转换?

java - 有没有更简单的方法来解析 Java 中的 XML?

java - 使用 picocli 可扩展的应用程序。最佳实践问题

java - 在 Android 上创 build 置向导

python - 限制大 RDD

xml - 在配置 hadoop 时启动 yarn 服务时出现错误

python - 在 zip 文件上分发大量文件的最佳方式

Matlab的日记+作业调度器