MCPcopy
hub / github.com/go-kit/kit

github.com/go-kit/kit @v0.13.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.13.0 ↗
1,673 symbols 5,278 edges 256 files 925 documented · 55%
README

Go kit

GitHub Workflow Status GoDev codecov Go Report Card Sourcegraph

Go kit is a programming toolkit for building microservices (or elegant monoliths) in Go. We solve common problems in distributed systems and application architecture so you can focus on delivering business value.

Sponsors

Click here or Sponsor, above, for more information on sponsorship.

Motivation

Go has emerged as the language of the server, but it remains underrepresented in so-called "modern enterprise" companies like Facebook, Twitter, Netflix, and SoundCloud. Many of these organizations have turned to JVM-based stacks for their business logic, owing in large part to libraries and ecosystems that directly support their microservice architectures.

To reach its next level of success, Go needs more than simple primitives and idioms. It needs a comprehensive toolkit, for coherent distributed programming in the large. Go kit is a set of packages and best practices, which provide a comprehensive, robust, and trustable way of building microservices for organizations of any size.

For more details, see the website, the motivating blog post and the video of the talk. See also the Go kit talk at GopherCon 2015.

Goals

  • Operate in a heterogeneous SOA — expect to interact with mostly non-Go-kit services
  • RPC as the primary messaging pattern
  • Pluggable serialization and transport — not just JSON over HTTP
  • Operate within existing infrastructures — no mandates for specific tools or technologies

Non-goals

  • Supporting messaging patterns other than RPC (for now) — e.g. MPI, pub/sub, CQRS, etc.
  • Re-implementing functionality that can be provided by adapting existing software
  • Having opinions on operational concerns: deployment, configuration, process supervision, orchestration, etc.

Contributing

Please see CONTRIBUTING.md. Thank you, contributors!

Dependency management

Go kit is modules aware, and we encourage users to use the standard modules tooling. But Go kit is at major version 0, so it should be compatible with non-modules environments.

Code generators

There are several third-party tools that can generate Go kit code based on different starting assumptions.

Related projects

Projects with a ★ have had particular influence on Go kit's design (or vice-versa).

Service frameworks

  • gizmo, a microservice toolkit from The New York Times ★
  • go-micro, a distributed systems development framework ★
  • gotalk, async peer communication protocol & library
  • Kite, a micro-service framework
  • gocircuit, dynamic cloud orchestration

Individual components

Web frameworks

Additional reading

Extension points exported contracts — how you extend this code

Counter (Interface)
Counter describes a metric that accumulates values monotonically. An example of a counter is the number of received HTTP [29 …
metrics/metrics.go
Provider (Interface)
Provider abstracts over constructors and lifecycle management functions for each supported metrics backend. It should on [8 …
metrics/provider/provider.go
Registrar (Interface)
Registrar registers instance information to a service discovery system when an instance becomes alive and healthy, and d [25 …
sd/registrar.go
Instancer (Interface)
Instancer listens to a service discovery system and notifies registered observers of changes in the resource instances. [9 …
sd/instancer.go
Balancer (Interface)
Balancer yields endpoints according to some heuristic. [7 implementers]
sd/lb/balancer.go
StatusCoder (Interface)
StatusCoder is checked by DefaultErrorEncoder. If an error value implements StatusCoder, the StatusCode will be used whe [5 …
transport/http/server.go
BatchPointsWriter (Interface)
BatchPointsWriter captures a subset of the influxdb.Client methods necessary for emitting metrics observations. [5 implementers]
metrics/influx/influx.go
Service (Interface)
(no doc) [5 implementers]
transport/grpc/_grpc_test/service.go

Core symbols most depended-on inside this repo

Error
called by 261
transport/http/jsonrpc/error.go
With
called by 108
metrics/metrics.go
Log
called by 103
log/logrus/logrus_logger.go
Close
called by 86
transport/http/client.go
Set
called by 75
metrics/metrics.go
Value
called by 59
metrics/generic/generic.go
Add
called by 46
metrics/metrics.go
Error
called by 40
sd/lb/retry.go

Shape

Function 756
Method 555
Struct 212
FuncType 94
Interface 31
TypeAlias 25

Languages

Go100%

Modules by API surface

metrics/dogstatsd/dogstatsd.go33 symbols
metrics/influxstatsd/influxstatsd.go32 symbols
metrics/generic/generic.go30 symbols
transport/http/server_test.go29 symbols
metrics/internal/convert/convert.go26 symbols
metrics/cloudwatch/cloudwatch.go25 symbols
transport/amqp/subscriber.go24 symbols
transport/http/jsonrpc/server_test.go23 symbols
metrics/influx/influx.go23 symbols
sd/consul/instancer_test.go22 symbols
metrics/statsd/statsd.go22 symbols
metrics/prometheus/prometheus.go22 symbols

Dependencies from manifests, versioned

github.com/HdrHistogram/hdrhistogram-gov1.1.2 · 1×
github.com/Knetic/govaluatev3.0.1-0.20171022003 · 1×
github.com/VividCortex/gohistogramv1.0.0 · 1×
github.com/afex/hystrix-gov0.0.0-2018050200455 · 1×
github.com/armon/go-metricsv0.4.0 · 1×
github.com/aws/aws-sdk-gov1.40.45 · 1×
github.com/aws/aws-sdk-go-v2v1.9.1 · 1×
github.com/aws/aws-sdk-go-v2/service/cloudwatchv1.8.1 · 1×
github.com/aws/smithy-gov1.8.0 · 1×
github.com/beorn7/perksv1.0.1 · 1×
github.com/casbin/casbin/v2v2.37.0 · 1×

For agents

$ claude mcp add kit \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact