Transactors: a programming model for maintaining globally consistent distributed state in unreliable environments

We introduce transactors, a fault-tolerant programming model for composing loosely-coupled distributed components running in an unreliable environment such as the internet into systems that reliably maintain globally consistent distributed state. The transactor model incorporates certain elements of traditional transaction processing, but allows these elements to be composed in different ways without the need for central coordination, thus facilitating the study of distributed fault-tolerance from a semantic point of view. We formalize our approach via the τ-calculus, an extended lambda-calculus based on the actor model, and illustrate its usage through a number of examples. The τ-calculus incorporates constructs which distributed processes can use to create globally-consistent checkpoints. We provide an operational semantics for the τ-calculus, and formalize the following safety and liveness properties: first, we show that globally-consistent checkpoints have equivalent execution traces without any node failures or application-level failures, and second, we show that it is possible to reach globally-consistent checkpoints provided that there is some bounded failure-free interval during which checkpointing can occur.

[1]  Gul Agha,et al.  Efficient Support of Location Transparency in Concurrent Object-Oriented Programming Languages , 1995, Proceedings of the IEEE/ACM SC95 Conference.

[2]  Dominic Duggan,et al.  Abstractions for Fault-Tolerant Global Computing , 2002, F-WAN@ICALP.

[3]  Philip A. Bernstein,et al.  Middleware: a model for distributed system services , 1996, CACM.

[4]  Andreas Reuter,et al.  Transaction Processing: Concepts and Techniques , 1992 .

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

[6]  Carolyn L. Talcott,et al.  A foundation for actor computation , 1997, Journal of Functional Programming.

[7]  Robbert van Renesse,et al.  Reliable Distributed Computing with the Isis Toolkit , 1994 .

[8]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[9]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[10]  Luca Cardelli,et al.  Mobile Ambients , 1998, FoSSaCS.

[11]  Martin Berger,et al.  The Two-Phase Commitment Protocol in an Extended pi-Calculus , 2003, EXPRESS.

[12]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[13]  Barbara Liskov,et al.  Distributed programming in Argus , 1988, CACM.

[14]  Nadeem Jamali,et al.  Agent Naming and Coordination: Actor Based Models and Infrastructures , 2001, Coordination of Internet Agents: Models, Technologies, and Applications.

[15]  Carlos A. Varela,et al.  A Hierarchical Model for Coordination of Concurrent Activities , 1999, COORDINATION.

[16]  D. Walker,et al.  A Calculus of Mobile Processes, Part Ii , 1989 .

[17]  J. Gregory Morrisett,et al.  Composing first-class transactions , 1994, TOPL.

[18]  Carolyn L. Talcott,et al.  Composable Semantic Models for Actor Theories , 1997, High. Order Symb. Comput..

[19]  Carlos A. Varela,et al.  Towards a Programming Model for Building Reliable Systems with Distributed State , 2003, FOCLASA.

[20]  Cédric Fournet,et al.  The reflexive CHAM and the join-calculus , 1996, POPL '96.

[21]  Gul A. Agha,et al.  A Language Framework for Multi-Object Coordination , 1993, ECOOP.

[22]  Svend Frølund Coordinating distributed objects - an actor-based approach to synchronization , 1996 .

[23]  Alfred Z. Spector,et al.  Camelot: a flexible, distributed transaction processing system , 1988, Digest of Papers. COMPCON Spring 88 Thirty-Third IEEE Computer Society International Conference.

[24]  Robbert van Renesse,et al.  Horus: a flexible group communication system , 1996, CACM.