distributed-computing/tasks/gorbyleva-ai/lab_3/Readme.md

85 lines
2.7 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
Выполнила: студентка группы ИСЭбд-41 Горбылева Антонина Игоревна
Используемые сущности: Автомобили - Car, марка автомобиля - Marka, модель - model, номер - number
## REST API, Gateway и синхронный обмен между микросервисами
## Создание микросервисов
Команда `dotnet new web -n worker-1` создает в терминале микросервис worker-1.
Команда `dotnet new sln`для создания решения для проекта.
Команда `dotnet sln worker-1.sln add worker-1.csproj`связывает созданное решение с проектом.
Аналогично, создаем второй микросервис и добавляем оба проекта в единое решение.
Команда `dotnet run` для запуска проекта.
Скриншоты API приложений:
![](picture/sworker-1.png)
![](picture/sworker-2.png)
## Реализация синхронного обмена
Реализован механизм синхронного обмена сообщениями между микросервисами.
```cs
app.MapGet("/Company/", async () =>
{
var httpClient = new HttpClient();
var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8080/");
return secondWorkerResponse.ToArray();
})
.WithName("GetRequests")
.WithOpenApi();
```
## Реализация gateway при помощи nginx
Шлюз на основе прозрачного прокси-сервера nginx
```conf
server {
listen 8080;
listen [::]:8080;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /worker-1/ {
proxy_pass http://worker-1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Prefix /worker-1;
}
location /worker-2/ {
proxy_pass http://worker-2:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Prefix /worker-2;
}
}
```
Результаты, после вызова команды `docker-compose up`:
Docker Desktop:
![](picture/docker.png)
index.html на gateway-1:
![](picture/test.png)
worker-1:
![](picture/lworker-1.png)
worker-2:
![](picture/lworker-2.png)