问题很明显,正如您在标题中看到的那样,我将很高兴听到您对adv./disadv的看法。他们之间的差异。
更新 我决定使用Hazelcast,因为它具有分布式缓存/锁定机制等优点,并且在适应您的应用程序时非常容易配置。
答案 0 :(得分:84)
我们尝试了两种最大的在线分类和电子商务平台。我们从ehcache / terracotta(服务器阵列)开始,因为它是着名的,由Terracotta支持并且拥有比hazelcast更大的社区支持。
当我们在生产环境(分布式,超出一个节点集群)上获得它时,事情发生了变化,后端架构变得非常昂贵所以我们决定给榛树一个机会。
Hazelcast非常简单,它可以完成它所说的并且在没有任何配置开销的情况下表现非常好。
我们的缓存层在淡褐色的基础上超过一年,我们对它非常满意。
答案 1 :(得分:17)
尽管Ehcache在Java系统中很受欢迎,但我发现它不如其他缓存解决方案灵活。我和Hazelcast一起玩,是的,它完成了工作,很容易运行等等,它比Ehcache更新。我可以说Ehcache比Hazelcast具有更多功能,更成熟,并且背后有很大的支持。
还有其他一些优秀的缓存解决方案,具有所有不同的属性和解决方案,例如良好的旧Memcache,Membase(现在的CouchBase),Redis,AppFabric,甚至几种NoSQL解决方案,它们提供具有或不具有持久性的密钥值存储。它们在实现CAP定理或BASE定理以及交易时都具有不同的特征。
您应该更关心,哪一个在您的应用程序中具有您想要的功能,您应该再考虑CAP定理或BASE定理。
此test最近由Netflix在云端进行了Cassandra。他们通过大约300个实例到达million writes per second。 Cassandra不是内存缓存,但您的数据模型就像一个缓存,它由键值对组成。您也可以使用Cassandra作为分布式内存缓存。
答案 2 :(得分:11)
Hazelcast一直是规模化的噩梦,稳定性仍然是一个主要问题。
网格组件选择的专用客户端是
如果任何主机可以从这个数据网格中请求记录,那么这将是一个甜蜜的设计,但你仍然坚持使用这两个平淡无奇的选项来从中获取任何东西。
数据库线程池锁定单个成员而不向数据库写入任何内容时会出现多个问题,导致永久性记录丢失是一个常见问题,我们经常需要花费数小时来刷新任何JVM。裂脑仍然是一个问题,虽然在1.9.6中似乎已经平静了一点。
集会转移到Ehcache并改进数据库层,而不是将其用作创可贴。
答案 3 :(得分:6)
答案 4 :(得分:6)
答案 5 :(得分:4)
Ehcache的一个优势是它得到了一家公司(Terracotta)的支持,该公司在大型性能实验室中进行广泛的性能,故障转移和平台测试。 Terracotta提供支持,赔偿等。对于许多公司来说,这类事情很重要。
我没有使用Hazelcast,但我听说它易于使用且有效。关于Hazelcast与Terracotta / Ehcache的可扩展性或性能,我没有听说过任何内容,但考虑到Terracotta的可扩展性和故障转移测试的数量,我很难想象Hazelcast在生产部署中具有竞争力。但我认为它适用于较小的用途。
[偏见:我是Terracotta的前雇员。]
答案 6 :(得分:0)
开发人员将Ehcache描述为“ Java最广泛使用的缓存”。 Ehcache是基于标准的开源缓存,可提高性能,减轻数据库负担并简化可伸缩性。它是最广泛使用的基于Java的缓存,因为它功能强大,经过验证且功能齐全。 Ehcache从具有一个或多个节点的进程内扩展一直到具有TB级缓存的进程内/进程外混合配置。另一方面,Hazelcast被详细描述为“用于Java的集群和高度可扩展的数据分发平台”。 Hazelcast具有各种分布式数据结构,分布式缓存功能,弹性特性,内存缓存支持,与Spring和Hibernate的集成以及更重要的是与众多快乐用户的集成,是功能丰富,面向企业且对开发人员友好的内存中数据网格解决方案
Ehcache和Hazelcast主要分别分类为“缓存”和“内存数据库”工具。