distributed-computing/tasks/mikhailov-ys/Lab_3/README.md
2024-01-08 17:33:27 +04:00

73 lines
2.3 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 .
## REST API, Gateway и синхронный обмен между микросервисами
## Создание микросервисов
1. С помощью команды `dotnet new web -n worker-1` в терминале создали первый микросервис.
2. Добавил решение `dotnet new sln`. Связал решение и проект командой `dotnet sln worker-1.sln add worker-1.csproj` повторил для 2-ого микросервиса.
3. Добавил библиотеку Swagger и OpenAi в проекты и запустил с помощью команды `dotnet run`.
Протестированный микросервис:
![](picture/1.png)
## Реализация синхронного обмена.
Реализован код, который вызывет сихронно данные из соседнего микросервиса.
```cs
app.MapGet("/Сities/", async () =>
{
var httpClient = new HttpClient();
var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8080/");
return secondWorkerResponse.ToArray();
})
.WithName("GetCountries")
.WithOpenApi();
```
## Реализация gateway при помощи nginx
Добавил nginx.conf:
```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/3.png)
index.html на gateway-1:
![](picture/4.png)
worker-1:
![](picture/5.png)
worker-2:
![](picture/6.png)