我最近使用套接字io部署了一个node.js应用程序进行实时聊天,并且最初遇到套接字连接问题。我通过使用以下app.yaml config
解决了该问题runtime: nodejs
env: flex
manual_scaling:
instances: 1
network:
session_affinity: true
但是现在我的问题是这种规模如何?当然,单个实例将无法处理大量流量。我在没有手动缩放实例的情况下尝试了此操作,但仍然遇到套接字问题(可能是因为两个正在通话的人已连接到不同的实例?)。
如何在支持套接字连接的同时确保缩放正确?
答案 0 :(得分:0)
通常,对于您的应用程序,哪个实例将满足请求是不可知的。
但是,如果您的用例无法做到这一点,则可以在App Engine Flexible documentation中检查Session affinity
仅在尽力而为的情况下得到保证:
App Engine中的会话关联性是在最大努力的基础上实现的。开发应用程序时,应始终假定不保证会话亲和力。
...
由于无法保证会话相似性,因此您只能使用它来 利用socket.io和其他库的能力下降 如果连接断开,则返回HTTP长轮询。您 永远不要使用会话关联来构建有状态的应用程序。
您可能想探索的可能性是,allocate more resources仅用1个实例维护服务,而不是通过产生更多实例来水平扩展应用程序。