Композиция программного обеспечения означает способ создания вашего программного продукта. По сути, это относится к диаграмме архитектуры программного обеспечения высокого уровня, где различные модули вашего программного обеспечения будут взаимодействовать для конкретных бизнес-целей. В этой главе мы узнаем о различных шаблонах компоновки программного обеспечения, широко используемых в организациях. В микросервисе мы разделяем каждую функцию на один процесс. Каждый из этих сервисов будет независимым и полным стеком по своей природе.
Функциональная декомпозиция играет важную роль в создании ваших микросервисов. Это обеспечивает гибкость, гибкость и масштабируемость для вашего приложения.
Агрегатор
Агрегаторный паттерн — это самый простой веб-паттерн, который можно реализовать при разработке микросервиса. В этом шаблоне композиции простой веб-модуль будет действовать как балансировщик нагрузки, что означает, что он будет вызывать различные службы в соответствии с требованиями. Ниже приведена схема, изображающая простое микросервисное веб-приложение с дизайном агрегатора. Как видно на следующем рисунке, «Агрегатор» отвечает за вызов различных сервисов один за другим. Если нам нужно применить какую-либо бизнес-логику к результатам службы A, B и C, то мы можем реализовать бизнес-логику в самом агрегаторе.
Агрегатор может быть снова выставлен как другой сервис для внешнего мира, который может потребляться другими при необходимости. При разработке веб-службы шаблонов агрегатора мы должны учитывать, что каждый из наших сервисов A, B и C должен иметь свои собственные уровни кэширования, и он должен иметь полный стек по своей природе.
Прокси шаблон
Шаблон прокси-микросервиса — это разновидность модели агрегатора. В этой модели мы будем использовать модуль прокси вместо модуля агрегации. Прокси-сервис может вызывать разные сервисы индивидуально.
В шаблоне Proxy мы можем создать один уровень дополнительной безопасности, предоставив слой прокси-сервера дампа. Этот слой действует аналогично интерфейсу.
Цепной узор
Как следует из названия, этот тип композиции будет следовать структуре цепочки. Здесь мы не будем использовать ничего между клиентом и уровнем сервиса. Вместо этого мы позволим клиенту обмениваться данными напрямую со службами, и все службы будут объединены в цепочку таким образом, что выходные данные одной службы будут входными данными следующей службы. На следующем рисунке показан типичный микросервисный шаблон.
Одним из основных недостатков этой архитектуры является то, что клиент будет заблокирован, пока весь процесс не будет завершен. Таким образом, настоятельно рекомендуется, чтобы длина цепи была как можно короче.
Микросервисная структура филиала
Микросервис филиала — это расширенная версия шаблона агрегатора и цепочки. В этом шаблоне проектирования клиент может напрямую общаться со службой. Кроме того, одна служба может одновременно взаимодействовать с несколькими службами. Ниже приводится схематическое представление Филиала Микросервис.
Паттерн микросервиса филиала позволяет разработчику динамически настраивать вызовы сервиса. Все сервисные вызовы будут происходить одновременно, а это означает, что сервис A может вызывать сервис B и C одновременно.
Шаблон общих ресурсов
Шаблон общих ресурсов на самом деле представляет собой конгломерат всех типов шаблонов, упомянутых ранее. В этом шаблоне клиент или балансировщик нагрузки будут напрямую связываться с каждым сервисом при необходимости. Это наиболее эффективный шаблон проектирования, которому широко следуют в большинстве организаций. Ниже приведено схематическое представление шаблона проектирования Shared Resource.