Ответ
Нет, базу данных нельзя «построить на микросервисах». Это архитектурные антиподы:
- Микросервисы — это стиль построения приложений как набора слабосвязанных, независимо развертываемых сервисов.
- База данных — это централизованное хранилище данных, часто используемое многими сервисами.
Однако в микросервисной архитектуре существуют ключевые паттерны для работы с данными:
| Паттерн | Цель | Пример использования |
|---|---|---|
| Database per Service | Изоляция данных, избежание жесткой связанности | Сервис Orders и сервис Payments имеют свои отдельные БД. |
| Saga | Управление распределенными транзакциями | Последовательность событий для создания заказа и списания платежа. |
| CQRS | Разделение моделей для чтения и записи | Отдельная оптимизированная БД-реплика для сложных отчетов. |
Пример (Database per Service):
// Order Service работает только со своей БД
@Service
public class OrderService {
@Autowired
private OrderRepository orderRepository; // Подключено к order_db
}
// Payment Service работает только со своей БД
@Service
public class PaymentService {
@Autowired
private PaymentRepository paymentRepository; // Подключено к payment_db
}
Вывод: База данных — это внешний по отношению к микросервисам ресурс. Архитектура определяет не её устройство, а способ организации доступа и владения данными между сервисами.