В контексте микросервисной архитектуры для одной бизнес-операции может потребоваться сотрудничество между двумя или более службами.
Предположим, у нас есть служба управления заказами и служба каталога продуктов.Когда пользователь добавляет элемент заказа в заказ, служба управления заказами сохраняет объект OrderItem, который среди прочих имеет следующие атрибуты:
OrderItem
+ Id
+ ProductId
+ ProductName
, чтобы служба управления заказами заполнила атрибут ProductNameу нас есть 4 варианта, как я вижу:
Вариант 1 : клиентское приложение задает ProductName, поскольку оно, вероятно, уже содержит данные из предыдущих запросов
Вариант 2 : если в архитектуре используется шлюз Api, шлюз будет отвечать за извлечение ProductName из службы каталога продуктов, а затем предоставит его службе управления заказами.
Вариант 3 : Служба управления заказами напрямую позвонит в Службу каталогов продуктов и запросит у него идентификатор продукта с указанием идентификатора продукта.
Вариант 4 : Служба управления заказами имеет дубликат (но неисчерпывающей) информации о продукте в своей собственной базе данных, и эти данные будут обновляться каждый раз, когдасобытие date получено от Службы каталога товаров.
Из этих 4 вариантов мне кажется, что n ° 1 не подходит, так как мы не можем доверять клиенту правильное и обновленное значение ProductName.
Мне бы хотелось узнать ваше мнение о том, что вы считаете лучшим выбором и почему!
Спасибо!
Риана