我可以使用Terracotta来扩展RAM吗?

我正在评估兵马俑,以帮助我扩大目前RAM-bound的应用程序。 它是一个协作过滤器,每个用户存储大约2千字节的数据。 我想使用亚马逊的EC2,这意味着我仅限于14GB的内存,这使得我有效的服务器上限约为700万用户。 我需要能够扩展到这个范围之外。

根据我的阅读结果,我发现Terracotta可以拥有比每台服务器上的可用RAM更大的群集堆。 拥有30GB或更高的有效群集堆是否可行?每台服务器只支持14GB?

每个用户数据(其中大部分是浮点数组)非常频繁地变化,可能每分钟数十万次。 这些更改中的每一个更改都不需要在集群中的其他节点发生同步时进行同步。 是否有可能只定期同步一些对象字段?


我会说这个答案是肯定的。 兵马俑确实允许你使用大于单个JVM大小的群集堆,尽管这不是最常见的用例。

您仍然需要记住a)工作集大小和b)数据流量。 对于a)来说,在任何给定的时间内都有一些数据必须在内存中执行,如果该工作集大小>堆大小,性能显然会受到影响。 对于b),群集堆中添加/更新的每条数据都必须发送到服务器。 兵马俑是最好的,当你改变pojo图中的细粒度的领域。 使用大型阵列并不能充分利用兵马俑的能力(这并不是说人们有时候不会这么用)。

如果你正在创建大量垃圾,那么Terracotta内存管理器和分布式垃圾收集器必须能够跟上这一点。 如果您的数据量超过了可用带宽,很难说没有尝试过。

如果您运行多个服务器并且数据由服务器分区或具有一定数量的参考位置,则您的应用程序将受益匪浅。 在这种情况下,您只需要堆中一个服务器分区的数据,其余部分不需要存入内存。 如果其他服务器出现故障,它当然会在必要时出现故障转移/可用性故障。 这意味着在分区数据的情况下,您不会向所有节点广播,只会将事务发送到服务器。

从数字的角度来看,可以对30GB的数据进行索引,因此不会接近任何硬性限制。

链接地址: http://www.djcxy.com/p/41951.html

上一篇: Can I use Terracotta to scale a RAM

下一篇: Best strategy to implement stackoverflow style badges system in asp.net mvc