Использование веб-сервисов Amazon в качестве движка Google App Engine

В настоящее время я использую Google App Engine в качестве моего мобильного приложения. У меня есть несколько задач, которые не могут быть выполнены в среде gae (в основном распознавание изображений с использованием opencv). Мое намерение состоит в том, чтобы сохранить Gae и использовать AWS для выполнения этих конкретных задач.

Есть ли простой способ передать конкретные задачи из gae в AWS? Например, очередь задач?

5 ответов

Вы можете либо перенести задачи из GAE в AWS, либо сделать так, чтобы ваши экземпляры AWS извлекали задачи из GAE.

Если вы продвигаете задачи из GAE в AWS, вы можете использовать URLFetch подтолкнуть ваши данные к вашим экземплярам AWS.

Если вы предпочитаете, чтобы ваши экземпляры AWS извлекали задачи из GAE, вы можете сделать так, чтобы ваши экземпляры GAE помещали свои задачи в GAE. Pull Queue и затем ваши экземпляры AWS используют Task Queue REST API сдавать в аренду задания из очереди.

В любом случае экземпляр AWS может сообщить результат обработки посредством простого запроса POST к вашим сервлетам GAE или путем вставки задач с помощью вышеупомянутого REST API который впоследствии будет сдан в аренду вашим инстанциям GAE. Последнее может быть полезно, если вы хотите контролировать скорость, с которой ваше приложение GAE обрабатывает результаты.

Отказ от ответственности: я ведущий разработчик проекта AppScale.

Один из способов, которым вы могли бы воспользоваться, - это AppScale - это реализация API App Engine с открытым исходным кодом, которая работает в Amazon EC2 (а также в других облаках). Так как это открытый исходный код, вы можете изменить AppServer, который мы поставляем с ним, чтобы использовать OpenCV. Это потребует от вас запуска приложения App Engine в AWS, но вы можете проявить творческий подход и получить копию своего приложения, работающую с Google, и отправлять запросы очереди задач на версию вашего приложения, работающую в AWS, только когда вам нужно использовать библиотеки OpenCV.

Конечно. В AppEngine есть очередь задач, в которую вы можете поместить свои задачи, просто внедрив DeferredTask. В этой задаче вы можете отправлять запросы в AWS.

Рассматривали ли вы вопрос об использовании сервиса amazon simple queue? http://aws.amazon.com/sqs/

Вы должны иметь возможность добавлять элементы в очередь из gae с помощью стандартного http-клинта.

Ваше намерение сохранить приложение в GAE и использовать AWS для выполнения нескольких задач, которые не могут быть выполнены в GAE, кажется мне правильным сценарием.

Я хотел бы поделиться несколькими идеями и некоторыми ресурсами, чтобы ответить на основную часть вашего вопроса:

Есть ли простой способ передать конкретные задачи из gae в AWS? Например, очередь задач?

Если вам нужны GAE и AWS для выполнения задачи все время (24/7), тогда ваше приложение будет определенно зависеть от расписания пакета или очереди задач. Они доступны по GAE.

Однако, если вы могли бы организовать выполнение задачи в GAE и выполнять ее с помощью AWG с интервалом (скажем, два раза в день по менее часа), вам может не понадобиться их использовать, если вы можете управлять GAE, чтобы поместить данные в Google Cloud Storage (GCS) как общедоступный.

Для этого сценария необходимо настроить экземпляр AWS EC2 для расписания включения / выключения и разрешить экземпляру запускать загрузочный сценарий, используя cloud-init для сбора данных через домен, который указывает на 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 подходят для расписания включения / выключения. Я рекомендую использовать EC2-VPC/EBS, если вы хотите настроить экземпляр AWS EC2 для расписания включения / выключения
  • Вам может не потребоваться настройка EC2, если вы можете настроить AWS Lambda для выполнения задачи без EC2. Это дешевле, задача, выполняемая два раза в день, обычно менее 3 секунд, с использованием памяти до 128 МБ, обычно стоит менее 0,0004 долларов США в месяц.
  • В результате реорганизации вашего приложения в GAE и настройки AWG на выполнение некоторых из задач это может в конечном итоге повысить ваши тарифы, пытаясь оптимизировать класс экземпляра в GAE.
Другие вопросы по тегам