CollabDraw Real-time Collaborative Drawing Board Shishir Prasad Prashant Saxena Prakhar Panwaria
CollabDraw
Goals High Scalability High Fault Tolerance Strong Consistency Offline Mode Overview Client
Clients Browser HTML5 local store Worker Servers Drawing Board data store Session Manager Meta-data store Components
Session Manager Register Workflow
Session Manager Worker Servers Client A Start Session Server IP Preferred Servers Client B Start Session Server IP Workflow
Session Manager Worker Servers Client A getWorker() Server IP Preferred Servers Client B Server Failure
Session Manager Worker Servers Client A Preferred Servers Client B getWorker() Disconnected getWorker () Disconnected Server Failure
Session Manager Worker Servers Client A Preferred Servers Client B Disconnected Mode Server Failure
Session Manager Worker Servers Client A Preferred Servers Client B Disconnected Mode getWorker() Server IP getWorker() Server IP Server Failure
Hybrid Consistency Strong Between Preferred Servers : Strong Eventual Rest : Eventual through anti-entropy protocol High Availability migration Worker Failure: Dynamic client migration Disconnected Network Failure: Disconnected mode Partition Tolerance replicated Drawing Boards data replicated CAP
Demo
Evaluation
Evaluation Average time for a paint brush event to appear on the canvas Single machine: ~20 ms 2 machines: ~32ms Average recovery time (in case of server failure) Single machine: ~18 s (Server up time) 2 machines: ~2 s
Enhancements
Thanks!
Supplement
(1) Main Page
(2) Canvas Page
(3) Dashboard
Evaluation