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
64
Getting Into Vue.js
wolfeidau
0
190
AWS Automation With Lambda
wolfeidau
1
88
Ansible and Cloudformation
wolfeidau
1
220
Docker Security
wolfeidau
0
180
Building a Proxy in Go
wolfeidau
2
370
Using JWT to Authenticate Microservices
wolfeidau
1
240
Managing Secrets IN AWS
wolfeidau
0
130
ESPlant Workshop Firmware Overview and Demos
wolfeidau
0
120
Other Decks in Programming
See All in Programming
「兵法」から見る質とスピード
ickx
0
210
CQRS/ESのクラスとシステムフロー ~ RailsでフルスクラッチでCQRSESを組んで みたことから得た学び~
suzukimar
0
200
Rails産でないDBを Railsに引っ越すHACK - Omotesando.rb #110
lnit
1
110
推論された型の移植性エラーTS2742に挑む
teamlab
PRO
0
150
Passkeys for Java Developers
ynojima
1
450
マテリアルって何者?RealityKitで扱うマテリアル入門
nao_randd
0
140
『Python → TypeScript』オンボーディング奮闘記
takumi_tatsuno
1
140
AI Coding Agent Enablement in TypeScript
yukukotani
17
7.3k
Javaのルールをねじ曲げろ!禁断の操作とその代償から学ぶメタプログラミング入門 / A Guide to Metaprogramming: Lessons from Forbidden Techniques and Their Price
nrslib
1
770
當開發遇上包裝:AI 如何讓產品從想法變成商品
clonn
0
2.6k
List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'"
philipschwarz
PRO
0
140
TypeScriptのmoduleオプションを改めて整理する
bicstone
4
430
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
Automating Front-end Workflow
addyosmani
1370
200k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Visualization
eitanlees
146
16k
What's in a price? How to price your products and services
michaelherold
245
12k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
How to train your dragon (web standard)
notwaldorf
92
6k
Unsuck your backbone
ammeep
671
58k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Docker and Python
trallard
44
3.4k
Facilitating Awesome Meetings
lara
54
6.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
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 • mark@wolfe.id.au
Links • Go Kit • Circuit Breaker Pattern • Dapper,
a Large-Scale Distributed Systems Tracing Infrastructure • The Zipkin distributed tracing project