2008-12-21 121 views

回答

31

有几种:

现在我没有使用所有这些,但我已经使用或调查了大部分。

GridGai n和GigaSpaces比缓存更集中于grid computing,而(imho)最适合计算网格而不是数据网格(请参阅this explanation of compute vs data grids)。我发现GigaSpaces是一个非常有趣的技术,它有几个许可选项,包括免费版和免费的初创公司完整版。

连贯性和兵马俑尝试将缓存视为Maps,这是一个相当自然的抽象。我已经使用了很多Coherence,这是一款优秀的高性能产品,但并不便宜。兵马俑我不太熟悉。 Coherence的文档有时候有点缺乏,但它确实是一个强大的产品。

OSCache我主要用于减少Java Web应用程序中的内存使用和碎片,因为它具有相当整洁的JSP标记。如果你看过编译过的JSP,你会看到他们做了很多字符串连接。此标记可让您有效地将一段JSP代码和HTML的结果缓存到单个字符串中,这在某些情况下可极大地提高性能。

EHCache是​​一个简单的缓存解决方案,我也用在Web应用程序中。尽管不是分布式缓存,但它可以做到这一点。我倾向于将其视为一种快速而肮脏的解决方案,但这也许是我的偏见。

memcached在PHP世界中尤为普遍(并被Facebook等网站所使用)。这是一个非常简单和轻松的解决方案,它的优点是它不会在同一个进程中运行,如果这对您很重要,那么您将拥有更好的与其他技术堆栈的互操作性选项。

+0

对不起,我的答案是分布式缓存框架的全面概述,而不是关于如何为Java应用程序启用/设置集群的信息:-) – Karl 2009-02-23 19:09:40

5

我觉得@ cletus的总结很不错。我确实想提到Terracotta提供的不仅仅是地图形式的分布式缓存。它将Java堆和同步原语集中在一起,将并发Java程序变成分布式Java程序。你可以使用缓存(包括使用分布式版本的开源缓存库)或其他一些东西。

对于工作分配,在Terracotta上面还有一些额外的库,特别是tim-pipes(用于消息)和tim-masterworker(用于大师工作者风格分布)在Terracotta上是很好的抽象。这个库是在秦始皇锻造:

这家新近添加的页面相比可以增加一点额外的信息,以其他一些潜在的数据技术:

2

如果你想走低一点,有JGroups,它为您提供了群集java进程的基础知识。

21

您可能还想查看Hazelcast。 Hazelcast是队列,主题,地图,集合,列表,锁定和执行器服务的开源事务,分布式/分区实现。与之合作非常容易;只需将hazelcast.jar添加到您的类路径中并开始编码即可。几乎不需要配置。

如果您有兴趣以分布式的方式执行你的Runnable,可调用任务,那么请在http://code.google.com/docreader/#p=hazelcast

Hazelcast退房分布式执行人服务文档在Apache许可和企业级支持发布也可用。

2

另一个你可以添加到列表中的是Appistry CloudIQ。它是一个分布式计算环境。它可以作为free download多达5台机器使用。它包括负载分配以及在硬件故障情况下自动故障切换等功能。

1

对于网格计算,您也可以考虑Ice GridDataSynapse GridServer。这些都为分配任务提供了非常有效的机制,并提供故障转移和冗余。

1

我认为你的问题已被解释为不同的方式,你问一个库,你可以用它来“集群启用”你的应用程序。

虽然上面提到的一些库可以帮助提供特定的集群功能,例如分布式缓存,但更常规的工作负载管理方式是通过使用J2EE容器。

通过设置群集容器实例,可以使用HA功能和工作负载管理,群集在应用程序级别几乎是透明的。我之所以说,几乎是因为编写将要进行群集的应用程序时,必须小心如何管理状态,例如,如果您实施某种缓存,则需要在每台计算机上复制缓存的状态。

一个好的开始地点是下载glassfish并尝试设置一个聚集的glassfish实例。

希望有所帮助。

卡尔

1

一个很晚的答案 - 但它一定程度上取决于你的应用程序的配置方式。您可能想要远程运行可执行文件,而不是使用上述方法之一。

道歉缺乏链接 - 但直到我的代表我不能超过一个。以斜体表示的产品应该易于Google使用。

如果你想在参数搜索中运行一个可执行文件 - 比如说你想用每个实例的选项范围来启动相同的可执行文件,那么传统的批处理方式很好。这是一个非常传统的高性能计算的办法,仍然是广泛使用 - 在企业规模处理这个合适的基础设施是平台LSFDataSynapse公司GridServerPBS或它的成熟的Windows HPC服务器。您可能还想看看开源产品,如GlobusCondor。根据您的应用程序的规模有多大,您也可以查看gLite,它用于LHC等大型科学项目。

传统的HPC方法受益于让您的应用程序代码与包含计算基础架构的进程相隔离,但性能可能会受到影响,而其他应用程序可能会显示更快的吞吐量,但对于长时间正常运行的系统容易出现内存泄漏和其他问题。

相关问题