Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Road to masterless multi-node distributed syste...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
udit
December 12, 2018
Technology
62
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Road to masterless multi-node distributed system in Elixir
udit
December 12, 2018
Transcript
57 slides
The Road to a in Elixir Masterless Multi-node Distributed System
BUILDING AND SERVICES SYSTEMS
•WHY THIS JOURNEY? •THE START •WHERE WE ARE •THE ROAD
AHEAD AGENDA
WHY THIS JOURNEY?
PLATFORM TO DISCOVER AND BUY THE BEST EXPERIENCES IN EVENTS,
TRAVEL AND FOOD IN CITIES ACROSS INDIA
FOUNDED IN 2014 10K+ EVENTS, 3M+ TICKETS IN 2018 ACQUIRED
BY PAYTM IN 2017
MAKE INSIDER A PLATFORM FOR HOSTING AND PARTICIPATING IN DIGITAL
EVENTS
LIVE QUIZ
A PLATFORM THAT ENABLES INTERACTIONS ON A LIVE VIDEO STREAM
interaction by Aman from the Noun Project
FLEXIBLE AND SCALABLE FUEL INTERACTIONS flexible by Anup from the
Noun Project PLATFORM TO
Elixir Functional Programming Immutable Data Structures Concurrency Fault Tolerance Battle
Tested VM Erlang Interoperability
THE START
M W W W W NODE
MASTER CANNOT HANDLE Problem PLAYERS
M W W W W NODE SM SM
UNNECESSARY CHANGE CALLS CASTS
PLAYER STATE TRANSFER GENSERVER ETS
M W W W W NODE C NODE B NODE
A
SENDING MESSAGE TO A PID OVER THE NETWORK COPIES THE
MESSAGE OVER THE NETWORK Problem
Manifold github.com/discordapp/manifold Batching of messages passed between nodes
MANIFOLD WORKS FOR FAN-OUTs WHAT ABOUT FAN-INs? Problem
SO MUCH CHATTER MESSAGE PASSING Problem BECAME EXPENSIVE
MQTT Publisher/Subscriber Messaging Protocol Built on top of TCP/IP Lightweight
and Bandwidth Efficient Quality of Service Data Agnostic Message Queueing Telemetry Transport
Distributed, Scalable and Highly Extensible MQTT message broker Written in
Erlang/OTP http://emqtt.io
E M Q W W W W M /connect /connect
/connect /connect
Problem GLOBAL LOCK ACROSS WORKERS TO HANDLE PLAYER CONNECTIONS
Workers subscribe to /connect/<slot id> Players connect to /connect/<slot id>
Slot = Hash(player_id) T P I O S C SLOTTED
E M Q W W W W M /connect/1 /connect/2
/connect/2 /connect/1
Problem CRASHES APPLICATION
SUPERVISION TREES
Master Worker Worker Worker App Supervisor Master Supervisor Worker Supervisor
CURRENT ARCHITECTURE IS TIGHTLY COUPLED TO QUIZ Problem
HOW TO SUPPORT STATES AND TRANSITIONS FOR DIFFERENT ENGAGEMENTS? Problem
FSM Event State Engagement State gen_statem in Erlang/OTP
WHERE WE ARE
M W W W W Director
WE HAVE IN PLACE BUILDING BLOCKS
HOW TO SCALE IN THE LONG RUN?
WE NEED TO THINK LONG TERM
INTERMISSION
THE ROAD AHEAD
Multi Node
M W W W W M W W W W
GM
libcluster https://github.com/bitwalker/libcluster Form clusters of Erlang nodes Static or Dynamic
Node Membership Custom Strategy to Deal with Nodes Joining/Leaving Notification when Nodes Join/Leave
Resilience
ETS Immortal https://github.com/danielberkompas/immortal Keep ETS alive using a heir process
Keep ETS alive when owner dies Give ownership back to owner after it reboots
NODE A NODE B MASTER MA WA WB MB WA
WA WA WB WB WB MB WB MA WB WB WB WA WA WA WA AND WORKER REPLICA
Masterless
M W W W W GM M W W W
W GM M W W W W GM NODE A NODE C NODE B
CRDT Conflict-free Coordination-free Commutative or Convergent
CRDT Flags Maps Counters Sets
https://kubernetes.io/ SETUP/TEARDOWN ON-DEMAND FOR EVENTS INFRASTRUCTURE
RECAP
• https://elixirschool.com/en/ • https://ferd.ca/the-zen-of-erlang.html • http://blog.plataformatec.com.br/ • http://basho.com/tag/riak/ • https://www.theerlangelist.com/
Resources
Books Litte Elixir and OTP https://www.manning.com/books/the-little-elixir-and-otp-guidebook Learn you some Erlang
http://learnyousomeerlang.com Designing for Scalability with Erlang/OTP http://shop.oreilly.com/product/0636920024149.do
DISTRIBUTED SYSTEMS ARE HARD ELIXIR MAKES THINGS EASIER
Thanks! @kirang89 @yudistrange https://bit.ly/2QVT7CB
More Decks by udit
See All by udit
Scalable dist-sys from grounds up
yudistrange
0
220
Other Decks in Technology
See All in Technology
Frontier Teams — Amazon は AI で「開発のやり方」をどう変えたのか
kmotohas
0
250
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.2k
うちなーぐちが認識できるなら、秋田弁もいけるはず!? Amazon Transcribe方言チューニング検証
ryouto715
1
170
Quick Automate | 目指せ Quick マスター 12
inariku
PRO
1
110
Gemma4 Hands-on at Nagoya
tsho
0
100
LLM 基盤と kagent v0 を全部 k8s に入れてみた / Deploy both LLM and kagent v0 in k8s
kota2and3kan
0
210
思考過程から秘密が漏れる:Amazon Bedrock上のKimi K3を5つの方法で攻めたら、25回中22回漏洩した話
yama3133
1
160
速くなった開発の効果をどう推し量るのか
bulbulpaul
0
110
「任されビリティ」で引き受けて「よしなりてぃ」に頼らず任せる / Accept tasks with "makasarebility" and hand them over without relying on "yoshinarily"
pauli
0
540
AI時代における医療情報システムのセキュリティ / Security of Healthcare IT Systems in the AI Era
henryofficial
0
170
仕様と現実の間で落とし所を探るリモートMCPの認証・認可 — Sansanの認証基盤における課題と実践
sansantech
PRO
2
300
Sonnetだけで業務はまわる?
kintotechdev
1
120
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.8k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
560
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Prompt Engineering for Job Search
mfonobong
0
580
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
570