
A selection of backend libraries
We write our backends on Go. We collect code metrics and balance requests for shards.
We encrypt RPC. We communicate with Monga. Over the year of development, a stack of proven libraries has formed.
For example, goagain saved a ton of time and debug after breaking off internal RPC clients.
We share a selection of libraries tested and working in battle.
github.com/rcrowley/goagain
Reboot an 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 code. Counters, Percentiles, Histograms. Beautifully dumps into the console and can add to Graphite and InfluxDB
github.com/golang/glog
Logger Port Google Log. You can set the verbosity level. More detail is filtered by module.
labix.org/mgo The
best driver for MongoDB.
github.com/camlistore/lock
Lock file. Writes a PID to a file. If there is a lock, it will check if the process has died. Supports FreeBSD, MacOS, ARM, and Plan9.
github.com/codegangsta/cli
Separates logic by flags and actions. Generates help and auto-completion for the console.
godoc.org/code.google.com/p/go-uuid/uuid
Generate a standard UUID.
godoc.org/code.google.com/p/go.crypto/ssh High-
grade SSH transport. Able to parse private and public key.
github.com/kr/pretty
Displays deep structures in readable form. A decent replacement for fmt.Printf ("% + v", ...)
github.com/google/btree
Google's B-Tree implementation.
github.com/bitly/dablooms
Bloom Filters with counters and deletion.
github.com/bitly/go-hostpool
Balancer of any feedback resources. We use for slow pessimization of lagging shards. At the heart of the Multi-armed Bandit algorithm.
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.
We encrypt RPC. We communicate with Monga. Over the year of development, a stack of proven libraries has formed.
For example, goagain saved a ton of time and debug after breaking off internal RPC clients.
We share a selection of libraries tested and working in battle.
github.com/rcrowley/goagain
Reboot an 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 code. Counters, Percentiles, Histograms. Beautifully dumps into the console and can add to Graphite and InfluxDB
github.com/golang/glog
Logger Port Google Log. You can set the verbosity level. More detail is filtered by module.
labix.org/mgo The
best driver for MongoDB.
github.com/camlistore/lock
Lock file. Writes a PID to a file. If there is a lock, it will check if the process has died. Supports FreeBSD, MacOS, ARM, and Plan9.
github.com/codegangsta/cli
Separates logic by flags and actions. Generates help and auto-completion for the console.
godoc.org/code.google.com/p/go-uuid/uuid
Generate a standard UUID.
godoc.org/code.google.com/p/go.crypto/ssh High-
grade SSH transport. Able to parse private and public key.
github.com/kr/pretty
Displays deep structures in readable form. A decent replacement for fmt.Printf ("% + v", ...)
github.com/google/btree
Google's B-Tree implementation.
github.com/bitly/dablooms
Bloom Filters with counters and deletion.
github.com/bitly/go-hostpool
Balancer of any feedback resources. We use for slow pessimization of lagging shards. At the heart of the Multi-armed Bandit algorithm.
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.