У меня есть вопрос для сообщества микросервисов. Я приведу пример из образовательной области, но применим к каждой архитектуре микросервисов.Подходы к микросервису Подходит
Скажем, у меня есть студент-служба и лицензирования услуг с бизнес-требованием, что число студентов ограничено лицензией. Поэтому каждый раз, когда студент создается, необходимо выполнить проверку лицензирования. Существует несколько типов лицензий, поэтому тип лицензии должен быть включен в операцию.
Мой вопрос в том, какой подход вы нашли лучше на практике:
- Построить композитный сервис, который вызывает 2 услуги
- сцепка студент-сервис для лицензирования службы, так что, когда createStudent называется студент-служба делает вызов лицензирования службы и только тогда, когда что завершает будет создан студенческий
- Используйте архитектуру на основе событий
РЕОР le talk о микросервисных архитектурах больше похож на график, чем на иерархию, и вариант 1 рода превращает это в иерархию, где вы получаете все более грубые композиты. Другие недостатки - это создает путаницу в отношении того, какие сервисные клиенты должны фактически использовать, и происходит некоторое дублирование, потому что API композитов должен включать все параметры, необходимые для вызова нижеперечисленных служб. У этого есть большое преимущество, потому что это дает вам естественное место, чтобы справиться с обработкой ошибок, хореографией и согласованностью дескрипторов.
Вариант 2 кажется, что он имеет свои недостатки тоже:
АНЯ лицензирование должна просачиваться в студенческой API, так что вы можете указать лицензионные ограничения.
это ставит много нагрузки на студент-сервис, поскольку он должен обрабатывать согласованность всех зависимых служб
- как все больше услуг должны реагировать, когда студент создал я мог видеть, граф зависимостей быстро выйдя из-под контроля, и служба должна будет справиться с этой сложностью в дополнение к той из ее собственной логики для управления учащимися.
Вариант 3 Будучи развязкой неба, я не думаю, что будет работать, потому что это все вызвано из пользовательского интерфейса, и люди на самом деле не используется для «пойти и сделать что-то еще, пока этот новый студент показывает вверх " подход.
Спасибо
Вопрос остается, если вы оставите звонок этого промежуточного программного обеспечения до ответственности вызывающего абонента. Я понимаю вариант 1 как способ принудительного вызова «create-student», подчиняющегося ограничениям лицензирования. Конечно, если доступны как лицензирование, так и услуги ученика, составная услуга не может фактически обеспечить что-либо. Вы видите, что создание студента и лицензирование полностью независимы - с учетом требований бизнеса, я этого не делаю, и, следовательно, вариант 2 имеет для меня большой смысл. Я думаю, это сводится к тому, подчеркиваете ли вы деловые требования или гибкость. – schaueho
@schaueho - Я думаю, вы могли бы просто заблокировать звонки в службу учеников из внешнего мира, если они не пройдут через промежуточное ПО лицензирования. – Pol