首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于由精细对象组成的快速变化的大型数据,Terracota是一个很好的解决方案吗?

对于由精细对象组成的快速变化的大型数据,Terracota是一个很好的解决方案吗?
EN

Stack Overflow用户
提问于 2012-07-10 19:21:29
回答 1查看 108关注 0票数 0

我正在为我当前的问题陈述评估Terracotta。这个过程是CPU密集型的,需要大约5-10 GB的工作内存(RAM)。内存中的每个对象都有1千字节大小,并由几个原始数据类型组成。整个RAM数据经历了数千次迭代,每次迭代都会更改所有对象。每个对象都被完全修改。这个过程需要几天的时间才能完成。

million+对象是分区的,现在在多个核心机器上运行,但我需要更多的能力和更多的内存(对于更大的问题)。一个线程处理的数据/对象不与其他线程共享

Terracota是一个很好的解决方案吗?将数百万个对象同步到集群服务器会不会是一个非常糟糕的瓶颈,从而使其效率低下?

EN

回答 1

Stack Overflow用户

发布于 2012-09-28 03:20:54

我认为Terracotta最适合缓存和快速检索。作为put速率,我已经看到每个缓存服务器实例的每秒10K“批处理put”速率。“批量更新”模式意味着您可以将一组条目放入一次,这将比单个put效率高得多。

以下是批处理更新的示例:

代码语言:javascript
复制
cache.setNodeBulkLoadEnabled(true);
try
{
  Collection<Element> entries= new ArrayList<Element>();
  while (...)
  {
    entries.add(new Element(key, value));
  }
  cache.putAll(entries);
}
finally
{
  cache.setNodeBulkLoadEnabled(false);
}

此外,Terracotta还具有BigMemory特性,能够使用JVM堆之外的内存。要启用它,你必须在你的ehcache.xml中添加:

代码语言:javascript
复制
<cache name="com.xyz.MyPOJO" maxMemoryOffHeap="3g">
  <terracotta/>
</cache>

上面的例子将在你的JVM之外使用3Gig的内存。一般来说,堆大小不应该大于4G,否则JVM会在GC...which上花费大量的周期,这会进一步减慢计算速度。

check的另一个替代方案是“计算/数据网格”解决方案。您可以从http://www.gridgain.comhttp://www.gigaspaces.com开始

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11412248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档