Spring boot приложения высокой доступности - PullRequest
0 голосов
/ 25 мая 2018

У нас есть микросервис, который разработан с использованием пружинной загрузки.пара функций, которые он реализует:

1) Планировщик, который запускает загрузку файла с помощью webhdfs в указанное время и обрабатывает его, а после обработки данных он отправит электронное письмо пользователям с данными.резюме процесса.2) Чтение сообщений от kafka и после прочтения данных отправьте пользователям электронное письмо.

В настоящее время мы планируем сделать это приложение доступным как в Active-Active, так и в Active-пассивной настройке.Проблема, с которой мы сейчас сталкиваемся, заключается в том, что если оба экземпляра приложения работают, они оба попытаются загрузить файл / прочитать данные из kafka, обработать его и отправить электронные письма.Как этого можно избежать?Я хочу убедиться, что только один экземпляр запускает загрузку и обрабатывает его?

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

Спасибо

1 Ответ

0 голосов
/ 05 августа 2018

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

Вы также можете опубликовать DataProcessed -Event, который запускает EmailService, который отправляет соответствующий E-Mail.

...