Skip to content

verysaddrug/YandexMathCalc

Repository files navigation

English Version

Техническая документация для проекта "Распределенный калькулятор"

Оглавление

Обзор

Проект "Распределенный калькулятор" представляет собой распределенную систему вычислений, которая позволяет выполнять математические выражения, распределяя задачи между несколькими вычислительными узлами.

Запуск приложения

Предварительные требования

Шаги

  1. Клонируйте репозиторий:

    git clone https://github.com/verysaddrug/YandexMathCalc
    cd YandexMathCalc
  2. Запустите калькулятор:

    go run cmd/calculator/main.go
  3. Запустите оркестратор:

    go run cmd/orchestrator/main.go
  4. Откройте браузер и перейдите по ссылке 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: Основной файл с логикой оркестратора.

Запуск с использованием Docker

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, которые включены в проект.

Вклад в проект

Мы приветствуем вклад в проект! Пожалуйста, следуйте следующим шагам, чтобы внести свой вклад:

  1. Форкните репозиторий.
  2. Создайте новую ветку (git checkout -b feature-branch).
  3. Внесите свои изменения.
  4. Зафиксируйте изменения (git commit -m 'Добавить новую функцию').
  5. Отправьте изменения в удаленный репозиторий (git push origin feature-branch).
  6. Создайте новый Pull Request.

Лицензия

Этот проект лицензируется под лицензией MIT. Подробности см. в файле LICENSE.

About

Final Project Yandex

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors