📜 ⬆️ ⬇️

A selection of backend libraries

We write our backends on Go. We collect code metrics and balance requests for shards.
Encrypt RPC. We communicate with Monga. Over the year, a stack of proven libraries has been formed.
For example, goagain saved a lot of time and debugging after a client’s internal RPC crash.

We share a selection of libraries, tested and working in battle.

github.com/rcrowley/goagain
Restart HTTP or RPC server without disconnecting clients.

github.com/cheggaaa/pb
Console progress bar. Supports Reader and Writer interfaces.
')
github.com/rcrowley/go-metrics
Metrics in the code. Counters, Percentiles, Histograms. Beautifully dumped into the console and can add to Graphite and InfluxDB

github.com/golang/glog
Logger Google Log Port. You can set the level of detail (verbosity). More detail is filtered by module.

labix.org/mgo
The best driver for MongoDB.

github.com/camlistore/lock
Lock file Writes PID to file. If there is a lock, check if the process is dead. Supports FreeBSD, MacOS, ARM and Plan9.

github.com/codegangsta/cli
Splits logic by flags and actions. Generates help and autocompletion for the console.

godoc.org/code.google.com/p/go-uuid/uuid
Generate standard UUID.

godoc.org/code.google.com/p/go.crypto/ssh
Full SSH transport. Able to parse private and public key.

github.com/kr/pretty
Displays deep structures in a readable form. A worthy replacement for fmt.Printf ("% + v", ...)

github.com/google/btree
The implementation of B-Tree from Google.

github.com/bitly/dablooms
Bloom filters with counters and removal.

github.com/bitly/go-hostpool
Balancer any resources with feedback. We use for slower pessimization of lag shards. The basis of the algorithm is the Multi-armed Bandit.

github.com/influxdb/influxdb
Base for metrics. Faster than Graphite. Supports sharding and fetching ala SQL.

godoc.org/code.google.com/p/go.crypto/nacl
Applied fast encryption on elliptic curves.

Source: https://habr.com/ru/post/232367/


All Articles