0 2K ru

Aggregator, Chain и Branch паттерны для микросервисов

Categories: 💻 Programming

В этой статье разберем 3 паттерна для коммуникации с микросервисами: Aggregator, chain и Branch. И в каких случаях их нужно использовать

Aggregator Pattern

aggregator pattern

На диаграмме выше показано как он работает. Существует один агрегатор, который собирает весь запрос из внешнего источника, передает его соответствующему микросервису и возвращает результат. Aggregator node здесь может выполнять любые необходимые манипуляции с данными, такие как добавление timestamp в заголовок запроса или добавление имени запрашивающего для целей регистрации и тд. 

Chain Pattern

chain pattern

Chained шаблон имеет единую точку входа - сервис А, и другие сервисы зависят от сервиса А, и будут вызваны по цепочке.

Chain pattern не является бест решением для реализации коммуникации между микросервисами, поскольку он делает микросервисы зависимыми друг от друга.

Недостатки шаблона Chain

Недостаток этого шаблона заключается в том, что он работает медленно, так как запросы проходят через несколько сервисов. 

Преимущества шаблона Chain

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

Branch pattern

branch pattern

Branch pattern - это гибрид паттерна агрегатор и паттерна chain. В приведенном выше примере мы видим что сервис А служит агрегатором, и бранчуется на две ветки. Одна ветка содержит один автономный сервис B, а вторая ветвь содержит цепочку из сервисов (Сервис C  и D). Этот  паттерн будет полезен, когда большое монолитное приложение нужно раздробить на приложение с микросервисной архитектурой.

Comments:

Please log in to be able add comments.