On the Potential of Event Sourcing for Retroactive Actor-based Programming

The actor model is an established programming model for distributed applications. Combining event sourcing with the actor model allows the reconstruction of previous states of an actor. When this event sourcing approach for actors is enhanced with additional causality information, novel types of actor-based, retroactive computations are possible. A globally consistent state of all actors can be reconstructed retrospectively. Even retroactive changes of actor behavior, state, or messaging are possible, with partial recomputations and projections of changes in the past. We believe that this approach may provide beneficial features to actor-based systems, including retroactive bugfixing of applications, decoupled asynchronous global state reconstruction for recovery, simulations, and exploration of distributed applications and algorithms.

[1]  Ronald Garcia,et al.  Essential retroactive weaving , 2015, MODULARITY.

[2]  Ajay D. Kshemkalyani A symmetric O(n log n) message distributed snapshot algorithm for large-scale systems , 2009, 2009 IEEE International Conference on Cluster Computing and Workshops.

[3]  Arie Segev,et al.  TALE: A Temporal Active Language and Execution Model , 1996, CAiSE.

[4]  Steve Vinoski,et al.  Programming language impact on the development of distributed systems , 2011, Journal of Internet Services and Applications.

[5]  Willy Zwaenepoel,et al.  Causal distributed breakpoints , 1990, Proceedings.,10th International Conference on Distributed Computing Systems.

[6]  A. Prasad Sistla,et al.  Efficient distributed recovery using message logging , 1989, PODC '89.

[7]  Thomas J. LeBlanc,et al.  Debugging Parallel Programs with Instant Replay , 1987, IEEE Transactions on Computers.

[8]  Friedemann Mattern,et al.  Virtual Time and Global States of Distributed Systems , 2002 .

[9]  Erik D. Demaine,et al.  Retroactive data structures , 2007, TALG.

[10]  WangYi-Min Consistent Global Checkpoints that Contain a Given Set of Local Checkpoints , 1997 .

[11]  Steve Vinoski Concurrency with Erlang , 2007, IEEE Internet Computing.

[12]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[13]  Bernadette Charron-Bost,et al.  Concerning the Size of Logical Clocks in Distributed Systems , 1991, Inf. Process. Lett..

[14]  Jian Xu,et al.  Adaptive message logging for incremental program replay , 1993, IEEE Parallel & Distributed Technology: Systems & Applications.

[15]  Marc Shapiro,et al.  A comprehensive study of Convergent and Commutative Replicated Data Types , 2011 .

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

[17]  Martin Fowler,et al.  Patterns of Enterprise Application Architecture , 2002 .

[18]  Leslie Lamport,et al.  Distributed snapshots: determining global states of distributed systems , 1985, TOCS.

[19]  Vijay K. Garg,et al.  Scalable algorithms for global snapshots in distributed systems , 2006, ICS '06.

[20]  Colin J. Fidge,et al.  Logical time in distributed computing systems , 1991, Computer.

[21]  Gregor Kiczales,et al.  Retroactive aspects: programming in the past , 2011, WODA '11.

[22]  W. Weigel,et al.  Global events and global breakpoints in distributed systems , 1988, [1988] Proceedings of the Twenty-First Annual Hawaii International Conference on System Sciences. Volume II: Software track.

[23]  Frank Kargl,et al.  A conceptual model for event-sourced graph computing , 2015, DEBS.

[24]  Carl Hewitt,et al.  A Universal Modular ACTOR Formalism for Artificial Intelligence , 1973, IJCAI.

[25]  Jong-Deok Choi,et al.  Breakpoints and halting in distributed programs , 1988, [1988] Proceedings. The 8th International Conference on Distributed.

[26]  Frank Bernhard Schmuck,et al.  The Use of Efficient Broadcast Protocols in Asynchronous Distributed Systems , 1988 .

[27]  Mark Nottingham,et al.  JavaScript Object Notation (JSON) Patch , 2013, RFC.

[28]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[29]  Avigdor Gal,et al.  A Multiagent Update Process in a Database with Temporal Data Dependencies and Schema Versioning , 1998, IEEE Trans. Knowl. Data Eng..