Хочется сделать подобие крона на ноде - чтобы задачи запускались по времени. Не хочу ставить выделенные вундервафли типа gearman, хочу простую встроенную библиотеку.
- Инстансов ноды может быть несколько, в т.ч. на разных железках.
- Есть редис под шареные локи.
- Сплитами сетки пренебрегаем.
- У части задач хотелось бы запуск именно по расписанию, а не через таймаут.
- Некоторые толстые задачи надо бить на чанки. Например, «перегенерить 10 миллионов постов»
Чего хотелось бы:
1. Чтобы задача не запускалась дважды в разных местах.
2. Чтобы при некотором разъезжании часов на серверах все не сходило с ума.
3. Чтобы если сервер с активной задачей выключили или задача упала, то очередь не вставала колом.
4. Чтобы логика у всех инстансов была равноправной
Мне НЕ нужна отказоустойчивость, нужна простота деплоя - чтобы можно было наскейлить докеровских образов, и они не передрались. Ну и чтобы некоторые таски вроде перестройки 10.000.000 постов можно было напилить на диапазоны и запустить параллельно. У меня очень простые задачи, не требующие особой надежности. Значение имеет только простота использования.
Пока получается такой лисапед:
1. Генерим по расписанию «ждущую» задачу, с таймстампом. По таймстампу можно проверять уникальность даже если часы разъехались.
2. Первый, кто успел, атомарно переносит задачу в редисе из сета «ждущих» в сет «выполняемых».
3. Если задача долго висит в «выполняемых», значит все подвисло/упало, и любой может вернуть ее в «ждущие»
Что пока не очень получается:
1. Не совсем понятно, что делать, если задача действительно выполняется долго (можно обновлять дополнительный timestamp, но если у серверов разъедутся часы, то кто-то может решить что наступил таймаут)
2. Непонятно, что делать, если задача выполняется так долго, что по расписанию пора запустить ее опять.
3. Может быть я чего-то не прочухал, и задачи начнут стягиваться на одну ноду, затупляя отклик вебсервера для части юзеров.
Подскажите, где можно почитать про подобные алгоритмы.
Возможно, я смешиваю в кучу понятие очереди задач и расписания. Надо и то и то. Например, чистить базу, пересчитывать статистику, отправлять письма с разным приоритетом (подтверждения с секретными ссылками, уведомления об обновлениях, рассылки), в фоновом режиме перегенерить содержимое постов.
Меня интересует именно логика, а не «поставь пакет ХХХ и пользуйся». И нужен именно вариант встроенного решения. Не вижу смысла возиться с выделенными серверами и микросервисами и мастер-процессами. У меня не те нагрузки, чтобы по-взрослому загоняться. Надо дешево и сердито - простота важнее.
Ответ на:
комментарий
от xpahos
Ответ на:
комментарий
от ziemin
Ответ на:
комментарий
от bj
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Vit
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум крон (2009)
- Форум Логика (2008)
- Форум Логика (2006)
- Форум Логи крона (2013)
- Форум «нечеткий» крон (2018)
- Форум Особенности крона... (2007)
- Форум Крон сломался (2006)
- Форум вопрос по крону (2018)
- Форум Не выполняется крон (2022)
- Форум вопрос по крону (2010)