有几种:
- Terracotta(开源,基于Mozilla公共许可证));
- Oracle Coherence(以前称为Tangosol Coherence;商业;基于JSR 107,从未被正式采用);
- GigaSpaces(商业;基于JavaSpaces API,Jini的一部分));
- GridGain,你提到的(开源:LGPL);
- memcached with a Java client library (开源:BSD License;
- EHCache(开源:Apache软件许可证);
- OSCache(开源:修改后的Apache许可证;和
- 毫无疑问,还有其他几个。
现在我还没有使用所有这些,但我已经使用或调查了其中的大多数。
GridGain和GigaSpaces更侧重于网格计算而不是缓存,并且(恕我直言)最适合计算网格而不是数据网格(请参阅计算与数据网格的解释)。我发现GigaSpaces是一项非常有趣的技术,它有几个许可选项,包括免费版本和初创公司的免费完整版本。
Coherence和Terracotta试图将缓存视为Maps,这是一个相当自然的抽象。我经常使用Concuric,它是一款出色的高性能产品,但并不便宜。我不太熟悉的兵马俑。Coherence的文档有时我觉得有点缺乏,但它确实是一个功能强大的产品。
OSCache 我主要用作减少Java Web应用程序中内存使用和碎片化的手段,因为它具有相当整洁的JSP标签。如果你曾经看过编译的JSP,你会看到它们做了很多字符串串联。此标记允许您有效地将 JSP 代码段和 HTML 的结果缓存到单个字符串中,这在某些情况下可以极大地提高性能。
EHCache是一个简单的缓存解决方案,我也在Web应用程序中使用过。从来没有作为分布式缓存,但它可以做到这一点。我倾向于将其视为一个快速而肮脏的解决方案,但这也许是我的偏见。
memcached在PHP世界中尤其重要(并被Facebook等网站使用)。这是一个非常轻巧和简单的解决方案,其优点是它不在同一进程中运行,并且如果这对您很重要,那么您将拥有与其他技术堆栈更好的互操作性选项。
您可能还想看看Hazelcast。Hazelcast是队列,主题,映射,集合,列表,锁定和执行器服务的开源事务,分布式/分区实现。它非常容易使用;只需将 hazelcast.jar 添加到您的类路径中,然后开始编码即可。几乎不需要任何配置。
如果您有兴趣以分布式方式执行 Runnable、可调用任务,请查看分布式执行器服务文档,网址为 http://code.google.com/docreader/#p=hazelcast
Hazelcast在Apache许可证下发布,并且还提供企业级支持。
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-