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
udit
December 12, 2018
Technology
58
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
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
KanaAI
shreyas1009
0
140
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
130
覗いてみよう 関数型ビジュアル言語×2Dグラフィックスの世界
yohyamasaki
0
160
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
220
OpenClawでAzure DevOpsのWiki更新を自動化する - クラウドAIだけでは届かない場所へ
yutakaosada
0
140
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
520
『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発
mot_techtalk
1
180
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
1
990
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
610
Meet AgentCore Identity Consent Portal
hironobuiga
3
150
サーバーフルコンピューティング?AWS Lambda
iwatatomoya
0
120
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
160
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
300
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
410
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
Balancing Empowerment & Direction
lara
6
1.3k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
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