distributed-computing/tasks/voronkova-es/lab_2/README.md
2023-11-09 22:12:07 +04:00

70 lines
4.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.

# Отчёт по лабораторной работе №2
Выполнил: студент гр. ИСЭбд-41 Воронкова Елизавета.
Варианты 4 4
Вариант программы 1: Формирует файл `/var/result/data.txt` из содержимого всех файлов каталога `/var/data` и записывает в него длины названий всех файлов.
Вариант программы 2: Ищет максимальное число из файла `/var/data/data.txt` и сохраняет количество максимальных чисел в `/var/result/result.txt`.
## Создание приложений
Создадим 2 приложения.
Был выбран язык C# и технология .NET 7.
Для создания обычных консольных приложений воспользуемся командами:
```sh
dotnet new console -o worker_1_var_4
dotnet new console -o worker_2_var_4
```
Согласно варианту программа 1 должна брать все файлы из папки `/var/data`, и записывать длины имен файлов в `/var/result/data.txt`.
[Исходный текст программы worker-1](worker_1_var_4/Program.cs)
Согласно варианту программа 2 должна брать строки из файла `/var/data/data.txt`, приводить их к числам и затем находить количество максимальных значений.
Затем результат вычислений копируется в файл `/var/result/result.txt`.
[Исходный текст программы worker-2](worker_2_var_4/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_var_4/Dockerfile), [программа 2](worker_1_var_4/Dockerfile)) с подробным описанием процесса сборки.
Был создан файл [docker-compose.yml](docker-compose.yml), в котором указан манифест для запуска распределённого приложения.
Дополнительно был создан файл [.dockerignore](.dockerignore) и дополнен [.gitignore](.gitignore), чтобы исключить для сборки и коммита всё лишнее.
## Сборка и запуск
В каталог `./data` помещены 5 файлов с длинами 16 и 19.
Данные в файле data.txt
16
16
19
19
19
Для запуска приложения необходимо ввести команду `docker compose up ---build`.
Результат запуска после сборки:
В результате в каталоге `./result` создался файл `result.txt` с содержимым `19`, что соответствует входным данным.
Изменение значений в файлах из каталога `./data` также изменяет содержимое в файлах из каталогов `./result-1` и `./result`.