我在JBoss AS 5.1集群上部署了一个Java应用程序,需要缓存很多(> 3 GB)数据。 现在服务器集群只有2个节点(单独的机器)。 以下是具体要求:
上述两个要求对于应用程序来说都非常重要。如果能够记住这两点,我会感激不尽。 我还应该添加第三个要求:
该应用程序最初使用的是Hashmap。我尝试用JBoss Cache 3.2.1替换hashmap以获得其复制和线程安全功能。但我对JBoss Cache的性能并不满意。此外,当我在缓存中加载数据时,几乎完全使用了8千兆字节的RAM(其大部分由缓存条目使用)。
我想听听那些自己处理过这种缓存场景的人的经历。感谢您提前的时间。
答案 0 :(得分:2)
您可以尝试使用GigaSpaces XAP datagrid是一个复制缓存。它的性能非常高。
答案 1 :(得分:0)
如果您想要一个提供Java HashMap接口的缓存,并且可以轻松支持千兆字节的缓存数据,并且没有过期,那么请查看Oracle Coherence。这将使用Coherence“分布式缓存”选项(这是默认配置)。有关详细信息,请参阅:http://coherence.oracle.com/
为了充分披露,我在Oracle工作。本文中表达的观点和观点是我自己的,不一定反映我的雇主的意见或观点。
答案 2 :(得分:-2)
我已经解决了'之前的这个问题(工作代码,不能告诉你)......但是,我可以告诉你这个:
尽可能使用数组......
编辑:显然哈希地图的概念已经被遗忘了......哈希地图的Java实现是否让人们相信这是唯一的方法?一组结构化数组,带有散列函数和二进制排序....所有基本结构...... http://en.wikipedia.org/wiki/Hash_table
要添加密钥的一个数组。用于存储值的并行数组,以及用于快速查找键数组的基于int的哈希表...
计算机科学 - 可能是第二年; - )
再次编辑:我曾经在这里核心我在JDOM项目中描述的概念:https://github.com/hunterhacker/jdom/blob/master/core/src/java/org/jdom2/StringBin.java