Предотвращение избыточных операций CRUD в мультиконтейнерном модуле - PullRequest
0 голосов
/ 07 мая 2019

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

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

Я понимаю, что наличие нескольких клонов в одном контейнере хорошо для предотвращения простоев / поддержания устойчивости приложения, но как вы должны бороться с побочными эффектами?

1 Ответ

0 голосов
/ 08 мая 2019

Это довольно открытый вопрос, поэтому однозначного ответа не будет, не зная точных особенностей вашей ситуации.

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

Вопрос, который я хотел бы задать себе, - подходит ли ваша архитектура и технологический стек для этой задачи. Не все действия должны выполняться в Кубернетесе.

Может ли Kubernetes CronJob быть более подходящим для этого?

Как насчет использования очереди сообщений ?

...