Symmetric distributed applications

A program is deterministic if multiple re-executions with the same inputs always lead to the same state. Even concurrent instances of a deterministic program should observe identical behavior---in real time---if assigned the same set of inputs. In this work, we propose real-time reproducibility for distributed programs. Multiple instances of the same interactive application can broadcast asynchronous inputs and yet conform to identical behavior. Collaborative networked applications, such as watch parties, document editing, and video games can benefit from this approach. We name this class of applications as symmetric distributed applications. Using a standard event-driven API to wait and emit events, programmers write code as if the application executes in a single machine. Our middleware intercepts event generation and synchronizes all instances in a consistent timeline so that receipt is identically reproducible. Not only distributed applications benefit from consistency and determinism but also development and testing can be done in a single instance with the same guarantees. In our experiments, the middleware can handle applications with 25 FPS, distributed in up to 25 nodes over the Internet, with an event latency below 350ms.

[1]  Florence Maraninchi,et al.  The Argos Language: Graphical Representation of Automata and Description of Reactive Systems , 2007 .

[2]  Stephen A. Edwards,et al.  The synchronous languages 12 years later , 2003, Proc. IEEE.

[3]  S. Ramesh Communicating Reactive State Machines: Design, Model and Implementation , 1998 .

[4]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[5]  David A. Smith,et al.  Croquet - a collaboration system architecture , 2003, First Conference on Creating, Connecting and Collaborating Through Computing, 2003. C5 2003. Proceedings..

[6]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[7]  Marc Shapiro,et al.  Conflict-Free Replicated Data Types , 2011, SSS.

[8]  Ricky Yeung,et al.  TBAG: a high level framework for interactive, animated 3D graphics applications , 1994, SIGGRAPH.

[9]  Sarita V. Adve,et al.  Parallel programming must be deterministic by default , 2009 .

[10]  Peter Csaba Ölveczky,et al.  PALS: Physically Asynchronous Logically Synchronous Systems , 2009 .

[11]  Robert de Simone,et al.  The Synchronous Hypothesis and Synchronous Languages , 2005, Embedded Systems Handbook.

[12]  Guy Lemieux,et al.  A Survey and Taxonomy of GALS Design Styles , 2007, IEEE Design & Test of Computers.

[13]  Noemi Rodriguez,et al.  A GALS Approach for Programming Distributed Interactive Multimedia Applications , 2018 .

[14]  Albert Benveniste,et al.  The synchronous approach to reactive and real-time systems , 1991 .

[15]  S. Ramesh,et al.  Communicating reactive processes , 1993, POPL '93.

[16]  Nicolas Halbwachs,et al.  Synchronous Programming of Reactive Systems , 1992, CAV.

[17]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[18]  Mark McGranaghan,et al.  Local-first software: you own your data, in spite of the cloud , 2019, Onward!.

[19]  Zoran A. Salcic,et al.  SystemJ: A GALS language for system level design , 2010, Comput. Lang. Syst. Struct..