одну БД? Каждый экземпляр должен пойти в базу, взять строку, произвести действия и положить новую строку в соседнюю таблицу. Как два экземпляра синхронизировать между собой, чтобы они работали параллельно, но не выполняли одновременно работу над одной и той же строкой? Гуглением и размышлением, мне приходит в голову только отдельный микросервис отвечающий за взаимодействие с БД, но решение такое себе... Может есть лучше?
Раздавайте задачи сервисам.
select for update, и skip locked
Ну тобиш появляется второй сервис, контролящий работу экземпляров первого сервиса с БД. Как вариант, конечно, но гляжу в сторону блокировок пока, как нативный механизм.
Лучше юзать xact_lock он позволяет очень быстро получать параллельно данные. Я писал на нем запросы для получения анкет клиентов и куча операторов долбила БД дай строку, никто без данных не уходил если конечно список контактов не кончился
Обсуждают сегодня