• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

auth/H24-Jun-2019-

circuitbreaker/H24-Jun-2019-

cmd/kitgen/H24-Jun-2019-

endpoint/H24-Jun-2019-

examples/H24-Jun-2019-

log/H24-Jun-2019-

metrics/H24-Jun-2019-

ratelimit/H24-Jun-2019-

sd/H24-Jun-2019-

tracing/H24-Jun-2019-

transport/H24-Jun-2019-

util/H24-Jun-2019-

.build.ymlH A D24-Jun-2019520

.gitignoreH A D24-Jun-2019676

.travis.ymlH A D24-Jun-2019258

CONTRIBUTING.mdH A D24-Jun-2019839

LICENSEH A D24-Jun-20191.1 KiB

README.mdH A D24-Jun-20196.9 KiB

circle.ymlH A D24-Jun-2019723

coveralls.bashH A D24-Jun-2019581

docker-compose-integration.ymlH A D24-Jun-2019553

lintH A D24-Jun-2019588

update_deps.bashH A D24-Jun-2019634

README.md

1# Go kit<br/>[![Circle CI](https://circleci.com/gh/go-kit/kit.svg?style=shield)](https://circleci.com/gh/go-kit/kit) [![Travis CI](https://travis-ci.org/go-kit/kit.svg?branch=master)](https://travis-ci.org/go-kit/kit) [![builds.sr.ht status](https://builds.sr.ht/~peterbourgon/kit.svg)](https://builds.sr.ht/~peterbourgon/kit?) [![GoDoc](https://godoc.org/github.com/go-kit/kit?status.svg)](https://godoc.org/github.com/go-kit/kit) [![Coverage Status](https://coveralls.io/repos/go-kit/kit/badge.svg?branch=master&service=github)](https://coveralls.io/github/go-kit/kit?branch=master) [![Go Report Card](https://goreportcard.com/badge/go-kit/kit)](https://goreportcard.com/report/go-kit/kit) [![Sourcegraph](https://sourcegraph.com/github.com/go-kit/kit/-/badge.svg)](https://sourcegraph.com/github.com/go-kit/kit?badge)
2
3**Go kit** is a **programming toolkit** for building microservices
4(or elegant monoliths) in Go. We solve common problems in distributed
5systems and application architecture so you can focus on delivering
6business value.
7
8- Website: [gokit.io](https://gokit.io)
9- Mailing list: [go-kit](https://groups.google.com/forum/#!forum/go-kit)
10- Slack: [gophers.slack.com](https://gophers.slack.com) **#go-kit** ([invite](https://gophersinvite.herokuapp.com/))
11
12## Motivation
13
14Go has emerged as the language of the server, but it remains underrepresented
15in so-called "modern enterprise" companies like Facebook, Twitter, Netflix, and
16SoundCloud. Many of these organizations have turned to JVM-based stacks for
17their business logic, owing in large part to libraries and ecosystems that
18directly support their microservice architectures.
19
20To reach its next level of success, Go needs more than simple primitives and
21idioms. It needs a comprehensive toolkit, for coherent distributed programming
22in the large. Go kit is a set of packages and best practices, which provide a
23comprehensive, robust, and trustable way of building microservices for
24organizations of any size.
25
26For more details, see
27 [the website](https://gokit.io),
28 [the motivating blog post](http://peter.bourgon.org/go-kit/) and
29 [the video of the talk](https://www.youtube.com/watch?v=iFR_7AKkJFU).
30See also the
31 [Go kit talk at GopherCon 2015](https://www.youtube.com/watch?v=1AjaZi4QuGo).
32
33## Goals
34
35- Operate in a heterogeneous SOA — expect to interact with mostly non-Go-kit services
36- RPC as the primary messaging pattern
37- Pluggable serialization and transport — not just JSON over HTTP
38- Operate within existing infrastructures — no mandates for specific tools or technologies
39
40## Non-goals
41
42- Supporting messaging patterns other than RPC (for now) — e.g. MPI, pub/sub, CQRS, etc.
43- Re-implementing functionality that can be provided by adapting existing software
44- Having opinions on operational concerns: deployment, configuration, process supervision, orchestration, etc.
45
46## Contributing
47
48Please see [CONTRIBUTING.md](/CONTRIBUTING.md).
49Thank you, [contributors](https://github.com/go-kit/kit/graphs/contributors)!
50
51## Dependency management
52
53Go kit is a library, designed to be imported into a binary package. Vendoring
54is currently the best way for binary package authors to ensure reliable,
55reproducible builds. Therefore, we strongly recommend our users use vendoring
56for all of their dependencies, including Go kit. To avoid compatibility and
57availability issues, Go kit doesn't vendor its own dependencies, and
58doesn't recommend use of third-party import proxies.
59
60There are several tools which make vendoring easier, including
61 [dep](https://github.com/golang/dep),
62 [gb](http://getgb.io),
63 [glide](https://github.com/Masterminds/glide),
64 [gvt](https://github.com/FiloSottile/gvt), and
65 [govendor](https://github.com/kardianos/govendor).
66In addition, Go kit uses a variety of continuous integration providers
67 to find and fix compatibility problems as soon as they occur.
68
69## Related projects
70
71Projects with a ★ have had particular influence on Go kit's design (or vice-versa).
72
73### Service frameworks
74
75- [gizmo](https://github.com/nytimes/gizmo), a microservice toolkit from The New York Times ★
76- [go-micro](https://github.com/myodc/go-micro), a microservices client/server library ★
77- [gotalk](https://github.com/rsms/gotalk), async peer communication protocol &amp; library
78- [Kite](https://github.com/koding/kite), a micro-service framework
79- [gocircuit](https://github.com/gocircuit/circuit), dynamic cloud orchestration
80
81### Individual components
82
83- [afex/hystrix-go](https://github.com/afex/hystrix-go), client-side latency and fault tolerance library
84- [armon/go-metrics](https://github.com/armon/go-metrics), library for exporting performance and runtime metrics to external metrics systems
85- [codahale/lunk](https://github.com/codahale/lunk), structured logging in the style of Google's Dapper or Twitter's Zipkin
86- [eapache/go-resiliency](https://github.com/eapache/go-resiliency), resiliency patterns
87- [sasbury/logging](https://github.com/sasbury/logging), a tagged style of logging
88- [grpc/grpc-go](https://github.com/grpc/grpc-go), HTTP/2 based RPC
89- [inconshreveable/log15](https://github.com/inconshreveable/log15), simple, powerful logging for Go ★
90- [mailgun/vulcand](https://github.com/vulcand/vulcand), programmatic load balancer backed by etcd
91- [mattheath/phosphor](https://github.com/mondough/phosphor), distributed system tracing
92- [pivotal-golang/lager](https://github.com/pivotal-golang/lager), an opinionated logging library
93- [rubyist/circuitbreaker](https://github.com/rubyist/circuitbreaker), circuit breaker library
94- [sirupsen/logrus](https://github.com/sirupsen/logrus), structured, pluggable logging for Go ★
95- [sourcegraph/appdash](https://github.com/sourcegraph/appdash), application tracing system based on Google's Dapper
96- [spacemonkeygo/monitor](https://github.com/spacemonkeygo/monitor), data collection, monitoring, instrumentation, and Zipkin client library
97- [streadway/handy](https://github.com/streadway/handy), net/http handler filters
98- [vitess/rpcplus](https://godoc.org/github.com/youtube/vitess/go/rpcplus), package rpc + context.Context
99- [gdamore/mangos](https://github.com/gdamore/mangos), nanomsg implementation in pure Go
100
101### Web frameworks
102
103- [Gorilla](http://www.gorillatoolkit.org)
104- [Gin](https://gin-gonic.com/)
105- [Negroni](https://github.com/codegangsta/negroni)
106- [Goji](https://github.com/zenazn/goji)
107- [Martini](https://github.com/go-martini/martini)
108- [Beego](http://beego.me/)
109- [Revel](https://revel.github.io/) (considered [harmful](https://github.com/go-kit/kit/issues/350))
110- [GoBuffalo](https://gobuffalo.io/)
111
112## Additional reading
113
114- [Architecting for the Cloud](https://slideshare.net/stonse/architecting-for-the-cloud-using-netflixoss-codemash-workshop-29852233) — Netflix
115- [Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](http://research.google.com/pubs/pub36356.html) — Google
116- [Your Server as a Function](http://monkey.org/~marius/funsrv.pdf) (PDF) — Twitter
117
118---
119
120Development supported by [DigitalOcean](https://digitalocean.com).
121