@@ -1,70 +0,0 @@
|
||||
# Лабораторная работа №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
|
||||
Reference in New Issue
Block a user