- Обзор
- Запуск приложения
- Структура проекта
- Запуск с использованием Docker
- Как это работает
- Дополнительные замечания
- Заключение
- Вклад в проект
- Лицензия
Проект "Распределенный калькулятор" представляет собой распределенную систему вычислений, которая позволяет выполнять математические выражения, распределяя задачи между несколькими вычислительными узлами.
-
Клонируйте репозиторий:
git clone https://github.com/verysaddrug/YandexMathCalc cd YandexMathCalc -
Запустите калькулятор:
go run cmd/calculator/main.go
-
Запустите оркестратор:
go run cmd/orchestrator/main.go
-
Откройте браузер и перейдите по ссылке http://localhost:8000/.
- cmd/calculator/main.go: Основной файл запуска сервиса калькулятора.
- cmd/orchestrator/main.go: Основной файл запуска оркестратора.
- handler/: Пакет для обработки HTTP-запросов.
- add-expression.go: Обработчик для добавления нового выражения.
- index.go: Обработчик для главной страницы.
- register.go: Обработчик для регистрации пользователей.
- auth.go: Обработчик для аутентификации пользователей.
- resource.go: Обработчик для управления вычислительными ресурсами.
- settings.go: Обработчик для настройки параметров.
- login.go: Обработчик для входа в систему.
- calculator/: Пакет, содержащий логику выполнения математических выражений.
- calculator.go: Основной файл с логикой калькулятора.
- proto/: Пакет, содержащий описание gRPC-протокола для взаимодействия между сервисами.
- calculator.proto: Описание gRPC сервиса калькулятора.
- calculator_grpc.pb.go: Сгенерированный gRPC код для калькулятора.
- calculator.pb.go: Сгенерированный код протокола для калькулятора.
- db/: Пакет для работы с базой данных.
- user.go: Логика работы с данными пользователей.
- setting.go: Логика работы с настройками.
- expression.go: Логика работы с выражениями.
- init.go: Инициализация базы данных.
- model/: Пакет с моделями данных.
- user.go: Модель пользователя.
- setting.go: Модель настройки.
- computing-resource.go: Модель вычислительного ресурса.
- expression.go: Модель выражения.
- templates/: HTML-шаблоны для веб-интерфейса.
- index.html: Шаблон главной страницы.
- register.html: Шаблон страницы регистрации.
- login.html: Шаблон страницы входа.
- settings.html: Шаблон страницы настроек.
- orchestrator/: Пакет с логикой оркестрации вычислительных задач.
- orchestrator.go: Основной файл с логикой оркестратора.
upd. играл с докером, обновил cfg, временно запускать через Goland go run cmd/calculator/main.go go run cmd/orchestrator/main.go
Проект включает в себя файл docker-compose.yml для облегчения развертывания с использованием Docker. Чтобы запустить приложение в Docker-контейнерах, выполните следующую команду в корневой директории проекта:
docker-compose up --buildЭто автоматически создаст и запустит необходимые контейнеры для калькулятора и оркестратора.
Вся система состоит из двух основных компонентов: калькулятора и оркестратора. Калькулятор отвечает за выполнение математических выражений, а оркестратор распределяет задачи между несколькими калькуляторами и управляет их состоянием. Пользователь отправляет запросы на выполнение выражений через веб-интерфейс, который затем обрабатывается оркестратором и передается на выполнение калькуляторам.
- Автоматическое обновление статуса: Автоматическое обновление статуса выражений реализовано. Страница будет автоматически обновляться каждые 10 секунд, чтобы показать актуальную информацию.
Проект "Распределенный калькулятор" предоставляет мощную систему для распределенных вычислений, позволяя эффективно распределять нагрузку между несколькими узлами. Следуя данной документации, вы сможете легко развернуть и запустить приложение, а также понять основные компоненты и их взаимодействие.
Для более детальной информации и примеров использования, пожалуйста, обратитесь к файлам исходного кода и README, которые включены в проект.
Мы приветствуем вклад в проект! Пожалуйста, следуйте следующим шагам, чтобы внести свой вклад:
- Форкните репозиторий.
- Создайте новую ветку (
git checkout -b feature-branch). - Внесите свои изменения.
- Зафиксируйте изменения (
git commit -m 'Добавить новую функцию'). - Отправьте изменения в удаленный репозиторий (
git push origin feature-branch). - Создайте новый Pull Request.
Этот проект лицензируется под лицензией MIT. Подробности см. в файле LICENSE.