This library contains utilities that are useful for building distributed services, including:
- Exponential backoff for retries.
- A common cache API, implemented for Memcached and Redis.
- Hedging, sending extra duplicate requests to improve the chance that one succeeds.
- A common key-value API, implemented for Consul, Etcd and Memberlist.
- RPC middlewares, for metrics, logging, etc.
- A services model, to manage start-up and shut-down.
This library is used at scale in production at Grafana Labs. A number of packages were collected here from database-related projects:
This library aims to support at least the two latest Go minor releases.
If you're interested in contributing to this project:
- Start by reading the Contributing guide.