【发布时间】:2021-06-23 23:23:50
【问题描述】:
我开发了一个网站,该网站托管两人棋盘游戏(西洋双陆棋),在进行比赛时,其他用户可以实时查看和观看比赛。实现游戏逻辑的 AWS lambda 通过 websocket 接受玩家的移动,存储在 DynamoDB 中并使用ApiGatewayManagement.postToConnection 通知玩家和观察者有关棋盘状态的变化。
要向观察者发送更新,我正在使用Promise.all 像这样...
await Promise.all(watchers.map(to => gateway.postToConnection({
ConnectionId: to,
Data: <message>
})))
这适用于少数观察者 (10-20)。我的问题是这将如何扩展到 100 甚至 1,000 名观察者。我无法完全确认这一点,但从 XRay 看来,使用上述方法,通知是分批进行的,四个并发 postToConnection 调用。
-
节点线程池是否在这种情况下发挥作用?我不是 100% 清楚节点是否会使用 NIO 并一次触发 100 个后端请求以获得 100 个通知,或者将它们放在其内部线程池中,这会将并发请求限制在少量。我在这里假设
postToConnection会导致对 AWS 服务的 http 调用,并且该调用可以使用 NIO。 -
拨打
postToConnection的速率是否受到限制?关于 API 网关的入站速率限制有很好的信息,但我找不到任何关于 出站 速率限制的信息
非常感谢。
【问题讨论】:
标签: node.js amazon-web-services websocket aws-api-gateway