我在Java EE应用程序中工作,它需要太多的内存服务器端应用程序级数据(即它不是用户级数据)。通过应用程序级数据,我的意思是数据对于所有用户是恒定的,例如主要的数据。到目前为止,我们在一台具有16 GB RAM的Windows服务器上为15-20个并发用户使用EHCache。我们为应用程序指定了堆大小为8GB。
现在我们需要重新设计应用程序,以便它能够支持超过500个并发用户。这将导致更多的内存数据需求。
我希望在这种情况下有你的观点,以便应用程序足够可扩展。
根据我的理解,以下解决方案可以提供帮助 -
实施负载均衡,以便分担负载,但每台服务器上的内存数据仍然很高,因为它是应用程序级数据。虽然它在某种程度上会有所帮助。
将其实现为无状态操作,而不是将数据保存在缓存中。但这会对性能产生影响。我在某处读到无状态是可扩展性的关键。我想避免这种情况,因为这需要太多的工作。
将Terracotta的BigMemory与EHCache结合使用。它基本上以特殊方式将数据保存在磁盘上,即数据访问速度仍然很好。请注意,这不是免费产品,我们有这样的免费选项吗?
选择基于云的内存架构?对此不太了解。
任何建议都将受到高度赞赏。
答案 0 :(得分:0)
您可以使用BigMemory Go,这样您就可以为每台服务器使用高达32GB的内存(RAM)。因为,我认为您稍微误解了BigMemory是什么,它不会将数据存储在磁盘上(如果您希望该进程可以重新启动它可以),但数据始终直接从内存访问。< / p>
有关详细信息,请参阅http://terracotta.org/products/bigmemorygo。但是考虑到你低于32GB的限制,它对你来说都是免费的......