【发布时间】:2012-08-23 09:19:54
【问题描述】:
我们在 Google AppEngine 上运行 2 个应用程序,一个在 Python 中,一个在 Java 中。
Python 应用面向互联网,为浏览器用户提供服务,或通过我们的智能手机应用为 API 调用提供服务。
Python 应用程序通常与提供工作流引擎服务的 Java 应用程序进行通信。 Java 应用程序永远不会直接从 Internet 访问。这类似于面向服务的架构。
我们的 Java 应用配置了 1 个常驻实例。 但是,我们经常看到,当 Python 应用程序向 Java 应用程序发送请求(此时它什么都不做)时,会生成一个新的 Java 实例,而不是让常驻实例为请求提供服务。这样一来,发现的延迟最长可达 10 秒,而处理请求本身的时间不到 1 秒。
Google 是否有可能将一个 appengine 应用程序向另一个应用程序发出的请求视为一种后端工作负载,在这种情况下,吞吐量比延迟更重要?来自 Internet 的请求与来自 Google 内部的请求是否有不同的策略(延迟方法、cron ......也许应用引擎间的请求也属于这一类,这可能并不总是正确的)。
Google 建议我将 Java 应用程序作为 Python 应用程序的后端运行,实际上只有 1 个 Appengine 应用程序,而不是 2 个。
此线程中的一些信息: https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/8O7K3cFzBbY
关于如何强制 appengine 常驻实例处理传入请求,而不是生成和预热新实例,这可能对吞吐量有利,但对延迟不利?
【问题讨论】:
-
您是否按照此处的说明将
设置为 1? developers.google.com/appengine/docs/java/config/… -
目前我没有使用后端;相反,我使用 2 个不同的 appengine 应用程序。面向互联网的是Python;内部是Java。我肯定会尝试将 Java 功能设置为 Python 的后端,并且只有一个 appengine 应用程序。但问题是谷歌对于来自互联网的工作负载与来自谷歌数据中心内部的工作负载(例如另一个应用引擎应用程序、延迟、cron、预热......)是否有不同的延迟和吞吐量策略
-
我与 Google 工程师 Johan Euphrosine (proppy) 取得了联系,他明确要求我在 stackoverflow 上发布问题。原帖是groups.google.com/forum/?fromgroups=#!topic/google-appengine/…