【问题标题】:Google cloud app engine presistant socket.io connection谷歌云应用引擎支持socket.io连接
【发布时间】:2020-07-29 16:08:23
【问题描述】:

我最近使用套接字 io 部署了一个 node.js 应用程序进行实时聊天,最初遇到了套接字连接问题。我通过使用以下 app.yaml 配置解决了这个问题

runtime: nodejs
env: flex
manual_scaling:
  instances: 1
network:
  session_affinity: true

但现在我的问题是这个规模如何?当然,单个实例将无法处理大量流量。我在没有手动缩放实例的情况下尝试了它,但仍然遇到套接字问题(可能是因为正在交谈的两个人连接到不同的实例?)。

如何确保在支持套接字连接的同时正确扩展?

【问题讨论】:

    标签: node.js google-app-engine socket.io


    【解决方案1】:

    一般来说,您的应用程序最好不知道哪个实例将为请求提供服务。

    但是,如果您的用例无法做到这一点,您可以在App Engine Flexible documentation 中查看Session affinity 仅在尽力而为的基础上得到保证:

    App Engine 中的会话亲和性是在尽力而为的基础上实现的。在开发您的应用时,您应该始终假设不能保证会话亲和性。

    ...

    由于不能保证会话亲和性,您应该只将其用于 利用 socket.io 和其他库的能力下降 在连接中断的情况下返回 HTTP 长轮询。你 永远不要使用会话亲和性来构建有状态的应用程序。

    您可能想要探索的一种可能性是allocate more resources,同时仅使用 1 个实例维护服务,而不是通过生成更多实例来水平扩展您的应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      相关资源
      最近更新 更多