# gostore

Cетевое хранилище на `golang`.

## Описание

Хранилище `ключ-значение` работает поверх HTTP1.1/ip4.

Хранилище включает несколько возможностей, разбитых по группам.

- [анонимное хранилище](./doc/anonym.md);

## Работа через прокси

Запросы сделанными классическими специально, чтобы гарантировать правильную работу через прокси.

## ообенности работы

Поддерживается `KeepAlive` с ожиданием следующего запроса 10 сек. Клиент должен
присылать запросы не реже, чтобы поддерживать открытым соединение.

Если необходима работа через внешние сети, то следует использовать `nginx proxy manager` со включенными сертификатами `LetsEncript` перед сервисом `gostore`.

Максимальный размер значения ключа не может быть более 10 МБ (но можно настроить в коде).

## Пределы использования

Примерные лимиты эффективности хранилища находится в следующих пределах

- эффективный размер 20 ТБ (допустимо до 60 ТБ);
- эффективное количество ключей 10Г (допустимо 20ТБ).

Необходимо помнить, что в любом случае физические параметры оперативной памяти и дисковой подсистемы сильно ограничены.

Планируется проектирование хранилища для работы в составе нескольких репликаций и
множественное шардирование.

## Команды сборки

```make
make         # Сборка сервиса для прода
make build   # -//-
make dev.run # Сборка с и запуск  детектором гонок для отладки
make mod     # Обновление зависимостей
```
