【问题标题】:Google App Engine: Backend vs Frontend InstancesGoogle App Engine:后端与前端实例
【发布时间】:2012-08-06 21:14:34
【问题描述】:

GAE 允许不同的限制,具体取决于代码是在前端实例上还是在后端实例上运行。例如,它允许您在后端启动长时间运行的后台线程,而如果代码在前端实例上运行,这将超时并引发运行时异常。

我很困惑如何设计一个应用程序,以便您知道只有某些代码在后端实例(而不是前端实例)上执行。

我对 GAE 工作原理的理解是您上传您的应用程序(一个 WAR 文件)并且它会根据需要或直到超过您定义的上限来扩展(创建集群实例)该应用程序(用于预算等)。

但除非我弄错了,否则它不允许您为同一个应用程序上传不同的模块(多个 WAR),因此在前端实例上运行 1 个 WAR,在后端实例上运行另一个 WAR (以保证您只在后端运行后台线程!)。

所以我的问题是:您如何开发、打包和部署 GAE 应用程序,以便始终在正确的实例上执行正确的代码?与此相切的问题是如何指定在特定后端运行不同的长时间运行的作业。例如,如果您有一个后台线程应该在午夜运行,但您有 10 个后端,这是否意味着您每晚都会在所有 10 个实例上启动相同的后台线程?显然,在某些情况下,您只希望 1 个后端运行作业,而其他实例则每个后端的行为应该相同。

再次,这一切都回到:您如何确保正确的代码在正确的实例上部署和执行?提前致谢!

【问题讨论】:

    标签: java google-app-engine backend


    【解决方案1】:

    后端可直接按名称寻址,尽管它们与您应用中的其他常规/前端实例共享相同的代码和 servlet。

    参考:https://developers.google.com/appengine/docs/java/backends/overview

    您可以将需要在后端运行的请求定向到 backendname.yourapp.appspot.com/someroute

    您还可以在 backends.xml 中配置多个后端(使用不同的名称)并使用相同的逻辑,将针对特定后端的请求发送到其对应的 uri。

    基本上相同的代码在所有实例上运行,但您可以设计路由以将特定请求定向到命名后端实例。

    【讨论】:

    • 通常后端和前端共享同一个项目,但不必如此。因此,您可以在后端和前端拥有同一个项目、不同项目甚至不同项目语言(java/python/go)的不同版本。不同版本的前端也是如此。
    猜你喜欢
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 2015-10-15
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多