0

我在一个 Java EE 应用程序中工作,它需要太多的内存服务器端应用程序级数据(即它不是用户级数据)。通过应用程序级别的数据,我的意思是所有用户的数据都是不变的,例如主数据。到目前为止,我们在一台具有 16 GB RAM 的 Windows 服务器上为 15-20 个并发用户使用 EHCache。我们为我们的应用程序指定堆大小为 8GB。

现在我们需要重新设计应用程序,使其能够支持超过 500 个并发用户。这将导致更多的内存数据需求。

我想在这种情况下有你的观点,以便应用程序具有足够的可扩展性。

据我了解,以下解决方案可以提供帮助-

  1. 实施负载平衡,以便分配负载,但每个服务器上的内存数据仍然很高,因为它是应用程序级别的数据。虽然会在一定程度上有所帮助。

  2. 将此实现为无状态操作,而不是将数据保存在缓存中。但这会对性能产生影响。我在某处读到无状态是可扩展性的关键。我想避免这种情况,因为这需要太多的工作。

  3. 将 Terracotta 的 BigMemory 与 EHCache 结合使用。它基本上以一种特殊的方式将数据保存在磁盘上,即数据访问速度仍然不错。请注意,这不是免费产品,我们有这样的免费选项吗?

  4. 选择基于云的内存架构?对此不是很清楚。

任何建议将不胜感激。

4

1 回答 1

0

您可以使用 BigMemory Go,它可以让您在每台服务器上使用多达 32GB 的内存 (RAM)。因为,我认为您稍微误解了 BigMemory 是什么,它不会将数据存储在磁盘上(如果您希望进程可重新启动,它可以),但始终直接从内存中访问数据。

有关详细信息,请参阅http://terracotta.org/products/bigmemorygo 。但鉴于你低于 32GB 的限制,它对你来说都是免费的......

于 2012-11-22T19:04:23.617 回答