这是在服务器集群上运行应用程序的能力,旨在分配负载并提供额外的冗余.
我已经看过GridGain的演示文稿,我对它印象非常深刻.
知道其他人吗?
有几个:
Terracotta(开源,基于Mozilla公共许可证);
Oracle Coherence(以前的Tangosol Coherence;商业;基于JSR 107,从未正式采用);
GigaSpaces(商业;基于JavaSpaces API,Jini的一部分);
GridGain,你提到过(开源:LGPL);
memcached与Java客户端库(开源:BSD许可证 ;
EHCache(开源:Apache软件许可证 ;
OSCache(开源:修改过的Apache许可证 ;以及
毫无疑问其他几个人.
现在我还没有使用所有这些,但我已经使用或调查过它们中的大多数.
GridGain和GigaSpaces更多地以网格计算为中心,而不是缓存和(imho)最适合计算网格而不是数据网格(参见计算与数据网格的解释).我发现GigaSpaces是一个非常有趣的技术,它有几个许可选项,包括免费版和初创公司的免费完整版.
Coherence和Terracotta尝试将缓存视为Maps,这是一种相当自然的抽象.我已经使用了Coherence,它是一款出色的高性能产品,但并不便宜.兵马俑我不太熟悉.Coherence的文档有时候有点缺乏,但它确实是一个强大的产品.
OSCache我主要用它来减少Java Web应用程序中的内存使用和碎片,因为它有一个相当简洁的JSP标记.如果你曾经看过编译过的JSP,你会看到他们做了很多String连接.此标记允许您有效地将一段JSP代码和HTML的结果缓存到单个String中,这在某些情况下可以极大地提高性能.
EHCache是一个简单的缓存解决方案,我也在Web应用程序中使用.从来没有作为分布式缓存,但它可以做到这一点.我倾向于将其视为快速而肮脏的解决方案,但这可能是我的偏见.
memcached在PHP世界中特别优秀(并被Facebook等网站使用).这是一个非常简单易用的解决方案,其优势在于它不会在同一个流程中运行,如果这对您来说很重要,那么您可以选择与其他技术堆栈更好的互操作性选项.
您可能还想查看Hazelcast.Hazelcast是队列,主题,映射,集合,列表,锁定和执行程序服务的开源事务,分布式/分区实现.它非常容易使用; 只需将hazelcast.jar添加到您的类路径中并开始编码.几乎不需要配置.
如果您有兴趣以分布式方式执行Runnable,Callable任务,请查看http://code.google.com/docreader/#p=hazelcast上的 Distributed Executor Service文档.
Hazelcast是在Apache许可下发布的,并且还提供企业级支持.
你考虑过Infinispan吗?它是一个来自JBoss.org的开源数据网格平台.有关更多详细信息,我建议您阅读此(旧)博客文章,宣布该项目,以及更多有趣的博客文章,包括使用Infinispan与Hibernate和作为独立缓存.最近,在Red Hat的企业数据网格上.有一个快速的"入门"指南,还有一个DZone RefCard,甚至是YouTube视频 :)
我认为@ cletus的总结非常好.我确实想提一下,Terracotta提供的不仅仅是地图形式的分布式缓存.它集群Java堆和同步原语,将并发Java程序转变为分布式Java程序.您可以使用它进行缓存(包括使用分布式版本的开源缓存库)或其他一些东西.
对于工作分配,在Terracotta上面有一些额外的库,特别是tim-pipes(用于消息)和tim-masterworker(用于Master-Worker样式分配)是Terracotta之上的很好的抽象.这个图书馆在Terracotta Forge上:
http://forge.terracotta.org/releases/projects/tim-messaging/
与其他一些潜在的数据技术相比,这个最近添加的页面可能会添加一些额外的信息:
http://www.terracotta.org/web/display/orgsite/Terracotta+vs+Alternate+Technologies