使用亚马逊网络服务作为谷歌应用程序引擎后端

时间:2013-03-31 07:34:30

标签: google-app-engine amazon-web-services backend

我目前正在使用谷歌应用引擎作为我的移动应用程序后端。我有一些无法在gae环境中执行的任务(主要是使用opencv进行图像识别)。我的目的是保留gae并使用AWS来执行这些特定任务。

是否有一种简单的方法可以将特定任务从gae传递到AWS?例如。任务队列?

5 个答案:

答案 0 :(得分:2)

您可以将任务从GAE推送到AWS,也可以让您的AWS实例从GAE中提取任务。

如果您将任务从GAE推送到AWS,则可以使用URLFetch将数据推送到AWS实例。

如果您希望AWS实例从GAE中提取任务,您可以让GAE实例将其任务放入GAE Pull Queue,然后让您的AWS实例使用Task Queue REST API来租用任务从队列中。

在任何一种情况下,AWS实例都可以通过对GAE servlet的简单POST请求报告处理结果,或者通过上述REST API插入任务,稍后由GAE实例租用。如果您想控制GAE应用处理结果的速率,后者可能很有用。

答案 1 :(得分:1)

您是否考虑过使用亚马逊简单队列服务? http://aws.amazon.com/sqs/

您应该可以使用标准的http clint从gae向队列中添加项目。

答案 2 :(得分:1)

不确定。 AppEngine有一个Task Queue,您可以通过简单地实施DeferredTask来完成任务。在该任务中,您可以make requests到AWS。

答案 3 :(得分:1)

免责声明:我是AppScale项目的首席开发人员。

你可以采用AppScale的一种方式 - 它是在Amazon EC2(以及其他云)上运行的App Engine API的开源实现。由于它是开源的,您可以更改我们随附的AppServer以启用OpenCV。这需要您在AWS中运行您的App Engine应用程序,但您可以获得创意并拥有与Google一起运行的应用程序副本,并让它仅在您需要时将任务队列请求发送到在AWS中运行的应用程序版本使用OpenCV库。

答案 4 :(得分:0)

您打算在GAE中保留应用程序并使用AWS执行一些无法在GAE中执行的任务,这对我来说是一个正确的方案。

我想分享一些想法和一些资源来回答你问题的主要部分:

  

是否有一种简单的方法可以将特定任务从gae传递到AWS?例如。任务队列?

如果您需要GAE和AWS一直执行任务(24/7),那么您的应用程序肯定会依赖于批处理计划或任务队列。它们由GAE提供。

但是,如果您可以安排在GAE中执行任务并按间隔执行AWG(每天说两次,每次不到一小时),您可以不必使用它们,只要您可以将GAE管理到{ {3}}。

对于此方案,您需要为put the data on Google Cloud Storage (GCS) as public设置AWS EC2实例,并让实例On/Off Schedule通过指向GCS(c.storage.googleapis.com)的域收集数据,如这样:

wget -q --read-timeout=0.0 --waitretry=5 --tries=400 \\
--background http://your.domain.com/yourfile?q=XXX... 

通过从GCS获取数据,AWS可以执行这些特定任务。让它启动GAE来清理数据并将结果返回给GCS,以便随时用作移动应用程序后端。

以下是一些需要考虑的选项:

  • 您应该注意,并非所有EC2类型都适合开/关时间表。如果您要为开启/关闭计划设置AWS EC2实例
  • ,我建议使用to run a boot script using cloud-init
  • 如果您可以设置 EC2-VPC/EBS 来执行没有EC2的任务,则可能无需设置EC2。成本更低,每天运行两次,通常少于3秒,内存消耗高达128MB,通常成本低于0.0004美元/月
  • 作为在GAE中重新安排您的应用并将AWG设置为执行某些任务的结果,最终可能会提高您的结算率,尝试AWS Lambda