# gostore Cетевое хранилище на `golang`. ## Описание Хранилище `ключ-значение` работает поверх HTTP1.1/ip4. Хранилище включает несколько возможностей, разбитых по группам. - [анонимное хранилище](./doc/anonym.md); - именованное хранилище. ## Структура хранилища ```mermaid flowchart TD IService IStore IServHttp IServHttp --> IService IStore --> IService ``` ## Работа через прокси Запросы сделанными классическими специально, чтобы гарантировать правильную работу через прокси. ## Особенности работы Поддерживается `KeepAlive` с ожиданием следующего запроса 10 сек. Клиент должен присылать запросы не реже, чтобы поддерживать открытым соединение. Если необходима работа через внешние сети, то следует использовать `nginx proxy manager` со включенными сертификатами `LetsEncript` перед сервисом `gostore`. Максимальный размер значения ключа не может быть более 10 МБ (но можно настроить в коде). ## Пределы использования Примерные лимиты эффективности хранилища находится в следующих пределах - эффективный размер 20 ТБ (допустимо до 60 ТБ); - эффективное количество ключей 10Г (допустимо 20ТБ). Необходимо помнить, что в любом случае физические параметры оперативной памяти и дисковой подсистемы сильно ограничены. Планируется проектирование хранилища для работы в составе нескольких репликаций и множественное шардирование. ## Команды сборки ```make make # Сборка сервиса для прода make build # -//- make dev.run # Сборка с и запуск детектором гонок для отладки make mod # Обновление зависимостей ```