DAS_2024_1/putilin_pavel_lab_3/README.md
2024-12-02 23:57:46 +04:00

67 lines
4.9 KiB
Markdown
Raw 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, шлюз и синхронный обмен данными между микросервисами
## Задание
### Цель:
Изучение принципов проектирования с использованием паттерна шлюза, организации синхронной передачи данных между микросервисами и применения архитектурного стиля RESTful API.
### Задачи:
1. Создание двух микросервисов, которые реализуют операции CRUD для связанных сущностей (клиенты и заказы).
2. Реализация механизма синхронного обмена данными между микросервисами.
3. Настройка шлюза на базе Nginx в качестве прозрачного прокси-сервера.
### Микросервисы:
1. **client_service** — сервис, который управляет информацией о клиентах.
2. **order_service** — сервис, который обрабатывает данные о заказах, сделанных клиентами.
### Связь между микросервисами:
- Один клиент может иметь множество заказов (соотношение 1 ко многим).
### Как запустить проект:
Для запуска приложения необходимо выполнить команду:
```
docker-compose up
```
## Описание работы:
Для разработки микросервисов был выбран язык программирования Python с использованием фреймворка Flask. Каждый микросервис реализует стандартные операции CRUD (создание, чтение, обновление и удаление) для своей сущности.
### Синхронный обмен данными
Микросервис `order_service` отправляет HTTP-запросы к сервису `client_service` для получения актуальной информации о клиентах, с которыми связаны заказы. Это позволяет создавать заказ с привязкой к конкретному клиенту, а также обновлять или удалять данные о заказах, учитывая информацию о клиенте.
### Docker Compose
Конфигурационный файл `docker-compose.yml` представляет собой многоконтейнерное приложение, которое включает в себя три сервиса: `client_service`, `order_service` и `nginx`. С помощью Docker Compose можно запустить все три контейнера одновременно. Функция маршрутизации запросов возложена на сервер Nginx, который управляет входящими запросами и перенаправляет их на соответствующие микросервисы.
### Nginx
Конфигурационный файл Nginx (`nginx.conf`) управляет маршрутизацией входящих запросов. В зависимости от URL, запросы перенаправляются на сервисы:
- Запросы по пути `/client/` перенаправляются на сервис `client_service`.
- Запросы по пути `/order/` перенаправляются на сервис `order_service`.
Пример конфигурации Nginx:
```nginx
server {
listen 80;
location /client/ {
proxy_pass http://client_service:8000;
}
location /order/ {
proxy_pass http://order_service:8001;
}
}
```
### Взаимодействие между микросервисами
- **client_service**: Этот сервис управляет информацией о клиентах (например, имя клиента, номер и дата выдачи).
- **order_service**: Этот сервис управляет заказами и хранит информацию о каждом заказе, связанном с конкретным клиентом. Заказы могут быть созданы, обновлены или удалены через RESTful API.
Когда заказ создается или обновляется в `order_service`, он отправляет запрос к `client_service`, чтобы получить подробную информацию о клиенте (например, имя, номер и дата выдачи абонемента).
### ВИДЕО
https://cloud.mail.ru/public/oG1Y/GXywRodDN