Запустите запланированный метод Cron в Spring из одного модуля, если в Kubernetes существует несколько модулей - PullRequest
0 голосов
/ 23 октября 2019

Я перехожу с одного модуля (образ докера) на несколько модулей для моего приложения Spring в Kubernetes для обработки нагрузки. Но я столкнулся с проблемой, потому что в моем приложении есть метод планировщика cron, который запускается ежедневно в определенное время. Если я запускаю несколько модулей, они все запускаются одновременно, и в результате несколько записей сохраняются в моей БД, но я хочу, чтобы только один модуль выполнял эту функцию.

Я думал о создании Java UUID и сохранении его. в БД, так как функция начинает выполнение на каждом модуле. Затем в той же функции добавляем таймер сна, скажем, на 5 секунд и сравниваем uuid из БД в каждом модуле. Модуль, который обновил значение в базе данных последним, будет соответствовать этому значению и будет выполнять метод впереди.

Это хороший подход? Если нет, пожалуйста, дайте предложения, которые можно сделать, чтобы решить эту проблему.

1 Ответ

0 голосов
/ 24 октября 2019

Кроме того, вы можете перенести рабочую нагрузку на изолированный процесс, это будет полезно и чище, проверьте это https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/, это даст вам представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...