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

..03-May-2022-

.github/H17-Feb-2020-

auth/H17-Feb-2020-

circuitbreaker/H17-Feb-2020-

cmd/kitgen/H17-Feb-2020-

endpoint/H17-Feb-2020-

examples/H17-Feb-2020-

log/H17-Feb-2020-

metrics/H17-Feb-2020-

ratelimit/H17-Feb-2020-

sd/H17-Feb-2020-

tracing/H17-Feb-2020-

transport/H17-Feb-2020-

util/H17-Feb-2020-

.build.ymlH A D17-Feb-2020633

.gitignoreH A D17-Feb-2020676

.travis.ymlH A D17-Feb-2020244

CONTRIBUTING.mdH A D17-Feb-2020839

LICENSEH A D17-Feb-20201.1 KiB

README.mdH A D17-Feb-20206.3 KiB

circle.ymlH A D17-Feb-2020829

coveralls.bashH A D17-Feb-2020581

docker-compose-integration.ymlH A D17-Feb-2020553

go.modH A D17-Feb-20202.6 KiB

go.sumH A D17-Feb-202046.7 KiB

lintH A D17-Feb-2020588

update_deps.bashH A D17-Feb-2020653

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## Sponsors
13
14- [OrderMyGear](https://www.ordermygear.com)
15
16Click on Sponsor, above, for more information on sponsorship.
17
18## Motivation
19
20Go has emerged as the language of the server, but it remains underrepresented
21in so-called "modern enterprise" companies like Facebook, Twitter, Netflix, and
22SoundCloud. Many of these organizations have turned to JVM-based stacks for
23their business logic, owing in large part to libraries and ecosystems that
24directly support their microservice architectures.
25
26To reach its next level of success, Go needs more than simple primitives and
27idioms. It needs a comprehensive toolkit, for coherent distributed programming
28in the large. Go kit is a set of packages and best practices, which provide a
29comprehensive, robust, and trustable way of building microservices for
30organizations of any size.
31
32For more details, see
33 [the website](https://gokit.io),
34 [the motivating blog post](http://peter.bourgon.org/go-kit/) and
35 [the video of the talk](https://www.youtube.com/watch?v=iFR_7AKkJFU).
36See also the
37 [Go kit talk at GopherCon 2015](https://www.youtube.com/watch?v=1AjaZi4QuGo).
38
39## Goals
40
41- Operate in a heterogeneous SOA — expect to interact with mostly non-Go-kit services
42- RPC as the primary messaging pattern
43- Pluggable serialization and transport — not just JSON over HTTP
44- Operate within existing infrastructures — no mandates for specific tools or technologies
45
46## Non-goals
47
48- Supporting messaging patterns other than RPC (for now) — e.g. MPI, pub/sub, CQRS, etc.
49- Re-implementing functionality that can be provided by adapting existing software
50- Having opinions on operational concerns: deployment, configuration, process supervision, orchestration, etc.
51
52## Contributing
53
54Please see [CONTRIBUTING.md](/CONTRIBUTING.md).
55Thank you, [contributors](https://github.com/go-kit/kit/graphs/contributors)!
56
57## Dependency management
58
59Go kit is [modules](https://github.com/golang/go/wiki/Modules) aware, and we
60encourage users to use the standard modules tooling. But Go kit is at major
61version 0, so it should be compatible with non-modules environments.
62
63## Related projects
64
65Projects with a ★ have had particular influence on Go kit's design (or vice-versa).
66
67### Service frameworks
68
69- [gizmo](https://github.com/nytimes/gizmo), a microservice toolkit from The New York Times ★
70- [go-micro](https://github.com/myodc/go-micro), a microservices client/server library ★
71- [gotalk](https://github.com/rsms/gotalk), async peer communication protocol &amp; library
72- [Kite](https://github.com/koding/kite), a micro-service framework
73- [gocircuit](https://github.com/gocircuit/circuit), dynamic cloud orchestration
74
75### Individual components
76
77- [afex/hystrix-go](https://github.com/afex/hystrix-go), client-side latency and fault tolerance library
78- [armon/go-metrics](https://github.com/armon/go-metrics), library for exporting performance and runtime metrics to external metrics systems
79- [codahale/lunk](https://github.com/codahale/lunk), structured logging in the style of Google's Dapper or Twitter's Zipkin
80- [eapache/go-resiliency](https://github.com/eapache/go-resiliency), resiliency patterns
81- [sasbury/logging](https://github.com/sasbury/logging), a tagged style of logging
82- [grpc/grpc-go](https://github.com/grpc/grpc-go), HTTP/2 based RPC
83- [inconshreveable/log15](https://github.com/inconshreveable/log15), simple, powerful logging for Go ★
84- [mailgun/vulcand](https://github.com/vulcand/vulcand), programmatic load balancer backed by etcd
85- [mattheath/phosphor](https://github.com/mondough/phosphor), distributed system tracing
86- [pivotal-golang/lager](https://github.com/pivotal-golang/lager), an opinionated logging library
87- [rubyist/circuitbreaker](https://github.com/rubyist/circuitbreaker), circuit breaker library
88- [sirupsen/logrus](https://github.com/sirupsen/logrus), structured, pluggable logging for Go ★
89- [sourcegraph/appdash](https://github.com/sourcegraph/appdash), application tracing system based on Google's Dapper
90- [spacemonkeygo/monitor](https://github.com/spacemonkeygo/monitor), data collection, monitoring, instrumentation, and Zipkin client library
91- [streadway/handy](https://github.com/streadway/handy), net/http handler filters
92- [vitess/rpcplus](https://godoc.org/github.com/youtube/vitess/go/rpcplus), package rpc + context.Context
93- [gdamore/mangos](https://github.com/gdamore/mangos), nanomsg implementation in pure Go
94
95### Web frameworks
96
97- [Gorilla](http://www.gorillatoolkit.org)
98- [Gin](https://gin-gonic.com/)
99- [Negroni](https://github.com/codegangsta/negroni)
100- [Goji](https://github.com/zenazn/goji)
101- [Martini](https://github.com/go-martini/martini)
102- [Beego](http://beego.me/)
103- [Revel](https://revel.github.io/) (considered [harmful](https://github.com/go-kit/kit/issues/350))
104- [GoBuffalo](https://gobuffalo.io/)
105
106## Additional reading
107
108- [Architecting for the Cloud](https://slideshare.net/stonse/architecting-for-the-cloud-using-netflixoss-codemash-workshop-29852233) — Netflix
109- [Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](http://research.google.com/pubs/pub36356.html) — Google
110- [Your Server as a Function](http://monkey.org/~marius/funsrv.pdf) (PDF) — Twitter
111
112