# Packages
# README
SuperCalculator
Table of contents
What is it?
SuperCalculator - это распределенный калькулятор или проект с микросервисной архитектурой, имитирующий систему орекстрации трафика/задач/сообщений с обеспечением целостности данных, надежности и октазоустойчивости.
Также реализован пользовательский функционал (регистрация и авторизация, разграничение доступа на основе ролей, просмотр своих задач, администрирование пользователей и т.п.)
P. S. front-end часть в проекте на данный отсутствует.
How to run
Requirements
Для запуска системы нужен Go v1.21.6 (и выше) и Docker v26.0.1 вместе с Docker Compose
Windows preinstalling
Если планируете запускать локально, то Go-sqlite3 требует gcc компилятор, которого по умолчанию нет в Windows. Для установки, можно перейти на сайт https://jmeubank.github.io/tdm-gcc/ и установить его
Running
Запустить можно локально, с помощью Docker Compose или комбинированно (kafka запускается в любом случае в docker compose).
- С помощью Docker Compose: запустится система с агентами из system_config_docker.json \
- Сначала установить jq команду: Windows, Linux or MacOS
- Запустить (остановить) систему: На Linux
На Windows (с помощью PowerShell)./run.sh ./stop.sh
.\run.ps1 .\stop.ps1
- Локально:
- Установить зависимости с помощью
go mod tidy
- Запуск Kafka
export AGENTS_COUNT=<макс. кол-во агентов, которое будет использоваться> docker compose up kafka -d
- Запуск оркестратора
make run-orkestrator
- Запуск агента(-ов) (в <id_agenta> подставлять индекс агента из system_config.json)
go run -v ./back-end/agent/cmd/app/main.go serve <id_агента>
- Установить зависимости с помощью
Project structure
├── back-end
│ ├── agent - исходники агента
│ │ ├── cmd - точка входа
│ │ ├── internal
│ │ │ ├── agent_errors - кастомные внутренние ошибки
│ │ │ ├── app - инициализация и сборка приложения
│ │ │ ├── config - извлечение конфигурации
│ │ │ ├── services - слой сервиса
│ │ │ └── transport - транспортный слой (htpp, kafka, grpc)
│ ├── db - папка с файлами для БД
│ ├── models - модели сущностей приложения (сообщения, модели БД)
│ └── orkestrator - исходники для оркестратора
│ ├── cmd - точка входа
│ ├── internal
│ │ ├── app - инициализация и сборка приложения
│ │ ├── clierrs - кастомные клиентские ошибки
│ │ ├── config - извлечение конфигурации
│ │ ├── interfaces - интерфейсы для соединения слоев
│ │ ├── repository - слой данных (хранилища)
│ │ ├── services - слой сервиса и бизнес логики
│ │ └── transport - транспортный слой (htpp, kafka, grpc)
└── front-end - здесь должен был быть рабочий фронт((
Поставьте звездочку :3