Встречается на собеседованиях • сегодня

Какие знаешь проблемы при записи в БД двумя микросервисами

Проблемы при параллельной записи в БД двумя микросервисами:

  1. Race condition — оба сервиса могут прочитать одни данные, изменить и записать, потеряв изменения друг друга.
  2. Deadlock — взаимная блокировка, если сервисы блокируют одни и те же строки в разном порядке.
  3. Неконсистентность данных — если транзакции выполняются частично (например, один сервис обновил данные, а второй не смог).

Пример с race condition:

java
// Сервис 1: Читает баланс (100), добавляет 50
// Сервис 2: Читает баланс (100), отнимает 30
// Оба записывают: либо 150, либо 70 (потеря изменений)

Решение:

  • Использовать оптимистичные/пессимистичные блокировки.
  • Транзакции с изоляцией (например, REPEATABLE_READ).
  • Очереди событий (Kafka, RabbitMQ) для последовательной обработки.
  • Шардирование БД, чтобы сервисы работали с разными узлами.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы