5000~用户的Java Web应用程序

Fla*_*yqi 9 java postgresql memcached hibernate vaadin

这是我生命中的第一次(希望不是最后一次)我将开发一个应用程序,它将需要处理大量用户(大约5000个)并管理大量数据.我开发了一个管理大量数据的应用程序(大约100~GB的数据,而不是许多标准),但用户数量相当低(大约50).

以下是我认为我将使用的工具/框架列表:

  • Vaadin UI框架
  • 过冬
  • PostgreSQL的
  • Apache Tomcat
  • Memcached(用于会话处理)

该应用程序将主要在公司网络内运行.它可能在服务器集群上运行,也可能不在服务器集群上运行,取决于公司希望花多少钱来使其生活更轻松.

那么您如何看待我的选择以及我应该注意什么?

干杯

ben*_*y23 9

与所有与性能/扩展相关的问题一样,答案是:它取决于.

您选择的框架中没有任何内容会导致我认为它无法处理大量用户.但是,如果不知道您想要做什么或者您的预算是多少,那么选择一项技术是不可能的.

为确保您的应用程序可扩展/执行,我会考虑以下事项:

  • 保持每个会话的内存占用率低.例如,HttpSession当你有50个时,缓存中的东西可能会起作用,但是当你有5000个会话时,这不是一个好主意.
  • 在数据库中尽可能多地工作以减少被移动的数据量(例如,当查看具有大量行的表时,确保您已经在数据库中完成了分页(而不是获得10,000行返回Tomcat然后选择前10个......)
  • 尽量减少必须保留在其中的状态HttpSession,这样可以更容易地进行聚类.

可能是最重要的建议:

  • 使用负载测试工具来模拟您的峰值负载以及更高的负载并进行测试. JMeter是我用于性能/负载测试的工具.

负载测试时,请确保:

  • 您实际上使用了5000个用户(因此HttpSession创建了5000 秒)并使用了大量数据(以避免始终访问缓存).

编辑:

我不认为5000用户不是那么多你可能会发现(性能方面)你只需要一台服务器(当然,这取决于服务器的大小和负载测试的结果,你可以考虑无论如何......用于处理负载的集群解决方案......(即不是你的5000个用户中的每一个都会同时按下按钮,你会发现早上的负载正在上升(即每个人都登录).


Pet*_*ski 5

您可能需要考虑Tomcat服务器前面的Apache HTTP服务器.Apache将提供:压缩,静态缓存,负载平衡和SSL.

  • 我建议一些更轻量级的东西,比如Nginx,他已经具备了Tomcat的强大功能. (2认同)