Использование веб-служб 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.