【发布时间】:2012-08-03 04:00:28
【问题描述】:
我在一个 Java EE 应用程序中工作,它需要太多的内存服务器端应用程序级数据(即它不是用户级数据)。通过应用程序级数据,我的意思是所有用户的数据都是不变的,例如主要的数据。到目前为止,我们在一台具有 16 GB RAM 的 Windows 服务器上为 15-20 个并发用户使用 EHCache。我们将应用程序的堆大小指定为 8GB。
现在我们需要重新设计应用程序,使其能够支持超过 500 个并发用户。这将导致更多的内存数据需求。
我想在这种情况下获得您的观点,以便应用程序具有足够的可扩展性。
据我了解,以下解决方案会有所帮助 -
实现负载平衡,以便分配负载,但每个服务器上的内存数据仍然很高,因为它是应用程序级数据。虽然在一定程度上会有所帮助。
将此实现为无状态操作,而不是将数据保存在缓存中。但这会对性能产生影响。我在某处读到无状态是可扩展性的关键。我想避免这种情况,因为这需要太多的工作。
将 Terracotta 的 BigMemory 与 EHCache 结合使用。它基本上以一种特殊的方式将数据保存在磁盘上,即数据访问速度仍然很好。请注意,这不是免费产品,我们有这样的免费选项吗?
选择基于云的内存架构?对此不太了解。
任何建议都将受到高度赞赏。
【问题讨论】:
-
如何优化数据结构以提高内存效率?这样您就可以在内存中保留相同的数据但使用更少的内存。
-
数据量很大。我们需要根据应用程序要求将数据加载到第三方库的数据结构中。我认为我们在这个方向上做不了什么。
-
您是否进行了内存分析来验证这一点?
-
是的,我用 JProfiler 知道这一点。
标签: jakarta-ee cloud scalable ehcache-bigmemory