对于大规模Java数据网格技术,您会推荐什么:Terracotta,GigaSpaces,Coherence等?

时间:2009-02-12 04:13:16

标签: java memcached terracotta gigaspaces datagrid

我一直在阅读包括Terracotta,GigaSpaces和Coherence在内的Java平台的所谓“数据网格”解决方案。我想知道是否有人在使用任何这些工具的实际经验,并可以分享他们的经验。我也很想知道人们使用的部署规模:我们是在谈论2-4个节点集群还是你曾经使用过比这更大的任何东西?

我对Terracotta很感兴趣,因为它对Hibernate和Spring的“支持”,我们都大量使用它们。我也喜欢它如何根据配置修饰字节码,并且不需要你对“网格API”进行编程。我不知道使用显式API方法的工具有什么优势,但如果它们确实存在,我们很乐意听到它们。 :)

我也花时间阅读有关memcached的内容,但我更感兴趣的是听到有关这三种特定解决方案的反馈。我很想知道如果有人使用过这两种文件,他们会如何对抗memcached。

4 个答案:

答案 0 :(得分:8)

您也可以查看Hazelcast。 Hazelcast是队列,主题,映射,集合,列表,锁定和执行程序服务的开源事务,分布式/分区实现。它非常容易使用;只需将hazelcast.jar添加到您的类路径中并开始编码。几乎不需要配置。

Hazelcast在Apache许可下发布,并且还提供企业级支持。代码托管在Google Code

答案 1 :(得分:7)

我们有50台运行webservice应用程序的服务器,所有这些服务器都使用bigIP进行负载平衡。要求是缓存每个用户状态,以便后续状态不再执行相同的处理并从先前状态获取数据。这样,Web服务的客户端不需要维护状态。

我们使用Terracotta缓存状态,从未遇到任何性能问题。在高峰时间,请求申请的数量是每秒100个。

答案 2 :(得分:3)

您选择的库实际上取决于您的应用程序以及您要实现的目标。

我曾在一家商店工作,该商店使用Coherence为其Web应用程序提供可扩展性(以及冗余,类型)。我们发现您必须拥有大约4-5个节点才能从Coherence获得任何好处(2或3个节点可能会降低性能)。我相信Oracle的文档说你需要很多(30+)节点来真正从Coherence中获益。如果您使用Coherence,请确保正确设置硬件 - 它对延迟非常敏感。

我个人会远离“闯入”的东西。它们可能会给你一些东西,但你最终会遇到同步或性能问题,并且必须开始编写特定于网格层的代码。基本上,您比图书馆更了解您的应用程序,并且能够确定哪些项目需要在缓存中,需要多长时间,以及如何使用应用程序等。

答案 3 :(得分:2)

我对这些技术没有足够的经验,但我认为Apache Hadoop被证明具有可扩展性和可靠性。雅虎在10,000 core Linux cluster上运行了它。

它基于Google MapReduce算法。

This文章介绍了MapReduce以及为什么要关注它。