微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有已知的计划包括 Google App Engine 柔性环境的定向路由或更合适的路径

如何解决是否有已知的计划包括 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 中启用会话关联时,您应该记住以下几点:

  1. 您的应用必须始终能够容忍会话关联中断。部分原因是 GAE 灵活实例已重新启动 weekly
  2. 启用会话关联还会限制 App Engine 负载平衡算法的有效性,并可能导致您的实例过载。
  3. 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?