Микросервисная архитектура: добавление поля к существующему объекту во время выполнения - PullRequest
0 голосов
/ 17 марта 2020

В настоящее время мы разрабатываем мандатное облачное приложение на основе микросервиса для инфраструктуры открытой смены с кафкой в ​​середине. В настоящее время у нас около 10 микросервисов, которые выполняют уникальные задачи. У нас есть один микросервис, который используется для управления основными данными (сущностями) для приложения. Каждый микросервис потребляет только те данные по кафке, которые им действительно нужны, поэтому полного DTO нет.

Теперь мы подошли к моменту, когда у нас есть несколько запросов для пользовательских полей. Означает, что Клиент 1 хочет сохранить второй почтовый адрес для человека, а Клиент 2 хочет иметь второй идентификационный номер для человека.

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

Вопрос в том, как обрабатывать пользовательские поля сущностей в мире микросервисов и поддерживать стандарт обновляемым?

Подходы: 1) Добавить пустые поля в каждый объект 5 строковых полей, 5 полей int , 5 длинных полей, ... et c.

Это не очень хорошая вещь, потому что тогда мы теряем из-за большой производительности, потому что объекты больше, чем они должны быть. Мы обрабатываем около 500 000 объектов данных в день.

2) Добавляем центральный микросервис с парами ключ-значение и ссылкой на основной объект. Это может быть решением, но в настоящее время мы не знаем, как объединить эти данные с существующим DTO на лету. Например, запуск API REST masterdata для получения и фильтрации объектов. Там нам нужно сделать поля значений ключа частью поиска и фильтрации, не теряя много времени (мы могли бы использовать Apache Camel, но у нас не было времени копать глубже)

3) Добавление Объект с помощью SQL запроса в базе данных во время выполнения. Это не очень хороший подход и приведет к хаотической c базе данных, которая не будет обновляться в будущем

Знают ли некоторые из вас эту проблему и есть подсказка о том, что является лучшей практикой здесь?

Или есть какой-нибудь фундаментальный проект, который поможет нам с этим топи c?

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...