Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами
Цель: изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.
Задачи:
Создать 2 микросервиса, реализующих CRUD на связанных сущностях. Реализовать механизм синхронного обмена сообщениями между микросервисами. Реализовать шлюз на основе прозрачного прокси-сервера nginx.
Создание микросервисов
1-й микросервис - video-conferencing-application для сущности Приложение для видеоконференций 2-й микросервис - webcam-application для сущности Веб-камера
Сущность: Веб-камера (Webcam):
- УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретную веб-камеру.
- Модель (Model): Название и модель веб-камеры.
- Разрешение (Resolution): Максимальное разрешение видеозаписи, которое может предоставить веб-камера.
- Интерфейс (Interface): Тип интерфейса для подключения к компьютеру (USB, Wi-Fi и т.д.).
- УИД видеоконференции (subscriptionUuid): УИД видеоконференции, с которым данная веб-камера связана. Это поле устанавливает связь "1-ко-многим" между веб-камерой и приложением.
- Информация о видеоконференции (subscriptionInfo): Информация полученная по subscriptionUuid и УИД видеоконференций о приложении для видеоконференции. Хранит в себе информацию об Приложение для видеоконференций (Name, Supported Platforms, Maximum Participants)
Сущность: Приложение для видеоконференций (Video Conferencing Application):
- УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретное приложение для видеоконференций.
- Название (Name): Название приложения для видеоконференций.
- Поддерживаемые платформы (Supported Platforms): Операционные системы и устройства, на которых работает приложение (Windows, macOS, iOS, Android и др.).
- Максимальное количество участников (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 } }


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








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