Aggregator, Chain и Branch паттерны для микросервисов
В этой статье разберем 3 паттерна для коммуникации с микросервисами: Aggregator, chain и Branch. И в каких случаях их нужно использовать
Aggregator Pattern
На диаграмме выше показано как он работает. Существует один агрегатор, который собирает весь запрос из внешнего источника, передает его соответствующему микросервису и возвращает результат. Aggregator node здесь может выполнять любые необходимые манипуляции с данными, такие как добавление timestamp в заголовок запроса или добавление имени запрашивающего для целей регистрации и тд.
Chain Pattern
Chained шаблон имеет единую точку входа - сервис А, и другие сервисы зависят от сервиса А, и будут вызваны по цепочке.
Chain pattern не является бест решением для реализации коммуникации между микросервисами, поскольку он делает микросервисы зависимыми друг от друга.
Недостатки шаблона Chain
Недостаток этого шаблона заключается в том, что он работает медленно, так как запросы проходят через несколько сервисов.
Преимущества шаблона Chain
с другой стороны, положительная сторона этого шаблона заключается в том, что он безопасен благодаря одной точке входа. Микросервис, требующий высшей степени безопасности, можно оставить в конце цепочки, и таким образом можно ограничить к нему доступ.
Branch pattern
Branch pattern - это гибрид паттерна агрегатор и паттерна chain. В приведенном выше примере мы видим что сервис А служит агрегатором, и бранчуется на две ветки. Одна ветка содержит один автономный сервис B, а вторая ветвь содержит цепочку из сервисов (Сервис C и D). Этот паттерн будет полезен, когда большое монолитное приложение нужно раздробить на приложение с микросервисной архитектурой.