Google App Engine:后端与前端实例

时间:2012-08-09 15:37:29

标签: java google-app-engine backend

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

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

了解GAE的工作方式是您上传应用程序(WAR文件)并根据需要扩展应用程序(创建群集实例)或直到超出您定义的上限(用于预算等)。

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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

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