добавляет таску в бд, в замен выдает уникальный id по которому можно отследить статус и сразу запускает таску в работу. Но, если приложение крашнится, то при запуске выберутся все таски которые не завершены и заново пойдут на запуск
Если раскидать копии приложения по нодам и поставить балансир, то после выключения всех нод и обратного включения, как правильно распределить незавершенные таски?
На ум приходит либо костыль костыльный - запустить одну копию которая заберет все себе, а после врубить остальные, либо написать отдельный микросервис который сам ходит в базу, собирает незавершенные таски и распределяет между копиями
Что еще можно придумать?)
с кубером так не работал глубоко, чтобы ответить, но там тоже должен быть номер ноды какой-то, и по сути нужно будет после поднятия всех нод чтобы одна из них распределила таски на другие ноды, основываясь на количестве нод
это если таски можно запускать на любой ноде
А по другому видимо никак Более конкретно: приложение формирует отчеты. Отчетов многое кол-во - прилетает запрос с некими данными и типом отчета (к примеру достать данные по ИНН компании), создается таска в бд со статусом "В процессе" - что то там делается, результат сохраняется в бд и таске присваивается статус "Завершено"
почему ноды могут умереть, не завершив задачу?
Они только под джаву?
Нет, не только. Они предоставляют апишки, которые можно дёргать из любого ЯП. для camunda есть реализация от них же, external task client для ноды. Я на проекте пользуюсь, в целом норм.
Обсуждают сегодня