Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами
Цель: изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.
Задачи:
Создать 2 микросервиса, реализующих CRUD на связанных сущностях. Реализовать механизм синхронного обмена сообщениями между микросервисами. Реализовать шлюз на основе прозрачного прокси-сервера nginx.
Создание микросервисов
1-й микросервис - football-portal-application для сущности Портал футбольной тематики 2-й микросервис - football-team-application для сущности Футбольная команда
Сущность: Футбольная команда (Football Team):
УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретную футбольную команду. Название (Name): Название футбольной команды. Год основания (Established Year): Год основания команды. Дивизион (Division): Дивизион или лига, в которой участвует команда. Тренер (Coach): Имя и фамилия тренера команды. УИД портала (portalUuid): УИД портала футбольной тематики, с которым данная команда связана. Это поле устанавливает связь "1-ко-многим" между командой и порталом. Информация о портале (portalInfo): Информация полученная по portalUuid и УИД портала о портале футбольной тематики. Хранит в себе информацию о Портале футбольной тематики (Name, Supported Platforms, Maximum Users). Сущность: Портал футбольной тематики (Football Portal):
УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретный портал футбольной тематики. Название (Name): Название портала футбольной тематики. Поддерживаемые платформы (Supported Platforms): Операционные системы и устройства, на которых работает портал (Web, iOS, Android и др.). Максимальное количество пользователей (Maximum Users): Максимальное количество пользователей, которые могут зарегистрироваться на портале. Связь "1-ко-многим" между этими сущностями реализуется через поле "УИД портала" в сущности "Футбольная команда". Каждая команда связывается с конкретным порталом футбольной тематики через УИД этого портала, и это позволяет одному порталу быть связанным с несколькими футбольными командами.
Пример модели "Портал футбольной тематики" для списка: { "uuid": "8f036445-a5bd-401c-926e-840f9de795cd", "Name": "FootballHub", "Supported Platforms": "Web, iOS, Android", "Maximum Users": 100000 }
Пример модели "Портал футбольной тематики" для создания или изменения: { "uuid": "8f036445-a5bd-401c-926e-840f9de795cd", "Name": "FootballHub", "Supported Platforms": "Web, iOS, Android", "Maximum Users": 100000 }
Пример модели "Футбольная команда" для списка: { "uuid": "8740d660-b251-4272-8535-be7ec3748d4b", "Name": "FC Red Stars", "Established Year": 1990, "Division": "Premier League", "Coach": "John Smith", "portalUuid": "8f036445-a5bd-401c-926e-840f9de795cd" }
Пример модели "Футбольная команда" для создания или изменения: { "Name": "FC Red Stars", "Established Year": 1990, "Division": "Premier League", "Coach": "John Smith", "portalUuid": "8f036445-a5bd-401c-926e-840f9de795cd" }
Пример модели "Футбольная команда" для подробностей: { "uuid": "8740d660-b251-4272-8535-be7ec3748d4b", "Name": "FC Red Stars", "Established Year": 1990, "Division": "Premier League", "Coach": "John Smith", "portalUuid": "8f036445-a5bd-401c-926e-840f9de795cd", "portalInfo": { "Name": "FootballHub", "Supported Platforms": "Web, iOS, Android", "Maximum Users": 100000 } }


Докер файлы, докер компоус, nginx








Видео
Видео с разбором лабораторной работы - https://drive.google.com/file/d/1o9Ao5Q6TP-UcOb_49SbRwackclGTJOYD/view?usp=sharing