список хакеров: curl -i http://172.16.10.211:8010/json/hackers
данные хакера: curl -i http://172.16.10.211:8010/json/hacker?name='Alan Kay'
создает заданное кол-во записей в наборе хакеров: curl -i http://172.16.10.211:8010/new?count=1000
восстановление списка хакеров: curl -i http://172.16.10.211:8010/recover
Пояснение
Вместо стандартной библиотеки Redis ведения локального кэша go-redis/redis
использована go-cache в связи с отсутствием в первой функции сброса локального кеша при завершении приложения.
Ведение лога в Postgre или текстовом формате. Настройка в конфигурационном файле dev.yml. В данной реализации ротация текстовых вайлов не выполняется.
В случае завершения работы приложения, логи сбрасываются в текстовом виде (аварийный режим). При следующем старке приложения производится загрузка логов в Postgre.
Создана заглушка для rpc.Dial().
def.yml.file пример файла настроек с ведение лога в текстовом виде.
dev.yml.postgre пример файла настроек с выгрузкой с Postgre.
Что можно доработать?
подружить go-cache и dictpool для конструции вида map[string]interface{}.
настроить сбор метрики для type cache struct { ... items map[string]Item ... } в go-cache
настроить сбор метрики для &Logger { ... ChData: make(chan *dbLog, 1000) ... } в файле log.go
продумать сценарии поведения приложения, как вариант запуск нескольких сборщиков лога go logSave(cfg.Format) с отправкой в разные мониторы.