并行处理框架 JPPF 提供负载平衡,故障转移和 J2EE 集成

  • Srini Penchikala
  • 戴垚

2007 年 12 月 3 日

话题:JavaDevOps语言 & 开发架构

在上个星期,JAVA 并行处理框架(JPPF) 项目组发布了1.0 版本的第一个发布候选(RC1)。JPPF是一个开放源码的网格计算框架,它可以在一个分布执行环境中同时运行多个 java 应用。

JPPF架构由客户端,服务器和节点三部分组成。这个架构工作的原则是它将多个任务分配到多个节点上去执行,并在完成所有的步骤之后,重新组合结果并将之发还给客户端。

JPPF 也提供了负载平衡,故障转移和错误恢复等服务。并提供一个基于 JMX 的管理控制台,它既可以监视节点也可以管理执行的任务。你可以远程取消和重启任务,或配置令其超时的截止日期或时间间隔。

JPPF 框架使用一个兼容 JCA 1.5 规范的资源适配器与 J2EE 应用服务器进行集成,这个适配器为服务器提供了到原始网格服务的访问。适配器通过实现异步任务提交从而避免了 JTA 事务超时的风险。JPPF 支持以下的应用服务器:

InfoQ 就 JPPF 并行处理能力和项目今后的发展方向与创始人 Laurent Cohen 进行了交谈,Laurent 说他的团队正在计划 12 月推出 1.0 版本的 GA 发布。

针对关于 JPPF 框架与 JDK1.5 中的 java.util.concurrent API 之间的比较,Laurent 指出在一个有多处理器的单个机器中,相对于直接使用 java.util.concurrent 类,JPPF 会比较慢。但如果架构在多机器的网络中,相比之下 JPPF 是一个好的解决方案。在每一个 JPPF 架构组件内部都使用了 java.util.concurrent APIs。其中节点被配置成使用ExecutorService接口来进行多线程处理。

作为 java concurrency API 的一部分,Java 7 将会为细粒度的并行处理的需求引入一个关键特性,即fork-join框架。InforQ 问是否 JPPF 将来会有类似的特性。以下是 Laurent 的回答:

JPPF 正是为此而生的。JPPF 接受多个任务,并将之分配到不同的节点执行,最后再将结果重组成合适的格式。从这个角度来讲,我们可以把 JPPF 看作一个扩展的、分布式的 fork-join 框架。

关于如何比较 JPPF 与其他开源的并行处理框架如GigaSpacesTerracottaGridGain时,Laurent 说:

从范围和功能上来讲,GridGain 是与 JPPF 最相近的开源框架。区别是它们的实施架构:GridGain 使用一个 peer-to-peer 拓扑结构,而 JPPF 是一个为达到分布处理的多层次架构。

Terracotta 有着非常不同的哲学。他们对一个分布式 JVM 的实现是一个非比寻常的成就,但目前来讲这并不能使它成为一个网格计算框架。在集群和对一些关键特性的提供方面,例如分布式缓存,事务管理,复制等,Terracotta 做的非常好。

将 JPPF 应用在单个组织的局部拓扑中,而用 GigaSpaces 或Globus Toolkit管理更大的范围,JPPF 会和这些框架合作的非常好。

关于 JPPF 负载平衡的实施细节,他解释说:

应用将任务分组成“任务包(task bundle)”,并将之提交到一个中心 JPPF 服务器。基于一个动态计算的节点性能概要,任务包被分成子包后发送到每一个节点。子包的大小根据节点的历史性能记录来决定。性能概要被不断的重新计算,所以可以使框架自动适应新的和变化的状况,包括任务的类型和数量,实际在服务器注册的节点数量等。

关于故障转移的能力:

JPPF 所有的架构组件都实现了故障转移,它依赖与三个主要的机制:动态拓扑,故障检测和自动重新提交。JPPF 组件可以在任何时间以任何顺序在网络中添加或从网络中移除。

Laurent 谈到了两个典型的关于故障转移的例子,并解释 JPPF 如何在这种情况下切换到一个不同的节点。

第一个例子中,一个节点突然停止工作,或失去与服务器的连接。服务器会检测到这个故障,并自动将未完成的工作转移到另外一个节点。

在第二个例子中,客户端失去了与服务器的连接。客户端将自动试图重建连接直到成功,或在一个随意指定的超时到达。同时,一个客户端可以配置多个可连接的服务器,通过将这些服务器组织成一个层次结构来定义一个有效的故障转移策略。客户端这时从这个层次结构中找到下一个服务器,并重新提交工作请求。

关于 JPPF 框架如何支持应用级安全性的问题,他说 JPPF 将会以透明的方式使用任何应用使用的安全框架。另外,JPPF 节点可以定义一个可配置的安全策略,用来指定客户代码在节点主机上可以做什么和不可以做什么(例如对文件系统的写或读,对其他服务器建立连接等)。

最后谈到 JPPF 框架将会在未来版本引入的新特性时,Laurent 说 JPPF 将会与业务规则引擎(例如 ILOG Inc. 和 JBoss Rules)和 Web Services 进行集成。也将会与 ETL,商业智能(BI)和数据挖掘这些分布式处理正在发挥重要作用的领域中的工具进行集成,在这些领域中,需要分布式处理从数据仓库中的大量数据中提取数据。

作为SourceForge.net的一部分,JPPF 开始于两年前。它使用Apache License Version 2.0许可证,并可以从 SourceForge 项目的网站上下载。

查看英文原文:Parallel Processing Framework JPPF offers Load Balancing, Failover and J2EE Integration


译者简介:戴垚,2000 年计算机硕士毕业后一直从事软件开发管理工作,目前在一家大型外企担任开发部门经理。关心软件技术和相关工具的动态,深信技术的使用应以创造价值为根本。目前致力于 SOA 的研究,希望能对业以复杂的企业环境有所帮助。参与 InfoQ 中文站内容建设,请邮件至china-editorial@infoq.com
JavaDevOps语言 & 开发架构