Jakarta ee 处理高内存可伸缩javaee应用程序

Jakarta ee 处理高内存可伸缩javaee应用程序,jakarta-ee,cloud,scalable,ehcache-bigmemory,Jakarta Ee,Cloud,Scalable,Ehcache Bigmemory,我在一个Java EE应用程序中工作,该应用程序需要太多内存中的服务器端应用程序级数据(即,它不是用户级数据)。对于应用程序级数据,我的意思是所有用户的数据都是恒定的,例如主数据。到目前为止,我们在一台具有16 GB RAM的Windows服务器上为15-20个并发用户使用EHCache。我们为应用程序指定了8GB的堆大小 现在我们需要重新设计应用程序,使其能够支持500多个并发用户。这将导致更多的内存数据需求 我希望在这样的场景中有您的观点,以便应用程序具有足够的可伸缩性 据我了解,以下解决方

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

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

我希望在这样的场景中有您的观点,以便应用程序具有足够的可伸缩性

据我了解,以下解决方案有助于-

  • 实现负载平衡,以便划分负载,但每个服务器上的内存中数据仍然很高,因为它是应用程序级数据。虽然这在某种程度上会有所帮助

  • 将其实现为无状态操作,而不是将数据保留在缓存中。但这将对性能产生影响。我在某个地方读到,无状态是可伸缩性的关键。我希望避免这种情况,因为这将需要太多的工作

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

  • 选择基于云的内存架构?对此不太了解


  • 如有任何建议,将不胜感激

    您可以使用BigMemory Go,这将使您能够在每台服务器上使用多达32GB的内存(RAM)。正如我所想,您可能有点误解了BigMemory是什么,它不在磁盘上存储数据(如果您希望进程可以重新启动,它可以),但数据总是直接从内存访问的


    有关更多详细信息,请参阅。但考虑到你低于32GB的限制,它对你来说都是免费的

    如何优化数据结构以提高内存效率?这样你可以在内存中保存相同的数据,但使用更少的内存。数据是巨大的。我们需要根据应用程序的要求在第三方库的数据结构中加载数据。我认为我们在这方面做不了什么。你做过内存分析来验证这一点吗?是的,我用JProfiler知道这一点。