Files
2025-10-12 19:59:02 +04:00
..
2025-10-12 19:59:02 +04:00
2025-10-12 19:59:02 +04:00
2025-10-12 19:59:02 +04:00
2025-10-12 19:59:02 +04:00
2025-10-12 19:59:02 +04:00
2025-10-12 19:59:02 +04:00

Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами

Цель

изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.

Задачи

  1. Создать 2 микросервиса, реализующих CRUD на связанных сущностях.
  2. Реализовать механизм синхронного обмена сообщениями между микросервисами.
  3. Реализовать шлюз на основе прозрачного прокси-сервера nginx.
  4. Оформить отчёт в формате Markdown

Инструменты для выполнения:

  1. Docker
  2. Docker Compose
  3. Python
  4. Postman

Компоненты системы:

  1. Cartoon Service (cartoon_service/) - сервис для управления мультфильмами
  2. Producer Service (producer_service/) - сервис для управления режиссерами
  3. Nginx - обратный прокси и балансировщик нагрузки
  4. 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"
}

Особенности реализации:

  1. Микросервисная архитектура - каждый сервис независим и выполняет одну бизнес-функцию
  2. Взаимодействие через HTTP - сервисы общаются через REST API вызовы
  3. Контейнеризация - все компоненты запускаются в Docker контейнерах
  4. Автоматическая сборка - Docker Compose автоматически собирает и запускает все сервисы
  5. Единая точка входа - Nginx обеспечивает единый endpoint для всех сервисов

Запуск:

  1. На компьютере должны быть установлены Docker и Docker Compose
  2. Скачайте папку с репозитория
  3. Перейдите в директорию с yml
  4. Запустите с помощью команды: docker-compose up --build
  5. Откройте Postman

Что делает данная лабораторная работа:

Проект представляет собой микросервисное приложение для управления базой данных мультфильмов и их режиссеров. Система состоит из двух независимых сервисов, взаимодействующих через REST API, и обратного прокси на базе Nginx для маршрутизации запросов.

Видео:

https://rutube.ru/video/private/22f82905c7e737e2863bd9726cedf3e5/?p=FkA762T6Z6K0TDyHZ5Yaeg