DAS_2024_1/bondarenko_max_lab_3/README.md
2024-11-25 02:23:32 +04:00

108 lines
3.6 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, Gateway и синхронный обмен между микросервисами
### ПИбд-42 || Бондаренко Максим
> Цель:
Изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.
> Задачи:
1. Создать 2 микросервиса, реализующих CRUD на связанных сущностях.
2. Реализовать механизм синхронного обмена сообщениями между микросервисами.
3. Реализовать шлюз на основе прозрачного прокси-сервера nginx.
> Описание
В данной лабораторной работе мы разворачиваем два микросервиса:
1. Authors - микросервис для управления авторами.
2. Books - микросервис для управления книгами.
> Файлы-конфигурации
1. docker-compose.yml
```
version: '3.7'
services:
authors:
build:
context: ./authors
ports:
- "3000:3000"
networks:
- app-network
books:
build:
context: ./books
ports:
- "3001:3001"
networks:
- app-network
depends_on:
- authors
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- authors
- books
networks:
- app-network
networks:
app-network:
driver: bridge
```
authors: Микросервис, отвечающий за управление данными об авторах, доступный на порту 3000.
books: Микросервис, отвечающий за управление данными о книгах, доступный на порту 3001. Зависит от микросервиса authors.
nginx: Сервис, работающий как обратный прокси-сервер, маршрутизирующий запросы к другим сервисам authors и books, слушая на порту 80.
2. nginx.conf
```
events {
worker_connections 1024;
}
http {
upstream authors_service {
server authors:3000;
}
upstream books_service {
server books:3001;
}
server {
listen 80;
location /authors {
proxy_pass http://authors_service;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /books {
proxy_pass http://books_service;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
```
location /authors: Все запросы, начинающиеся с /authors, будут проксироваться к микросервису authors, который работает на порту 3000.
location /books: Все запросы, начинающиеся с /books, будут проксироваться к микросервису books, который работает на порту 3001.
### Шаги для запуска:
Переходим в корневую папку всего решения и пишем команду:
```
docker-compose up --build
```
> Видео демонстрация работы
https://cloud.mail.ru/public/hLWs/iuqweU92e