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

70 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Лабораторная работа №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/:
```json
{
"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