Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go kit - A Distributed Programming Toolkit
Search
Mark Wolfe
November 25, 2015
Programming
0
140
Go kit - A Distributed Programming Toolkit
Presented at the microservices meetup in Melbourne, Australia
Mark Wolfe
November 25, 2015
Tweet
Share
More Decks by Mark Wolfe
See All by Mark Wolfe
IP Networking in AWS
wolfeidau
0
56
Getting Into Vue.js
wolfeidau
0
180
AWS Automation With Lambda
wolfeidau
1
85
Ansible and Cloudformation
wolfeidau
1
220
Docker Security
wolfeidau
0
180
Building a Proxy in Go
wolfeidau
2
350
Using JWT to Authenticate Microservices
wolfeidau
1
240
Managing Secrets IN AWS
wolfeidau
0
130
ESPlant Workshop Firmware Overview and Demos
wolfeidau
0
110
Other Decks in Programming
See All in Programming
게임 개발하던 학생이이 세계에선 안드로이드 개발자?
pangmoo
0
110
Quarto Clean Theme
nicetak
0
220
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
0
190
VS Code extension: ドラッグ&ドロップでファイルを並び替える
ttrace
0
170
個人開発で使ってるやつを紹介する回
yohfee
1
710
Cohesion in Modeling and Design
mploed
3
220
Why I Choose NetBeans for Jakarta EE
ivargrimstad
0
310
4年間変わらなかった YOUTRUSTのアーキテクチャ
daiki1003
1
640
デバッグの話 / Debugging for Beginners
kaityo256
PRO
8
630
クラウドサービスの 利用コストを削減する技術 - 円安の真南風を感じて -
pyama86
3
400
20241004 モノタロウ式~ドメインモデリングとリアーキテクチャ
monotaro
PRO
0
150
Memory API: Patterns, Use Cases, and Performance
josepaumard
1
180
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
327
21k
GraphQLとの向き合い方2022年版
quramy
43
13k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
231
17k
Embracing the Ebb and Flow
colly
84
4.4k
How to name files
jennybc
77
99k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Design by the Numbers
sachag
278
19k
Testing 201, or: Great Expectations
jmmastey
38
7k
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
In The Pink: A Labor of Love
frogandcode
139
22k
Transcript
Go kit A Distributed Programming Toolkit
Intro • Mark Wolfe • DevOps at Versent • IoT
& Distributed Systems
go-kit?! • Composable • Opinionated • Service Orientated • Simple
to Deploy
Server Package • Go interfaces • Provides: • Encoding/Decoding •
Tracing and Health • Transport, Rate Limiting and Throttling • Discovery
Client Package • Go interfaces • Provides: • Encoding/Decoding •
Transport, Pooling, Rate Limiting & Circuit Breaker • Tracing
!Important • Circuit Breaker • Stops thundering herds • prevents
sending requests that are likely to fail • Rate Limiter • Enforce upper thresholds on request throughput
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
Discovery • Inbuilt Service Discovery • DNS Srv Record •
Etcd • Consul
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) }
Example Code!
Questions • @wolfeidau on Twitter • https://github.com/wolfeidau •
[email protected]
Links • Go Kit • Circuit Breaker Pattern • Dapper,
a Large-Scale Distributed Systems Tracing Infrastructure • The Zipkin distributed tracing project