这是能够运行的应用程序在一个集群服务器的意图,以分配负载,并提供额外冗余。

我已经看到了一个演示 GridGain 我非常深刻的印象。

知道的任何其他人吗?

有帮助吗?

解决方案

有几个:

现在我还没有使用所有这些,但我已经使用或研究了其中的大多数。

GridGain 和 GigaSpaces 更集中于 网格计算 比缓存和(恕我直言)比数据网格更适合计算网格(参见 计算与数据网格的解释)。我发现 GigaSpaces 是一项非常有趣的技术,它有多种许可选项,包括免费版本和面向初创公司的免费完整版本。

Coherence 和 Terracotta 尝试将缓存视为 地图, ,这是一个相当自然的抽象。我经常使用 Coherence,它是一款出色的高性能产品,但价格并不便宜。兵马俑我不太熟悉。我发现 Coherence 的文档有时有点缺乏​​,但它确实是一个强大的产品。

我主要将 OSCache 用作减少 Java Web 应用程序中的内存使用和碎片的一种方法,因为它具有相当简洁的 JSP 标记。如果您曾经查看过已编译的 JSP,您会发现它们进行了大量的字符串连接。该标记允许您有效地将一段 JSP 代码和 HTML 的结果缓存到单个字符串中,这在某些情况下可以极大地提高性能。

EHCache 是一个简单的缓存解决方案,我也在 Web 应用程序中使用过。虽然从来没有作为分布式缓存,但它可以做到这一点。我倾向于将其视为一种快速而肮脏的解决方案,但这可能是我的偏见。

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

其他提示

您可能还需要检查出Hazelcast。 Hazelcast 是一个开源事务,分布式/分区执行队列,主题,地图,设置,列表,锁和执行者服务。这是超级容易的工作;只需添加hazelcast.jar到CLASSPATH并开始编码。几乎没有配置是必需的。

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

Hazelcast 是下Apache许可证和企业级支持释放也是可用的。

你有没有考虑 Infinispan?它是一个开放源数据电网平台,从JBoss.org.更多详细信息,我建议你读这个(老) 博客 宣布的项目,随着更有趣的博客的注意,包括一个关于 使用Infinispan与休眠 并且作为一个 独立高速缓存.甚至最近,上 红帽子的企业的数据格.那里是 一个快速的"入门"的指南, 和一个 DZone个速查卡 太多,甚至 YouTube上的视频 :)

我认为@cletus的总结非常好。我确实想提一下,Terracotta 提供的不仅仅是地图形式的分布式缓存。它将 Java 堆和同步原语集群化,将并发 Java 程序转变为分布式 Java 程序。您可以用它进行缓存(包括使用开源缓存库的分布式版本)或一堆其他东西。

对于工作分发,在 Terracotta 之上编写了一些额外的库,特别是 tim-pipes (用于消息)和 tim-masterworker (用于 Master-Worker 样式分发)是 Terracotta 之上的出色抽象。该图书馆位于兵马俑锻造厂:

与其他一些潜在的数据技术相比,最​​近添加的页面可能会添加一些附加信息:

JPPF 是也好看。

如果你想要去一个小较低的水平,有 JGroups的,它为您提供了聚类Java进程的非常基本。

和也查询 ProActive的

另外,你可以添加到列表中的 Appistry公司CloudIQ 。它是一种分布式计算环境。它可以作为href="http://www.appistry.com/developers/" rel="nofollow noreferrer">免费下载一个的多达5台机器。它包括负载分布以及自动故障转移的工作在硬件故障的情况下,其他特征。

网格计算,你也可以考虑 冰网DataSynapse GridServer.这些都提供了非常有效的机制来分配任务和提供的失败和冗余。

我觉得你的问题以不同的方式被解释,你问,你可以用它来“集群启用”您的应用程序库。

尽管一些上述指定库的可以帮助提供特定于簇的功能,如分布式缓存,使工作负载管理的更常规的方式是通过使用J2EE容器的

通过建立群集容器实例这允许你利用HA的特征和工作负载管理,集群是在应用程序级别几乎是透明的。我说的差不多,因为写一个将要聚集你要小心,你如何管理状态,例如,如果您实现某种缓存则需要在每个机器复制缓存的状态的应用程序时。

有一个很好的起点,将下载GlassFish和尝试,并设置群集GlassFish实例。

希望有所帮助。

卡尔

同时检查的Fura

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

道歉缺乏的环节 - 但直到我代表了我不能发布一个以上。斜体产品应该很容易给谷歌。

如果你想运行的参数搜索可执行 - 说你要旋转起来一样可执行文件的每个实例的选择范围 - 那么传统的分批进场效果很好。这是一个非常传统的高性能计算的办法,仍然是广泛使用 - 在企业规模处理这个合适的基础设施条件的平台LSF DataSynapse公司GridServer PBS 的或作为它的成熟视窗HPC服务器。你可能也想看看开源产品一样的的Globus 神鹰的。根据您的应用程序是多么大,你也可能看的 gLite 的,这是用于像LHC超大规模科学工程。

从具有从包括你的计算基础设施的过程中分离应用程式码,但也可以采取的性能损失,而另一些可能显示更快的吞吐量,但容易出现内存泄漏和用于长期正常运行时间系统的其他问题的TRAD HPC方法的好处。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top