Categorygithub.com/Conty111/SuperCalculator
repository
0.0.0-20240423095520-8bcf1616b44d
Repository: https://github.com/conty111/supercalculator.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# 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/ и установить его image

Running

Запустить можно локально, с помощью Docker Compose или комбинированно (kafka запускается в любом случае в docker compose).

  1. С помощью Docker Compose: запустится система с агентами из system_config_docker.json \
    1. Сначала установить jq команду: Windows, Linux or MacOS
    2. Запустить (остановить) систему: На Linux
    ./run.sh
    ./stop.sh
    
    На Windows (с помощью PowerShell)
    .\run.ps1
    .\stop.ps1
    
  2. Локально:
    1. Установить зависимости с помощью go mod tidy
    2. Запуск Kafka
    export AGENTS_COUNT=<макс. кол-во агентов, которое будет использоваться>
    docker compose up kafka -d
    
    1. Запуск оркестратора
    make run-orkestrator
    
    1. Запуск агента(-ов) (в <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 image