Подборка backend библиотек
Мы в RollBackup.ru пишем свои бекенды на Go. Собираем метрики кода и балансируем запросы на шарды.Шифруем RPC. Общаемся с Монгой. За год разработки сформировался стек проверенных библиотек.Например, goagain сэкономил кучу времени и дебага после обрыва клиентов внутреннего RPC.Делимся подборкой библиотек проверенных и работающих в бою.
github.com/rcrowley/goagainПерезагрузка HTTP или RPC сервера без отключения клиентов.
github.com/cheggaaa/pbКонсольный прогресс-бар. Поддерживает интерфейсы Reader и Writer.
github.com/rcrowley/go-metricsМетрики в коде. Счетчики, Перцентили, Гистограммы. Красиво дампит в консоль и умеет складывать в Graphite и InfluxDB
github.com/golang/glogЛоггер. Порт Google Log. Можно задавать уровень детализации (verbosity). Еще детализация фильтруется по модулям.
labix.org/mgoЛучший драйвер для MongoDB.
github.com/camlistore/lockЛок-файл. Пишет PID в файл. Если лок есть, проверит не умер-ли процесс. Поддерживает FreeBSD, MacOS, ARM и Plan9.
github.com/codegangsta/cliРазделяет логику по флагам и действиям. Генерирует справку и автодополнение для консоли.
godoc.org/code.google.com/p/go-uuid/uuidГенерация стандартного UUID.
godoc.org/code.google.com/p/go.crypto/sshПолноценный SSH транспорт. Умеет парсить приватный и публичный ключ.
github.com/kr/prettyВыводит глубокие структуры в читаемом виде. Достойная замена fmt.Printf (»%+v», …)
github.com/google/btreeРеализация B-Tree от Гугла.
github.com/bitly/dabloomsФильтры Блума со счетчиками и удалением.
github.com/bitly/go-hostpoolБалансер любых ресурсов с обратной связью. Мы используем для медленнего пессимизации лагающих шардов. В основе алгоритм Многорукого Бандита.
github.com/influxdb/influxdbБаза для метрик. Быстрее, чем Graphite. Поддерживает шардирование и выборки аля SQL.
godoc.org/code.google.com/p/go.crypto/naclПрикладное быстрое шифрование на элиптических кривых.