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
130
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
55
Getting Into Vue.js
wolfeidau
0
170
AWS Automation With Lambda
wolfeidau
1
82
Ansible and Cloudformation
wolfeidau
1
210
Docker Security
wolfeidau
0
180
Building a Proxy in Go
wolfeidau
2
330
Using JWT to Authenticate Microservices
wolfeidau
1
240
Managing Secrets IN AWS
wolfeidau
0
120
ESPlant Workshop Firmware Overview and Demos
wolfeidau
0
110
Other Decks in Programming
See All in Programming
Behind VS Code Extensions for JavaScript / TypeScript Linnting and Formatting
unvalley
5
850
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
200
Elm 0.19.0 Changes
bkuhlmann
0
490
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.3k
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
400
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
800
GitHub Copilotのススメ
marcy731
0
190
エンターテイメント業界で利用されるAWS
demuyan
0
210
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
640
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
160
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
260
ゆるい個人開発のススメ
kuroppe1819
10
970
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
259
12k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
Designing for humans not robots
tammielis
248
25k
What’s in a name? Adding method to the madness
productmarketing
PRO
15
2.6k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
Designing with Data
zakiwarfel
95
4.8k
Making Projects Easy
brettharned
108
5.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
647
58k
The Cost Of JavaScript in 2023
addyosmani
15
3.8k
How to Ace a Technical Interview
jacobian
272
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