2013-12-23 5 views
2

В настоящее время у меня есть экземпляр Windows на AWS, который запускает запланированную задачу Windows для выполнения сценария .net для обработки заказов дней.Запланированные задания с использованием AWS

Я недавно загрузил балансировку нескольких экземпляров, используя ELB, и все в порядке.

Вопрос в том, как настроить запланированные задачи, чтобы не все экземпляры запускали его. Я смотрел в OpsWorks, SimpleWorkFlow и т. Д. На AWS, но это настолько запутанно, что я должен сосредоточиться на этой относительно простой задаче.

Благодаря

+0

HI Raj, я просматривал ваш запрос, и в настоящее время я нахожусь на месте, у меня будет страница asp.net на amazon, и мне нужно называть это каждый час на амазонке для отправки электронных писем, как я могу продолжайте это? У меня есть открытый вопрос по этому вопросу, вы можете мне ответить. Благодарю. –

ответ

1

Вы можете быть в состоянии использовать Amazon SWF, но это кажется излишним/сложным.

Существует также Amazon Pipeline. Вероятно, это правильный ответ, но для настройки требуется немного чтения.

Простая задача - запланировать работу на всех ящиках и объявить победителем базу данных.

A) Вы можете заставить его «заблокировать» необработанные заказы в БД, а затем обработать их. Пока вы блокируете одну транзакцию, другие работники получат 0 заказов (или несколько новых заказов) для обработки.

B) Вы можете создать специальную таблицу с одной строкой, в которой задание будет заблокировано. Что-то вроде «update work_table set worker = 'mybox', work_start = now() где worker = ''".

Если вы хотите быть здоровым для умирающего рабочего, необходимо создать более сложные правила: рабочие могут повесить, пока работник не отметит свои рабочие места как выполненные. Если работа не будет завершена своевременно, они могут предположить, что первый работник умер и попытается украсть у него замок и запустить работу самостоятельно.

Если у вас нет базы данных, вы всегда можете использовать SDB (Simple DB) или DynamoDB. Попадание в БД несколько раз в день обязательно поместится в свободном ярусе.

Все это будет только 20-50 строк кода, если вы сделаете это правильно.

+0

Да, я смотрел в AWS Data Pipeline, но, похоже, мне не удалось просто выполнить скрипт/url. Похоже, что это больше связано с операциями с базами данных, резервными копиями и т. Д., И, похоже, очень мало онлайновых справок/учебников по этому вопросу. Маршрут базы данных, который вы предлагаете, является справедливым вариантом, и, вероятно, это будет путь вперед, если я не смогу найти больше помощи на AWS на следующей неделе! – Raj

1

Предполагая, что вам нужно запустить рабочий процесс один раз в день, вы можете сгенерировать идентификатор рабочего процесса, содержащий дату, и это обеспечит запуск только одного экземпляра.

Если вы хотите n экземпляров, то u может иметь родительский рабочий процесс (Singleton обеспечивается Id рабочего процесса), который порождает n дочерних рабочих процессов.

 Смежные вопросы

  • Нет связанных вопросов^_^