distribCalc.rev2

module
v0.0.0-...-91ca432 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: MIT

README

О проекте

Данный проект это финальная задача в курсе от Яндекс по GoLang. В этом проекте представлена масштабируемая система распределительного вычислителя арифметических выражений на GoLang с графическим интерфейсом на React.

Используемые системы:

  • HTTP сервер работает на фреймворке Gin
  • База данных используется Postgres
  • Распределение задач реализовано через брокер сообщений RabbitMQ.
  • Для разворачивания системы используется Docker.
  • Live обновление на React реализовано через WebSocket.

Данный проект требует улучшений для использования в реальных задачах.

Стек технологий

GoLang React Postgres Rabbit

Как запустить проект?

[!NOTE] В проекте предусмотрен запуск для Production и для локальной разработки.

Просто используйте docker-compose.yml для полного разворачивания системы или docker-compose-dev.yml для локальной разработки.

Если у вас останутся вопросы по запуску проекта, пишите в Telegram: @solopenkovdmitriy

Перед установкой

Для легкого запуска системы советую использовать Docker

Если вы собираетесь выполнять локальную разработку, то для тестирования web интерфейса, написанного на React. Вам потребуется так же установить NodeJS

Для разработки BackEnd части проекта на GoLang потребуется установить GoLang

Базовые действия

  1. Скачайте репозиторий
git clone https://github.com/DmitriySolopenkov/distribCalc.rev2
  1. Создайте новый .env из .env.example и при необходимости отредактируйте его
cp .env.example .env
  1. Произведите те же операции для .env файла в папке frontend

[!TIP] В файле .env нам необходимо указать только один параметр REACT_APP_API_SERVER
Укажите адрес сервера из основого .env параметр SERVER_ADDR

cd frontend; cp .env.example .env

Запуск

  1. Запустите docker-compose из главной папки

Данный docker-compose запускает Postgres, RabbitMQ, React, Nginx и Оркестратор

docker-compose up

Настройка .env и параметры агента

В .env вам нужно отредактировать только эти поля, остальные поля нужны для продвинутой настройки

  • AGENT_TIMEOUT - максимальное время в секундах для ожидания агента, если агент будет неактивен спустя AGENT_TIMEOUT секунд, то он будет удален из списка
  • AGENT_PING - время в секундах для отправления сигнала ping от агента, если агент не отправит в течении этого времени сообщение о пинге, то его статус будет изменен на reconnected
  • AGENT_RESOLVE_TIME - максимальное время в секундах для решения одной задачи, если в течении этого времени не будет получен ответ, то задача пересоздастся
  • SERVER_ADDR - IP:PORT для запуска HTTP сервера
  • MODE - release или debug режим запуска Gin
  • POSTGRES_HOST & RABBIT_HOST - измените на localhost только при локальной разработке!

Параметры запуска агента

  • -agent string - имя агента для отображения в списке серверов
  • -ping int - время в секундах, раз в которое будет отправляться сообщение с пингов (данный параметр должен быть меньше или равен параметру AGENT_RESOLVE_TIME из .env)
  • -threads int - количество потоков (goroutine) для параллельного решения задач на одном агенте
  • -wait int - задержка решения задач для эмуляции выполнения долгих запросов
  • -debug - включить режим отладки
  • -queue string - имя очереди RabbitMQ с заданиями, при необходимости не менять
  • -server string - имя очереди RabbitMQ для ответов, при необходимости не менять
  • -url string - DSN строка для подключения RabbitMQ, при необходимости не менять

Использование

Для использования web интерфейса перейдите по адресу

Документация по HTTP серверу доступна по адресу SERVER_ADDR/swagger/index.html

Во вкладке СЕРВЕРА вы можете увидеть список всех запущенных агентов.

Directories

Path Synopsis
cmd
agent command
orchestrator command
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
internal
pkg
jwt

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL