InfoQ

新闻

GridGain 2.0支持负载均衡、工作窃取和数据分区

作者 Srini Penchikala译者 沙晓兰 发布于 2008年3月12日 上午1时20分

社区
Java
主题
网格计算
标签
GridGain,
网格计算,
负载均衡

最新版本的GridGain是一个基于Java的开源网格计算框架,其支持负载均衡和数据分区等特性。最近,GridGain Systems发布了该框架的2.0版本。该版本包含“工作窃取”特性,这使得在过载(overload)节点上正在运行的调度任务可以被“窃取”到欠载(underloaded)节点上运行。

负载均衡特性支持几种不同的调度策略,比如轮询(Round Robin,默认的)、加权随机(Weighted Random)、自适应调度(Adaptive)、以及粘性负载均衡(Affinity/Strick Load)。另外,对于Oracle Coherence产品还有可定制的粘性负载均衡策略。

“工作窃取”SPI能够动态地在网格各节点间均衡负载(它将调度工作从网格中的过载节点上卸载,再加载到欠载节点上)调度任务。这个特性既支持任务调度,同时也支持网格中所执行的任务的失败转移。网格“工作窃取”特性的设计概念,建立于由Doug Lea开发的Java Fork/Join框架之上,而且考虑到了Java SE 7。这个特性可以用来避免任务被堵塞在“慢”节点上,因为它们被“快”节点“窃取”了。失败转移SPI确保了工作能够被正确地转移到发送“窃取”要求的节点上。

如果你面对的是一个庞大的数据集的话,那你就必须对网格中各节点间的大量网络传输数据如指掌。GridGain拥有如下一系列特性来对庞大的数据集之上的工作进行优化:

  • 数据分区和粘性负载平衡:这个特性通过在网格节点间对数据进行分区,并将网格工作精确地发送到数据所在的节点,从而对这些数据进行整合计算。
  • 节点分割(Node Segmentation):网格节点被分割为各个组,每个组分别工作于它们各自的数据集。如果网格中一些节点只负责将任务提交到网格(管理者),而其它节点组(工作者)只负责运行这些任务,在这样的情况下,节点分割这个特性很有用。
  • 中间检查点(Intermediate Checkpoints):在处理费时较长的工作的时候,周期性地保存中间任务状态常常很有用。检查点SPI提供了这个特性,这样一来,即使任务失败转移到另一个节点,也无需再重新从头开始运行。

GridGain 2.0版本中还包含了另外一些新特性

  • 监控:开发者可以通过GridNodeMetrics接口得到关于所有网格节点的运行参数。这些参数包涵了CPU和堆内存的信息,以及有关网格中活动的(active)、闲置的(idle)和被拒绝的(rejected)任务的详细情况。
  • 资源注射:GridGain现在可以通过@GridUserResource 注解向任务和工作中注入任何资源。Spring的应用程序上下文(Application Context)也可以通过使用@GridSpringApplicationContextResource注解来注入。
  • 网格工作上下文(Grid Job Context):该特性允许开发者通过使用GridJobContext接口对某项特定工作上附加属性,或者通过使用GridTaskSession向所有参与任务的工作添加属性。

GridGain框架已经集成了一些开源和商业的框架及应用服务器,如JUnitAspectJSpringJBossJGroupsGlassFishWebLogicWebSphere、 Coherence、MuleJXInsight以及GigaSpaces等。

另外,还有一个分布式JUnit4 GridGain任务可以被用来跨网格运行JUnit4测试或测试套件,以加快所有测试的总体执行速度。分布式JUnit测试使用@GridifyTest注解来配置。如果在集成的开发服务器环境下,使用分布式JUnit测试就很有用,在这种情况下,每夜应用程序构建通常需要花费很长时间来运行一些单元和集成功能测试,而这个应用程序的整个测试套件是其中的一部分。

GradGain可以通过GridTaskSessionAttributeListener接口来设置对异步通知的支持。另外,它也能够通过拥有用于管理任务的检查点(checkpoints)特性的GridTaskSession接口来处理工作间的依赖。

查看原文:GridGain 2.0 Supports Load Balancing, Work Stealing and Data Partitioning

没有回复

回复

独家内容

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。