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
Dis.io
Search
Tom Gallacher
May 11, 2012
Programming
3
270
Dis.io
A browser based distributing grid computing platform. My final year project defence.
Tom Gallacher
May 11, 2012
Tweet
Share
More Decks by Tom Gallacher
See All by Tom Gallacher
Easy CPU Profiling
tomgco
3
16k
Other Decks in Programming
See All in Programming
Lottieアニメーションをカスタマイズしてみた
tahia910
0
120
動作確認やテストで漏れがちな観点3選
starfish719
6
1k
Conform を推す - Advocating for Conform
mizoguchicoji
3
690
color-scheme: light dark; を完全に理解する
uhyo
3
200
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2.2k
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
550
2024年のkintone API振り返りと2025年 / kintone API look back in 2024
tasshi
0
220
2024年のWebフロントエンドのふりかえりと2025年
sakito
2
240
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
130
密集、ドキュメントのコロケーション with AWS Lambda
satoshi256kbyte
0
190
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
890
pylint custom ruleで始めるレビュー自動化
shogoujiie
0
110
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Making Projects Easy
brettharned
116
6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Gamification - CAS2011
davidbonilla
80
5.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Navigating Team Friction
lara
183
15k
Site-Speed That Sticks
csswizardry
4
380
Transcript
A browser based distributed grid computing platform Tom Gallacher
Dis.io
What is Dis.io? • Grid computing platform • Based in
the web browser • Implementable by any web site • Horizontally scalable • Transparent to participants • Built entirely in JavaScript
Why Dis.io? • Platform agnostic • Potential contributors is proportionate
to daily visitors • Scalable across multiple sites
Architecture Managers, Distributors and Clients
Scalable • Each component can be spawned as many times
needed • Each can be placed on different machines • Components find each other using Bonjour/ZeroConf/MDNS
Terms A payload is: • An object of parameters •
Sent to Clients A work unit is: • Executable code which takes a payload A task is: • Amalgamation of payloads and work units
Client • Browser-side implementation • Uses the Web Worker API
• Implements Web Sockets via Socket.io
Managers The Provider. • Sends work units to Distributors •
Breaks down tasks into payloads • Uses ZeroMQ for communication to and from distributors • Saves results sent from distributors
Distributors The Hub. • Communications with Clients and Managers •
Uses a combination of ZeroMQ and Web sockets • Caches Messages if a manager is offline • Provides payloads and work units to clients
Dashboard The Control Panel. • Facilitates creation of Tasks and
work units. • Status of various components
Demo
Start the MongoDB database
Start the Dashboard's Webserver
Create a task
Spool up the Manager
Start Distributors
Verify connection on the Manager
Open a site that is serving the client
Number of completed tasks before
Number of completed after client has connected
Still continues if managers goes down
Performance Benchmarks
Dis.io cluster vs a single machine
Time per datapoint
What was learned • Distributed systems are very complex •
Effective communication between nodes is needed • Performance is based on the JavaScript Engine.
Limitations • JavaScript is slower than compiled languages • It's
possible for clients to spoof results • Useable only in modern browser • Task creation is not flexible
Recap • Dis.io browser based computing platform • Designed with
scalability in mind • Out performs a single process • Easy management
Any Questions?