Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами
Цель
изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.
Задачи
- Создать 2 микросервиса, реализующих CRUD на связанных сущностях.
- Реализовать механизм синхронного обмена сообщениями между микросервисами.
- Реализовать шлюз на основе прозрачного прокси-сервера nginx.
- Оформить отчёт в формате Markdown
Инструменты для выполнения:
- Docker
- Docker Compose
- Python
- Postman
Компоненты системы:
- Cartoon Service (cartoon_service/) - сервис для управления мультфильмами
- Producer Service (producer_service/) - сервис для управления режиссерами
- Nginx - обратный прокси и балансировщик нагрузки
- Docker Compose - оркестрация контейнеров
API Endpoints:
GET / - Получить все мультфильмы GET /{cartoon_uuid} - Получить мультфильм по ID GET /full - Получить все мультфильмы с информацией о продюсерах GET /full/{cartoon_uuid} - Получить мультфильм с информацией о продюсере GET /by-producer/{producer_uuid} - Получить мультфильмы по продюсеру POST / - Создать новый мультфильм PUT /{cartoon_uuid} - Обновить мультфильм DELETE /{cartoon_uuid} - Удалить мультфильм
GET / - Получить всех режиссеров GET /{producer_uuid} - Получить режиссера по ID GET /with-cartoons/{producer_uuid} - Получить режиссера с его мультфильмами GET /check/{producer_uuid} - Проверить существование режиссера POST / - Создать нового режиссера PUT /{producer_uuid} - Обновить режиссера DELETE /{producer_uuid} - Удалить режиссера
Пример POST http://localhost/cartoon_service/:
{
"title": "Король Лев",
"year": 1994,
"producer_id": "997aa4c5-ebb2-4794-ba81-e742f9f1fa30"
}
Особенности реализации:
- Микросервисная архитектура - каждый сервис независим и выполняет одну бизнес-функцию
- Взаимодействие через HTTP - сервисы общаются через REST API вызовы
- Контейнеризация - все компоненты запускаются в Docker контейнерах
- Автоматическая сборка - Docker Compose автоматически собирает и запускает все сервисы
- Единая точка входа - Nginx обеспечивает единый endpoint для всех сервисов
Запуск:
- На компьютере должны быть установлены Docker и Docker Compose
- Скачайте папку с репозитория
- Перейдите в директорию с yml
- Запустите с помощью команды:
docker-compose up --build - Откройте Postman
Что делает данная лабораторная работа:
Проект представляет собой микросервисное приложение для управления базой данных мультфильмов и их режиссеров. Система состоит из двух независимых сервисов, взаимодействующих через REST API, и обратного прокси на базе Nginx для маршрутизации запросов.
Видео:
https://rutube.ru/video/private/22f82905c7e737e2863bd9726cedf3e5/?p=FkA762T6Z6K0TDyHZ5Yaeg