70 lines
4.3 KiB
Markdown
70 lines
4.3 KiB
Markdown
# Лабораторная работа №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 |