Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有局部性的Java分布式对象?_Java_Cluster Analysis_Terracotta_Jboss Cache_Jcs - Fatal编程技术网

具有局部性的Java分布式对象?

具有局部性的Java分布式对象?,java,cluster-analysis,terracotta,jboss-cache,jcs,Java,Cluster Analysis,Terracotta,Jboss Cache,Jcs,我正在评估应用服务器的各种Java对象分发库(Terracotta、JCS、JBoss、Hazelcast…),我很难理解它们在不同轴上的行为 我对分布式对象的需求并不多——它们可以归结为一对一和一对多消息传递。还有更多,但对于其余部分,我们只使用JDBC,我假设我可以使用任何可用的库在它前面插入一个缓存 我想要一个能够分发对象并展示局部性属性的系统——换句话说,一个能够抓取对象的服务器倾向于抓住它,而不会与其他节点进行过度通信。Hazelcast看起来很简单(点对点也不错),但似乎要求对象均匀

我正在评估应用服务器的各种Java对象分发库(Terracotta、JCS、JBoss、Hazelcast…),我很难理解它们在不同轴上的行为

我对分布式对象的需求并不多——它们可以归结为一对一和一对多消息传递。还有更多,但对于其余部分,我们只使用JDBC,我假设我可以使用任何可用的库在它前面插入一个缓存

我想要一个能够分发对象并展示局部性属性的系统——换句话说,一个能够抓取对象的服务器倾向于抓住它,而不会与其他节点进行过度通信。Hazelcast看起来很简单(点对点也不错),但似乎要求对象均匀分布在所有节点上

我想要一种保存对象的方法,最好是透明的。我计划使用EC2,所以我可以选择临时、免费、有限的本地存储(磁盘)和永久、非免费、无限的存储(S3)。不用担心OutOfMemoryErrors会很好

我喜欢赤陶的简单和“魔力”,但它把我吓坏了。此外,为了真正实现规模化,您必须花费$$$,否则您将与单个中心进行通信

我很便宜,我想要的东西不仅是免费的,而且是成熟的,并且拥有大量的用户群


谢谢您的意见。

陶土似乎非常适合您的情况

  • 设置起来很简单
  • 可以将其配置为持久性(将EBS卷用于EC2)
  • 它与Ehcache(实际上是Terracotta购买的Ehcache)紧密集成,以获得出色的分布式缓存性能
  • 这项免费服务在多个客户中的规模相当大
开始玩吧。我打赌你会喜欢的。为了缓解对性能的担忧,只需运行消息传递的直通put测试。这不应该超过你一个下午的时间


我不得不承认,我已经一年没有用过赤陶了,而且我不知道你建议的其他产品。

赤陶确实符合要求。我理解你的反对意见,但以下是我的评论:

1) 兵马俑确实展示了地方性——与你提到的那些相比,它可能是最好的系统。对象仅在被请求时才引入本地JVM。使用租用机制执行读或写锁定。这意味着,如果您在系统中表现出完美的局部性,那么您将产生很少的网络开销

2) Terracotta在OSS版本中提供了开箱即用的磁盘持久性(您无需支付$$$)

3) 你为什么这么害怕?只需将EHCache用作缓存,或者使用Hibernate二级插件。它的设置和使用非常简单

4) 是的,Terracotta FX要求您支付(扩展服务器)。然而,我建议,如果你有一个系统,主要是阅读和展示真实的地方,那么我不认为你会有一个问题,你要找的规模。在Terracotta 3.2中,Hibernate二级缓存的性能是100000 ops/s,使用8台应用服务器和一台Terracotta服务器,读/写比率为100/0,使用相同的配置,读/写比率为95/5


(我刚刚为Bay Area SDForum做了一个关于这些数字的演讲,所以我碰巧手头有这些数字)

顺便说一句,不清楚您在寻找什么(消息传递与集群/分布式对象不同)


如果您正在寻找Java中的消息传递,我建议您看看RabbitMQ(它基于Erlang,但这并不重要)。

是的,Hazelcast将在集群中分发您的对象。但是,如果希望降低通信成本,可以启用近缓存。

我确实喜欢TC,但我对自己的对象使用DSO进行的测试没有那么好。除非你做了大量的测试(或者在生产中发现),否则你不会学到一些小麻烦。也许EHCache会更像傻瓜。我查看了RabbitMQ,但它有一个缺陷,即还不能持久化到磁盘(很快就会出现)。我希望将集群对象/分布式缓存/消息传递需求合并到一个系统中,以降低复杂性。