- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Jini的分布计算模式及初步应用.pdf
基于 Jini 的分布计算模式及初步应用
韩怡昕,王小鸽
(清华大学计算机科学与技术系,北京,100084)
E_mail: hanyx00@
摘 要 MPI 已经成为了基于消息传递的并行程序开发标准平台,但是在处理容错问题方面它还存在一
些不足,本文利用 Jini 技术开发一种新的分布计算模式来解决这个问题。
关键字 容错、分布计算、Jini 。
一、 引言
作为并行计算的硬件平台,工作站机群系统近年来受到国内外人士的普遍关注,由于具有良好的灵
活性、可扩展性,能充分利用现有的硬件资源以及性价比等优势,并行机群系统已经成为并行计算机系
统结构发展的一个重要趋势。另外各种高速网络技术的发展以及一批基于消息传递机制的并行处理平台
的出现,更使得机群系统成为大型科学与工程计算的一个重要手段[1]。容错、分布计算、Jini 。
对 Java 程序员不利的是,多数机群系统上的并行程序开发平台都是围绕消息传递 API 来实现的,
例如 MPI 和 PVM 都是如此。作为基于消息传递的并行计算环境,MPI 在分布式计算中得到了广泛的应用。
它已经成为了基于消息传递的并行程序开发标准平台。但是用 C 语言来开发并行程序并不是件容易的
事,而且 MPI 在应用中也存在一些问题:在 MPI-1 中没有提供容错的策略,任务和主机均是静态的。当
任务组中的一个任务或计算资源失败后,整个应用程序都将失败。对于失败管理和恢复来说这显然是不
足的。MPI-2 提供的 mpi_spawn()可以动态地生成任务,但仍未提供从失败中自动恢复的机制[6]。当对
容错性的要求较高,需要应用程序在出错的情况下能不经人工干预就从错误中自动恢复时,就需要使用
新的编程模式来解决 MPI 并行计算中的容错性问题。针对这个问题,我们提出了一种新的分布计算方法
来解决问题,就是使用 Jini 技术来创建自己的分布计算系统。
二、 利用 Jini 来进行分布计算
1.体系结构
这种分布计算方法的思想是把要解决的整个任务分解为多个可分布执行的子任务,在整个系统中包
含一个任务调度器和多个运行服务器,任务调度器生成多个线程,每个线程中包含不同子任务的执行代
码。这些线程将其代码迁移到不同的运行服务器上。然后,每个运行服务器执行迁移给它的代码并将结
果返回给任务调度器,作业调度器将各个线程的结果组合起来形成最后的结果。
在这个系统中主要包含以下组件:
任务调度器:是执行控制的机器,它负责生成不同的线程,每个线程都包含要处理的主任务的一个
子任务。每个线程内的代码都被发送到一台远程计算机去执行。所有的线程都要在作业调度器上进行调
度。从 Java 编程的角度来看,这个组件就是客户端的主程序。
Agent:是一个用户自定义的类,该类要作为子任务的一个代理发送到远程计算机上进行执行并返
回结果,其中包含了该子任务的的数据以及代码部分。可以为 Agent 类取任何名字,不过名字应该能起
到描述子任务的作用。在定义 Agent 类时,必须实现 CompugentInterface 接口以及 execute 方法,下
面对这个接口和方法进行说明。
1
CompugentInterface:是我们定义的一个 Java 接口。必须在 Agent 类中实现该接口和 execute
方法。execute 方法中包含了将在远程执行的代码。只要在远程计算机上存在标准 Java 库,我们可以
在该方法中调用标准 Java 库中的类。
LocaleInterface:是我们定义的另一个 Java 接口,它定义了可以在 Jini 中对外提供的一种服务,
即Locale服务。某台机器对外提供Locale服务就说明网络上的机器可以使用它的计算资源来进行运算,
要做到这一点,只需要有一个实现了 LocaleInterface 接口的类即可。
2.系统的实现
要使这个系统能够实际运行起来,我们需要实现任务调度器和运行服务器两部分,下面将说明如何
分别实现它们。
2.1.运行服务器的实现
运行服务器的实现比较简单,只要在启动时查找网络中的查找服务,然后使用以下语句在查找服务
中进行注册,声明自己对外提供Locale 服务即可:
文档评论(0)