Web applications 我应该使用pull(AJAX)还是push(WebSocket)来扩展大量用户?

Web applications 我应该使用pull(AJAX)还是push(WebSocket)来扩展大量用户?,web-applications,single-page-application,Web Applications,Single Page Application,我需要我的web应用扩展到10000个用户。我需要实现一个功能,通知用户某些事件,例如,您提交的作业已完成,您有新的优化建议等。我想到了两种实施策略: (pull)每分钟向服务器发送一个AJAX请求,以请求新的通知(如果有) (推送)使用WebSocket并在出现新通知时通知用户 推荐哪一个 有关WEB应用程序的详细信息: 我使用的后端语言是在Tomcat6上运行的Java(是的,我看到只有Tomcat8开始支持WebSocket,所以我可能最终不得不升级) 该应用程序是一个单页web应用程序。

我需要我的web应用扩展到10000个用户。我需要实现一个功能,通知用户某些事件,例如,您提交的作业已完成,您有新的优化建议等。我想到了两种实施策略:

(pull)每分钟向服务器发送一个AJAX请求,以请求新的通知(如果有)

(推送)使用WebSocket并在出现新通知时通知用户

推荐哪一个

有关WEB应用程序的详细信息:

我使用的后端语言是在Tomcat6上运行的Java(是的,我看到只有Tomcat8开始支持WebSocket,所以我可能最终不得不升级)

该应用程序是一个单页web应用程序。这个通知功能不需要是实时的,我只关心哪个选项更具可伸缩性


请求是通过AJAX处理的。

您向我们提供的关于您的应用程序的信息很少。可伸缩性取决于很多事情。推送将比每分钟请求ajax使用更多的资源,但每分钟请求ajax远远不是一个实时应用程序。我不知道您希望得到什么样的答复,但在大多数情况下,推进是一种更好的方法。@Imaqtpie这些“很多东西”是什么?您使用的语言、您的应用程序、服务器规格、服务器配置、您如何处理请求等。但主要是您的应用程序。它可以是轻量级的,或者非常重的,或者没有任何优化的编码。所以,你无法判断它是否能处理10000个零信息用户。做一些测试,收集一些信息并询问服务器故障。不过,我的另一个答复仍然有效。推是一种更好的使用练习。拉取非常古老,不是实时的,当您将每秒请求数从1分钟降低到1分钟时,会导致性能问题。@Imaqtpie我已经添加了详细信息。强制性的“WebSocket在IE8上不起作用,它仍然被广泛使用”注释。