谷歌云应用引擎可抵抗socket.io连接

时间:2020-04-16 12:09:54

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

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

解决了该问题
runtime: nodejs
env: flex
manual_scaling:
  instances: 1
network:
  session_affinity: true

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

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

1 个答案:

答案 0 :(得分:0)

通常,对于您的应用程序,哪个实例将满足请求是不可知的。

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

App Engine中的会话关联性是在最大努力的基础上实现的。开发应用程序时,应始终假定不保证会话亲和力。

...

由于无法保证会话相似性,因此您只能使用它来 利用socket.io和其他库的能力下降 如果连接断开,则返回HTTP长轮询。您 永远不要使用会话关联来构建有状态的应用程序。

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

相关问题