Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go kit - A Distributed Programming Toolkit

Avatar for Mark Wolfe Mark Wolfe
November 25, 2015

Go kit - A Distributed Programming Toolkit

Presented at the microservices meetup in Melbourne, Australia

Avatar for Mark Wolfe

Mark Wolfe

November 25, 2015
Tweet

More Decks by Mark Wolfe

Other Decks in Programming

Transcript

  1. Server Package • Go interfaces • Provides: • Encoding/Decoding •

    Tracing and Health • Transport, Rate Limiting and Throttling • Discovery
  2. Client Package • Go interfaces • Provides: • Encoding/Decoding •

    Transport, Pooling, Rate Limiting & Circuit Breaker • Tracing
  3. !Important • Circuit Breaker • Stops thundering herds • prevents

    sending requests that are likely to fail • Rate Limiter • Enforce upper thresholds on request throughput
  4. Logging • Levels, e.g. Info, Error • Stdout, Stderr •

    Keyvals or JSON // Output: // foo=123 // level=info // level=info msg=hello // level=info msg=hello a=1 b=2
  5. Metrics! • Runtime, Application, Business • Counter, Histogram and Gauges

    • Stdout, StatsD or Prometheus import "github.com/go-kit/kit/metrics/expvar" func main() { myCount := expvar.NewCounter("my_count") myCount.Add(1) }
  6. Links • Go Kit • Circuit Breaker Pattern • Dapper,

    a Large-Scale Distributed Systems Tracing Infrastructure • The Zipkin distributed tracing project