首页 文章

Google App Engine:后端与前端实例

提问于
浏览
11

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

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

我对GAE如何工作的理解是你上传你的应用程序(一个WAR文件),并根据需要扩展你的应用程序(或创建集群实例),直到它超出你定义的上限(用于预算等) .

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

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

再次,这一切都回到: how do you make sure the right code deploys and executes on the correct instance? 提前致谢!

1 回答

  • 5

    后端可以直接通过名称进行寻址,尽管它们与应用程序中的其他常规/前端实例共享相同的代码和servlet .

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

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

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

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

相关问题