如何解决是否有已知的计划包括 Google App Engine 柔性环境的定向路由或更合适的路径
有点投机, 我使用 GAE 灵活环境来运行 WebSocket nodejs 服务器,但注意到标准环境的目标路由功能在灵活环境中不可用,即使使用手动缩放也是如此。我需要能够将多个玩家引导到同一个实例。所以粘性会话不能解决我的问题。
此处说明:enter link description here 在评论中:
注意:在柔性环境中,不支持以实例为目标。无法直接向特定实例发送请求。
没有解释为什么或者这是否只是当前正在进行的工作。对我来说似乎很奇怪。
Google 是否有已知的 GAE 计划或路线图?
或者是否有更合适的方法不强迫我管理实际的虚拟机?
非常感谢。
解决方法
到目前为止,Google 没有像在标准环境中那样发布关于在 GAE 灵活环境中支持实例定位的任何官方声明。
但是,一个可能的解决方案是启用 session affinity,这应该允许 App Engine 将同一用户的请求发送到同一实例。为此,您需要将以下行添加到您的 app.yaml
文件中:
network:
session_affinity: true
不过,在 GAE 中启用会话关联时,您应该记住以下几点:
- 您的应用必须始终能够容忍会话关联中断。部分原因是 GAE 灵活实例已重新启动 weekly。
- 启用会话关联还会限制 App Engine 负载平衡算法的有效性,并可能导致您的实例过载。
- App Engine 中的会话亲缘关系是在尽力而为的基础上实现的,因此假设不保证会话亲缘关系总是更安全的。
还有,
因为不能保证会话亲和性,所以您应该只将它用于 利用socket.io等库的能力下降 在连接中断的情况下返回 HTTP 长轮询。你 永远不应该使用会话亲缘关系来构建有状态的应用程序。
有关更多详细信息,请查看 GCP documentation 上的会话关联。
除此之外,我认为 GAE flexible 不能为您的用例提供其他任何东西,使用 GCE VM 确实可能更合适。
,根据您的描述,来自 Google App Engine Standard 的 functionality 是您最有兴趣使用的:
如果您使用的是手动扩展的服务,您可以通过包含实例 ID 来定位并向实例发送请求。
您是否只能使用一个 App Engine?
如果我的应用程序需要自定义 CPU、更多 RAM、专门的第三方库或程序,我只会使用 GAE Flex。我大部分时间都使用 GAE 标准环境,因为 GAE flex 可以在我需要时提供补充。
例如,您可以实现一个利用每个 App Engine 特定部分的微服务。如果要针对特定实例,请使用 GAE 标准并将任何自定义处理路由到灵活环境。您可能会发现这是实现您的应用程序的更cost-effective 方法:
旨在免费运行或以极低的成本运行,您只需在需要时为所需内容付费。例如,您的应用程序可以在没有流量时扩展到 0 个实例。
根据您设计应用程序的方式,您可以使用 Global Load Balancer 来集成这些服务。然后,如果您使用 GAE 标准,您可以将您的播放器分配给 various back-end 选项或单个实例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。