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

Как сделать так, чтобы два микросервиса обращались к одной и той же БД

Использование общей БД для микросервисов - антипаттерн, так как нарушает принцип слабой связанности. Однако если это временное решение или специфический кейс, можно:

  1. Общий доступ через JDBC
    Оба сервиса подключаются к одной БД с разными пользователями и правами:
java
// application.properties для Spring Boot
spring.datasource.url=jdbc:postgresql://localhost:5432/shared_db
spring.datasource.username=service1_user
spring.datasource.password=password123
  1. Синхронизация через транзакции
    Использовать @Transactional и настроить изоляцию:
java
@Transactional(isolation = Isolation.SERIALIZABLE)
public void updateSharedData() { ... }
  1. Event Sourcing (лучшая альтернатива)
    Каждый сервис имеет свою БД, а изменения синхронизируются через события (Kafka, RabbitMQ).

Лучшие практики:

  • Разделять схему БД на logical schemas
  • Использовать разные пользователей с ограниченными правами
  • В идеале - перейти к отдельным БД с синхронизацией через API/events
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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