ABSTRACT
The actor model has been a model of choice for building reliable distributed systems. On one hand, it ensures that message-processing is serialized within each actor, preserving the familiar sequential programming model. On the other hand, programs written in the actor model are location-transparent. The model is sufficiently low-level to express arbitrary message protocols. Composing these protocols is the key to high-level abstractions. Unfortunately, it is difficult to reuse or compose message protocols with actors. Reactive isolates, proposed in this paper, simplify protocol composition with first-class typed channels and event streams. We compare reactive isolates and the actor model on concrete programs. We identify obstacles for composition in the classic actor model, and show how to overcome them. We then show how to build reusable, composable distributed computing components in the new model.
- Dart programming language, 2011. http://www.dartlang.org/.Google Scholar
- Akka documentation, 2015. http://akka.io/docs/.Google Scholar
- Erlang/OTP documentation, 2015. http://www.erlang.org/.Google Scholar
- Reactive Collections, 2015. https://reactive-collections.com.Google Scholar
- G. Agha. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, MA, USA, 1986. Google ScholarDigital Library
- N. Amin, A. Moors, and M. Odersky. Dependend object types. In 19th Internation Workshop on Foundations of Object-Oriented Languages, 2012.Google Scholar
- J. Armstrong. Making Reliable Distributed Systems in the Presence of Software Errors. PhD thesis, The Royal Institute of Technology, Stockholm, Sweden, December 2003.Google Scholar
- V. Cremet, F. Garillot, S. Lenglet, and M. Odersky. A core calculus for scala type checking. In Proceedings of the 31st International Conference on Mathematical Foundations of Computer Science, MFCS’06, pages 1–23, Berlin, Heidelberg, 2006. Springer-Verlag. Google ScholarDigital Library
- T. V. Cutsem, S. Mostinckx, E. G. Boix, J. Dedecker, and W. D. Meuter. AmbientTalk: Object-oriented event-driven programming in mobile ad hoc networks. In Proceedings of the XXVI International Conference of the Chilean Society of Computer Science, SCCC ’07, pages 3–12, Washington, DC, USA, 2007. IEEE Computer Society. Google ScholarDigital Library
- J. Dean and S. Ghemawat. MapReduce: Simplified data processing on large clusters. Commun. ACM, 51(1):107–113, Jan. 2008. Google ScholarDigital Library
- E. W. Dijkstra. Letters to the editor: Go to statement considered harmful. Commun. ACM, 11(3):147–148, Mar. 1968. Google ScholarDigital Library
- C. J. Fidge. Timestamps in message-passing systems that preserve the partial ordering. Proceedings of the 11th Australian Computer Science Conference, 10(1):56–66, 1988.Google Scholar
- R. Guerraoui and L. Rodrigues. Introduction to reliable distributed programming. Springer, 2006. Google ScholarDigital Library
- P. Haller and M. Odersky. Event-based programming without inversion of control. In Proc. Joint Modular Languages Conference, Springer LNCS, 2006. Google ScholarDigital Library
- P. Haller, A. Prokopec, H. Miller, V. Klang, R. Kuhn, and V. Jovanovic. Scala improvement proposal: Futures and promises (SIP-14). 2012.Google Scholar
- S. M. Imam and V. Sarkar. Selectors: Actors with multiple guarded mailboxes. In Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control, AGERE! 2014, Portland, OR, USA, October 20, 2014, pages 1––14, 2014. Google ScholarDigital Library
- J. Kreps, N. Narkhede, and J. Rao. Kafka: A distributed messaging system for log processing. In Proceedings of 6th International Workshop on Networking Meets Databases (NetDB), Athens, Greece, 2011.Google Scholar
- L. Lamport. The part-time parliament. ACM Trans. Comput. Syst., 16(2):133–169, May 1998. Google ScholarDigital Library
- N. A. Lynch. Distributed Algorithms. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1996. Google ScholarDigital Library
- E. Meijer. Your mouse is a database. Commun. ACM, 55(5):66–73, 2012. Google ScholarDigital Library
- E. Meijer, M. Fokkinga, and R. Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture, pages 124–144. Springer-Verlag, 1991. Google ScholarDigital Library
- M. Odersky and al. An overview of the Scala programming language. Technical Report IC/2004/64, EPFL Lausanne, Switzerland, 2004.Google Scholar
- M. Odersky and A. Moors. Fighting bit rot with types (experience report: Scala collections). In FSTTCS 2009, volume 4 of Leibniz International Proceedings in Informatics (LIPIcs), pages 427–451, Dagstuhl, Germany, 2009.Google Scholar
- B. C. Pierce. Types and Programming Languages. MIT Press, Cambridge, MA, USA, 2002. Google ScholarDigital Library
- K. Pinte, A. Lombide Carreton, E. Gonzalez Boix, and W. Meuter. Ambient Clouds: Reactive asynchronous collections for mobile ad hoc network applications. In J. Dowling and F. Taïani, editors, Distributed Applications and Interoperable Systems, volume 7891 of Lecture Notes in Computer Science, pages 85–98. Springer Berlin Heidelberg, 2013.Google Scholar
- N. M. Preguiça, J. M. Marquès, M. Shapiro, and M. Letia. A commutative replicated data type for cooperative editing. In 29th IEEE International Conference on Distributed Computing Systems (ICDCS 2009), 22-26 June 2009, Montreal, Québec, Canada, pages 395–403, 2009. Google ScholarDigital Library
- A. Prokopec. Snapqueue: lock-free queue with constant time snapshots. In Proceedings of the 6th ACM SIGPLAN Symposium on Scala, Scala 2015, Portland, OR, USA, June 15-17, 2015, pages 1–12, 2015. Google ScholarDigital Library
- A. Prokopec, P. Haller, and M. Odersky. Containers and aggregates, mutators and isolates for reactive programming. In Proceedings of the Fifth Annual Scala Workshop, SCALA ’14, pages 51–61. ACM, 2014. Google ScholarDigital Library
- A. Prokopec, H. Miller, T. Schlatter, P. Haller, and M. Odersky. Flowpools: A lock-free deterministic concurrent dataflow abstraction. In LCPC, pages 158–173, 2012.Google Scholar
- R. Schollmeier. A definition of peer-to-peer networking for the classification of peer-to-peer architectures and applications. In Proceedings of the First International Conference on Peer-to-Peer Computing, P2P ’01, pages 101–, Washington, DC, USA, 2001. IEEE Computer Society. Google ScholarDigital Library
- M. Shapiro, N. Preguiça, C. Baquero, and M. Zawirski. A comprehensive study of Convergent and Commutative Replicated Data Types. Research Report RR-7506, Jan. 2011.Google ScholarDigital Library
- R. Virding, C. Wikström, and M. Williams. Concurrent Programming in ERLANG (2Nd Ed.). Prentice Hall International (UK) Ltd., Hertfordshire, UK, UK, 1996. Google ScholarDigital Library
- J. White. High-level framework for network-based resource sharing. RFC 707, Dec. 1975. Google ScholarDigital Library
- M. Zaharia, M. Chowdhury, T. Das, A. Dave, J. Ma, M. Mc-Cauley, M. J. Franklin, S. Shenker, and I. Stoica. Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing. In Proceedings of the 9th USENIX Conference on Networked Systems Design and Implementation, NSDI’12, pages 2–2, Berkeley, CA, USA, 2012. USENIX Association. Google ScholarDigital Library
Index Terms
- Isolates, channels, and event streams for composable distributed programming
Recommendations
Composable Actor Behaviour
Distributed Applications and Interoperable SystemsAbstractCode reusability is the cornerstone of object-oriented programming. Reuse mechanisms such as inheritance and trait composition lay at the basis of a whole range of software engineering practices with the goal to improve software quality and ...
Distributed diagnosis of discrete-event systems using Petri nets
ICATPN'03: Proceedings of the 24th international conference on Applications and theory of Petri netsThe problem of detecting and isolating fault events in dynamic systems modeled as discrete-event systems is considered. The modeling formalism adopted is that of Petri nets with labeled transitions, where some of the transitions are labeled by different ...
Composable Semantic Models for Actor Theories
We are interested in developing a semantic foundation that supports specifying, composing, and reasoning about components of open distributed systems. The actor model provides the basic elements for open distributed computation: encapsulation of state; ...
Comments