Использование веб-служб amazon в качестве задней части движка Google

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

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

Ответ 1

Вы можете либо нажимать задачи с 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 обрабатывает результаты.

Ответ 2

Рассматривали ли вы использование простой очереди амазонок? http://aws.amazon.com/sqs/

Вы должны иметь возможность добавлять элементы в очередь из gae, используя стандартный http clint.

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

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

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

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

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

Для этого сценария вам необходимо настроить AWS EC2 Instance для Вкл./Выкл. расписание и позволить экземпляру запустить boot script с помощью 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 Instance для включения/выключения расписания
  • Вам не нужно настраивать EC2, если вы можете установить AWS Lambda для выполнения задачи без EC2. Стоимость дешевле, задача, выполняемая два раза в день, как правило, менее 3 секунд с потреблением памяти до 128 МБ, как правило, стоит менее $0,0004 USD/month.
  • В результате преобразования вашего приложения в GAE и установки AWG для выполнения некоторых задач он может, наконец, повысить тарифы на выставление счетов, попытаться оптимизировать класс экземпляра в GAE.