Простейшее хранилище данных

SVI 180a3a7c29 SVI Добавление анонимного режима há 2 anos atrás
cmd 035b6504a9 SVI Добавление кода, пускачей há 2 anos atrás
doc 180a3a7c29 SVI Добавление анонимного режима há 2 anos atrás
internal 91822adc1f SVI Реализация методов веб-сервера há 2 anos atrás
pkg 578a27a87e SVI Разработка клиента há 2 anos atrás
vendor a7ed298ccf SVI Добавление вендоринга há 2 anos atrás
.gitignore 035b6504a9 SVI Добавление кода, пускачей há 2 anos atrás
LICENSE c7b7a4db5b Initial commit há 2 anos atrás
Makefile 91822adc1f SVI Реализация методов веб-сервера há 2 anos atrás
README.md 578a27a87e SVI Разработка клиента há 2 anos atrás
dev.sh 91822adc1f SVI Реализация методов веб-сервера há 2 anos atrás
go.mod a7ed298ccf SVI Добавление вендоринга há 2 anos atrás
go.sum a7ed298ccf SVI Добавление вендоринга há 2 anos atrás

README.md

gostore

Простейшее сетевое хранилище на golang.

Описание

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

Выполняет следующие запросы:

  • /put/:login/:pass/:key (POST, поместить в хранилище);
    • в памяти
    • на диске
  • /get/:login/:pass/:key (POST, извлечь из хранилища);
    • в памяти
    • на диске
  • /del/:login/:pass/:key (POST, удалить из хранилища).
    • в памяти
    • на диске
  • /find/:login/:pass/:key (POST, искать ключи по префиксу).
    • на диске
  • /time (GET, возвращает текущее время на сервере; для поддержания KeepAlive).
  • HTTP-клиент (Автоматически выполняет все запросы к хранилищу)

Покрытие кода тестами: 0.0%

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

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

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

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

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

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

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

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

Кеш в памяти

Для ускорения работы хранилище имеют копию кеш в памяти. Количество записей в кеше нстраивается через переменную окружения, например:

Задано 5_000 записей. При предельном размере записи 10 МБ общая память под кешем займёт 50 ГБ.

Задано 50_000, но известно ,что размер записи не превысит 500 байт. Тогда память под кешем максимум будет 25 Мб.

В любом случае, поиск по словарю в своей памяти всегда будет быстрее, чем поиск в БД на диске.

Переменные окружения

export STORE_USER="dev"
export STORE_USER_PASS="dev"
export STORE_HTTP_PORT="25000"
export STORE_MEM_RECORD_POOL_SIZE="5_000"

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

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