Предположим, у нас есть приложение Spring Boot, которое использует архитектуру микросервисов. Каждая из служб имеет свои собственные доменные модели, но каждая служба должна ссылаться на объект домена пользователя. Каков наилучший подход к решению этой проблемы? Было бы лучше, если бы у каждой службы был просто идентификатор пользователя, а затем, при необходимости, запрашивать у пользователя информацию о пользователе или лучше иметь библиотеку общего домена для всех микросервисов?
spring
microservices
user1176999
источник
источник
Ответы:
Если вы использовали микросервисы, чтобы получить выгоду от масштабируемости, слабой связи и простой независимой модификации каждого сервиса, вам следует придерживаться его в максимально возможной степени.
Общая архитектура
Я думаю, что лучшим подходом будет:
Дополнительное чтение:
Совместное использование кода
Теперь, если вы согласны с решением, описанным выше, у нас есть микросервис пользователя (модель инкапсуляции домена для пользователя), а все остальные сервисы являются потребителями того же микросервиса. Вопрос в том, чтобы узнать, хотите ли вы:
Я не буду занимать четкую позицию по этому вопросу, поскольку по этой теме обмена кодами ведутся противоречивые мнения, и я не думаю, что могу занять объективную позицию. Вот уже некоторые дополнительные чтения:
Мое собственное мнение по этому поводу состоит в том, что вы НЕ ДОЛЖНЫ ДЕЛИТЬСЯ кодом между пользователем-поставщиком и пользователями-потребителями, чтобы избежать тесной связи. Однако вы МОЖЕТЕ ОБМЕНИТЬ пользовательский код потребления между потребителями, если у вас есть надежное управление версиями. Этот подход будет иметь некоторые преимущества:
источник
Я бы избегал разделяемой библиотеки, если это вообще возможно. Спросите себя, какие свойства пользователя нужны каждому сервису? Часто существует основной домен, в котором будет жить большая часть поведения, окружающего пользователя, причем поддерживающим доменам часто нужен только идентификатор пользователя.
Если вашему сервису нужны какие-то другие сведения о пользователе, ознакомьтесь с некоторыми предложениями, касающимися действий в таких ситуациях.
источник