1 Микросервисы - 1 База данных - DDD Подскажите пожалуйста - PullRequest
0 голосов
/ 24 октября 2019

Я ищу предложение с точки зрения дизайна.

Я знаю, что 1 микросервис - 1 база данных, это один из основополагающих принципов микросервиса.

Но у меня есть особая проблема:

1) Это проект IoT, в котором данные отправляют огромный объем данных, большую часть времени создает / обновляет / статус устройства.

2) Теперь пользователь отслеживает состояние устройства в пользовательском интерфейсе. а затем.

Конструкция I:

1) Разработан сервис (DeviceSubscribeService) модели подписки от KAFKA (устройство отправляет события в KAFKA). Он продолжает читать данные из KAFKA и вставляет в базу данных (DEVICE). Этот сервис используется только для вставок / обновлений.

2) Разработан еще один сервис (DeviceAPIService) - сервис RESTFul, который извлекает данные из той же базы данных (DEVICE). Этот сервис используется только для запросов к базе данных.

Является ли этот дизайн / подход правильным? Но по принципам микросервиса 1 сервис 1 БД сломан. Есть ли лучший способ сделать это?

Это хороший подход с точки зрения DDD. Я использую одну и ту же модель предметной области как в службах для вставки, так и в базе данных запросов.

Поддержание 2 баз данных для этих двух служб и репликация данных для поддержания их синхронизации, чтобы упростить работу, которую я хотел бы избежать. сложный процесс. Поверь мне, сейчас у меня все отлично.

Но я не слишком убежден с точки зрения дизайна. Я нарушаю какой-либо принцип.

Пожалуйста, предложите.

1 Ответ

0 голосов
/ 25 октября 2019

Использование общей базы данных для приложений с высокой скоростью чтения / записи может оказать негативное влияние на производительность вашего приложения.

CQRS архитектурный стиль, является хорошим выбором для этого насыщения. Но проблемы с производительностью почти всегда имеют несколько причин.

Если ваша текущая общая производительность удовлетворительная, нет необходимости использовать две отдельные базы данных.

...