# Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами Цель: изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API. Задачи: Создать 2 микросервиса, реализующих CRUD на связанных сущностях. Реализовать механизм синхронного обмена сообщениями между микросервисами. Реализовать шлюз на основе прозрачного прокси-сервера nginx. # Создание микросервисов 1-й микросервис - video-conferencing-application для сущности Приложение для видеоконференций 2-й микросервис - webcam-application для сущности Веб-камера Сущность: Веб-камера (Webcam): 1. УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретную веб-камеру. 2. Модель (Model): Название и модель веб-камеры. 3. Разрешение (Resolution): Максимальное разрешение видеозаписи, которое может предоставить веб-камера. 4. Интерфейс (Interface): Тип интерфейса для подключения к компьютеру (USB, Wi-Fi и т.д.). 5. УИД видеоконференции (subscriptionUuid): УИД видеоконференции, с которым данная веб-камера связана. Это поле устанавливает связь "1-ко-многим" между веб-камерой и приложением. 6. Информация о видеоконференции (subscriptionInfo): Информация полученная по subscriptionUuid и УИД видеоконференций о приложении для видеоконференции. Хранит в себе информацию об Приложение для видеоконференций (Name, Supported Platforms, Maximum Participants) Сущность: Приложение для видеоконференций (Video Conferencing Application): 1. УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретное приложение для видеоконференций. 2. Название (Name): Название приложения для видеоконференций. 3. Поддерживаемые платформы (Supported Platforms): Операционные системы и устройства, на которых работает приложение (Windows, macOS, iOS, Android и др.). 4. Максимальное количество участников (Maximum Participants): Максимальное количество пользователей, которое может присоединиться к одной видеоконференции. Связь "1-ко-многим" между этими сущностями реализуется через поле "УИД приложения" в сущности "Веб-камера". Каждая веб-камера связывается с конкретным приложением для видеоконференций через УИД этого приложения, и это позволяет одному приложению быть связанным с несколькими веб-камерами. Вот примеры моделей для запросов: Пример модели "Приложение для видеоконференций" для списка: { "uuid": "8f036445-a5bd-401c-926e-840f9de795cd", "Name": "Zoom", "Supported Platforms": "Windows, macOS, iOS, Android", "Maximum Participants": 500 } Пример модели "Приложение для видеоконференций" для создания или изменения: { "uuid": "8f036445-a5bd-401c-926e-840f9de795cd", "Name": " Zoom", "Supported Platforms": "Windows, macOS, iOS, Android", "Maximum Participants": 500 } Пример модели "Веб-камера" для списка: { "uuid": "8740d660-b251-4272-8535-be7ec3748d4b", "Model": "Logitech C920", "Resolution": "Full HD 1080p", "Interface": "USB", "subscriptionUuid": "8f036445-a5bd-401c-926e-840f9de795cd" } Пример модели "Веб-камера" для создания или изменения: { "Model": " Logitech C920", "Resolution": " Full HD 1080p ", "Interface": "USB", "subscriptionUuid": "8f036445-a5bd-401c-926e-840f9de795cd" } Пример модели "Веб-камера" для подробностей: { "uuid": "8740d660-b251-4272-8535-be7ec3748d4b", "Model": "Logitech C920", "Resolution": "Full HD 1080p", "Interface": "USB", "subscriptionUuid": "8f036445-a5bd-401c-926e-840f9de795cd", "subscriptionInfo": { "Name": "Zoom", "Supported Platforms": "Windows, macOS, iOS, Android", "Maximum Participants": 500 } }

Структура 1-го микросервиса

Структура 2-го микросервиса

- контроллеры для обработка запросов, дтошки для выбора что изображать в сваггере при запросах, модели для сущностей, репозитории для отправки данных, сервисы для бизнес-логики # Докер файлы, докер компоус, nginx

Докер файл для 1-го микросервиса

Докер файл для 2-го микросервиса

-Использования базового образа, установка рабочий директории, копирования джар файла, экспорт порта, запуск приложения при запуске контейнера

Докер компоус

-создания общей сети для всех сервисов, запуск образов сервисов, проброска портов, копирования конфигурационного файла nginx и запуск этого сервиса после запуска других сервисов

nginx

установка количества одновремменных подключений, прослушка запросов по 80 порту, серверное имя локалхост, адрес для переадресации запросов по нему, url переадрусации

Скрин созданых образов

Скрин созданых контейнеров

Swagger 1-го микросервиса

Swagger 2-го микросервиса

# Видео Видео с разбором лабораторной работы - https://youtu.be/FpiSDxH4FSU