【问题标题】:HTML 5 WebSocket vs Ajax for numerous parallel connexions用于大量并行连接的 HTML 5 WebSocket 与 Ajax
【发布时间】:2014-08-14 14:41:41
【问题描述】:

关注这篇文章:In what situations would AJAX long/short polling be preferred over HTML5 WebSockets?

我考虑将 WebSockets 用于我的应用程序,我可以将其描述为类似于实时股票价格列表的东西。我已经读过,我可以通过这种方式严重降低前端服务器的费用。所以只是“思考”它。

目前: 每个客户端每 1 秒调用一次我的应用程序以获取 JSON 数据。这些数据对于所有用户都是相同的。 因此,每一秒,我都会调用一个新资源的正面清漆,例如,它将请求传递给生成新 JSON 的后端服务器(tomcat),然后以 1 秒的 TTL 将其传递给清漆。 并且在 1 秒内,每个请求数据的客户端都会从 Varnish 中获取数据。

这使得后端服务器对请求的收费相对较低,因为清漆占据了大部分。

我的问题: 如果现在我使用 WebSockets (WS)(对于这些请求,我可能会从 Tomcat 切换到 Nodejs),并且我的客户每秒都在请求新数据。

  • 我如何能够为“第一个”客户端生成数据,以及 在下一秒为所有其他客户提供服务?
  • 我怎样才能告诉 Varnish 这个数据的 TTL 为 1 秒?

提前感谢您的解释!

【问题讨论】:

  • 您的客户端不会请求数据,它们会在套接字上闲置,等待服务器发出数据,然后将数据实时推送到客户端。
  • 好的,那么很快,Nodejs 服务器会将新数据推送到清漆,而清漆会一次将所有新数据推送到客户端?即使我在网站上同时连接的人数超过 2000 人也没关系?
  • 我对 varnish 没有任何经验,所以我不知道它如何与 websockets 一起工作,尽管看起来 here 它应该完全符合您的要求。

标签: ajax node.js websocket varnish


【解决方案1】:

Varnish 不是 websockets 效率的重要组成部分。 varnish 唯一能做的就是通过管道将连接连接到后端(例如 node.js)。因此,Web 套接字的清漆中不会缓存任何内容。然而,在负载平衡方面,Varnish 仍然很有用。

每个客户/访问者在进入页面/站点时都会启动一个 websocket 连接。然后,每当您有新信息(股票价格更新?)时,您就会将该数据推送到每个打开的连接。所以刷新的时间间隔完全取决于你的 node.js 应用程序何时推送信息。

这意味着您不必比实际可用的新信息更频繁地推送信息,还可能意味着您可以提供准确的亚秒级信息而不会使服务器过载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多