distributed-computing/tasks/lyamzina-ma/lab_2/README.md
2023-10-24 21:30:27 +04:00

86 lines
4.9 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.

# Отчёт по лабораторной работе №2
Выполнил: студентка гр. ИСЭбд-41, Лямзина Мария.
Вариант программы 1: 2. Формирует файл `/var/result/data.txt` из первых строк всех файлов каталога `/var/data`.
Вариант программы 2: 4. Ищет наименьшее число из файла `/var/data/data.txt` и сохраняет количество таких чисел из последовательности `/var/result/result.txt`.
## Создание приложений
Создадим 2 приложения.
Был выбран язык C# и технология .NET 5.
Для создания обычных консольных приложений воспользуемся командами:
```sh
dotnet new console -o worker-1
dotnet new console -o worker-2
```
Согласно варианту, программа 1 должна брать из `/var/data` по первой строчке из каждого файла, и в результате записать все в файл `/var/result/data.txt`.
[Исходный текст программы worker-1](worker-1/Program.cs)
Согласно варианту программа 2 искать в файле `/var/data/data.txt` наименьшее число и посчитать количетсво таких чисел.
Далее количество записывается в `/var/result/result.txt`.
[Исходный текст программы worker-2](worker-2/Program.cs)
Дополнительно создан файл [.gitignore](.gitignore) для того, чтобы не закоммитить в git ничего лишнего.
## Настройка окружения
Для связи двух приложений воспользуемся следующей схемой:
1. Каталог `./data` должен быть примонтирован в каталог `/var/data` для программы 1.
Оттуда будут браться исходные данные.
2. Каталог `./result-1` должен быть примонтирован в каталог `/var/result` для программы 2.
Туда будут складываться промежуточные данные.
3. Каталог `./result-1` также должен быть примонтирован в каталог `/var/data` для программы 2.
Оттуда будут браться промежуточные результаты.
4. Каталог `./result` должен быть примонтирован в каталог `/var/result` для программы 2.
Туда будут складывать результаты финальной обработки.
Для каждой программы были созданы файлы Dockerfile ([программа 1](worker-1/Dockerfile), [программа 2](worker-2/Dockerfile)) с подробным описанием процесса сборки.
Был создан файл [docker-compose.yml](docker-compose.yml), в котором указан манифест для запуска распределённого приложения.
## Сборка и запуск
1. В каталог `./data` помещены 2 файла с различной значениями.
![](photo/1.png)
![](photo/2.jpg)
На выходе программа должна записать 1 и 1.
![](photo/3.jpg)
2. Теперь, обрабатывая этот файл:
![](photo/1.jpg)
Программа найдет число 1 как минимальное, оно повторяется 2 раза значит в `/var/result/result.txt` выведется число 2 .
![](photo/4.jpg)
Для запуска приложения необходимо ввести команду `docker compose up --build`.
Результат запуска после сборки:
```
[+] Running 2/0
✔ Container lab_2-worker-1-1 Created 0.0s
✔ Container lab_2-worker-2-1 Created 0.0s
Attaching to lab_2-worker-1-1, lab_2-worker-2-1
lab_2-worker-1-1 | Файл успешно сформирован!
lab_2-worker-2-1 | Количество наименьших чисел сохранено в файле: /var/result/result.txt
lab_2-worker-1-1 exited with code 0
lab_2-worker-2-1 exited with code 0
```
В результате в каталоге `./result` создался файл `data.txt` с содержимым `1 1`, что соответствует входным данным.
В каталоге `./result` создался файл `result.txt` с содержимым `2`, что соответствует входным данным.