×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Go kit A Distributed Programming Toolkit
Slide 2
Slide 2 text
Intro • Mark Wolfe • DevOps at Versent • IoT & Distributed Systems
Slide 3
Slide 3 text
go-kit?! • Composable • Opinionated • Service Orientated • Simple to Deploy
Slide 4
Slide 4 text
Server Package • Go interfaces • Provides: • Encoding/Decoding • Tracing and Health • Transport, Rate Limiting and Throttling • Discovery
Slide 5
Slide 5 text
Client Package • Go interfaces • Provides: • Encoding/Decoding • Transport, Pooling, Rate Limiting & Circuit Breaker • Tracing
Slide 6
Slide 6 text
!Important • Circuit Breaker • Stops thundering herds • prevents sending requests that are likely to fail • Rate Limiter • Enforce upper thresholds on request throughput
Slide 7
Slide 7 text
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
Slide 8
Slide 8 text
Discovery • Inbuilt Service Discovery • DNS Srv Record • Etcd • Consul
Slide 9
Slide 9 text
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) }
Slide 10
Slide 10 text
Example Code!
Slide 11
Slide 11 text
Questions • @wolfeidau on Twitter • https://github.com/wolfeidau •
[email protected]
Slide 12
Slide 12 text
Links • Go Kit • Circuit Breaker Pattern • Dapper, a Large-Scale Distributed Systems Tracing Infrastructure • The Zipkin distributed tracing project