Мои действия перед этим вопросом: 1) Я прочитал микросервисы io 2) Я прочитал о шаблоне совместно используемой базы данных, шаблоне базы данных по сервисам, по схеме, по таблице и т. Д. c ...
Проблема. У меня есть сервис, который выполняет некоторую работу по разделению задач и объединению подзадач. Задача -> несколько подзадач -> объединение. Я использую Kafka для управления потоком задач / подзадач.
Он сохраняет состояние подзадач в БД. Когда все подзадачи готовы, он берет все значения подзадач из redis, объединяет их в результат и отправляет в другую службу.
Если я запускаю еще один экземпляр этой службы, то все два экземпляра службы будут наблюдать один дБ. И они могут неправильно понять состояние подзадач, если попытаются справиться с ситуацией, когда: A1 получает последнюю подзадачу A2 получает одну подзадачу перед последней подзадачей Они оба пытаются проверить количество готовых подзадач Они оба видят все подзадачи готовыми или еще одна подзадача не готова.
Я знаю, что могу решить проблему, используя уровень изоляции REAPITABLE_READ.
Мой вопрос. Как справиться с такой ситуацией? Это нормально, одна база данных для нескольких экземпляров одной и той же службы, или мне нужно использовать другой шаблон архитектуры?