Abstract
A major challenge in writing applications that execute across hosts, such as distributed online services, is to reconcile (a) parallelism (i.e., allowing components to execute independently on disjoint tasks), and (b)cooperation (i.e., allowing components to work together on common tasks). A good compromise between the two is vital to scalability, a core concern in distributed networked applications.
The actor model of computation is a widely promoted programming model for distributed applications, as actors can execute in individual threads (parallelism) across different hosts and interact via asynchronous message passing (collaboration). However, this makes it hard for programmers to reason about combinations of messages as opposed to individual messages, which is essential in many scenarios.
This paper presents a pragmatic variant of the actor model in which messages can be grouped into units that are executed in a serializable manner, whilst still retaining a high degree of parallelism. In short, our model is based on an orchestration of actors along a directed acyclic graph that supports efficient decentralized synchronization among actors based on their actual interaction. We present the implementation of this model, based on a dynamic DAG-inducing referencing discipline, in the actor-based programming language AEON. We argue serializability and the absence of deadlocks in our model, and demonstrate its scalability and usability through extensive evaluation and case studies of wide-ranging applications.
Supplemental Material
- 2020. Akka.NET. http://getakka.netGoogle Scholar
- AEON. 2020. AEON. https://aeonproject.github.io/aeon/aeon_webpages/Google Scholar
- Gul Agha. 1990. Concurrent Object-Oriented Programming. Commun. ACM 33, 9 ( 1990 ), 125-141.Google Scholar
- Marcos Kawazoe Aguilera, Wojciech M. Golab, and Mehul A. Shah. 2008. A Practical Scalable Distributed B-Tree. PVLDB 1, 1 ( 2008 ), 598-609.Google Scholar
- Apache. 2020. Hadoop. http://hadoop.apache.org/Google Scholar
- Dominik Aumayr, Stefan Marr, Elisa Gonzalez Boix, and Hanspeter Mössenböck. 2019. Asynchronous Snapshots of Actor Systems for Latency-sensitive Applications. In Proceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes, MPLR' 19. 157-171.Google Scholar
Digital Library
- AWS. 2020. AWS. https://aws.amazon.com/Google Scholar
- Philip A. Bernstein, Vassos Hadzilacos, and Nathan Goodman. 1987. Concurrency Control and Recovery in Database Systems. Addison-Wesley.Google Scholar
Digital Library
- Sebastian Blessing, Sylvan Clebsch, and Sophia Drossopoulou. 2017. Tree Topologies for Causal Message Delivery. In Proceedings of the 7th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control, AGERE!'17. 1-10.Google Scholar
Digital Library
- Chandrasekhar Boyapati. 2003. SafeJava: A Unified Type System for Safe Programming. Ph.D. Dissertation. Massachusetts Institute of Technology.Google Scholar
- Sergey Bykov, Alan Geller, Gabriel Kliot, James R. Larus, Ravi Pandya, and Jorgen Thelin. 2011. Orleans: Cloud Computing for Everyone. In ACM Symposium on Cloud Computing, SOCC' 11. 16.Google Scholar
- Elias Castegren and Tobias Wrigstad. 2016. Reference Capabilities for Concurrency Control. In 30th European Conference on Object-Oriented Programming, ECOOP'16. 5: 1-5 : 26.Google Scholar
- Fay Chang, Jefrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Michael Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber. 2008. Bigtable: A Distributed Storage System for Structured Data. ACM Trans. Comput. Syst. 26, 2 ( 2008 ), 4 : 1-4 : 26.Google Scholar
Digital Library
- Dominik Charousset, Raphael Hiesgen, and Thomas C. Schmidt. 2016. Revisiting Actor Programming in C++. Computer Languages, Systems & Structures 45 ( April 2016 ), 105-131.Google Scholar
- Wei-Chiu Chuang, Bo Sang, Sunghwan Yoo, Rui Gu, Milind Kulkarni, and Charles Edwin Killian. 2013. EventWave: Programming Model and Runtime Support for Tightly-Coupled Elastic Cloud Applications. In ACM Symposium on Cloud Computing, SOCC ' 13. 21: 1-21 : 16.Google Scholar
Digital Library
- Sylvan Clebsch, Sophia Drossopoulou, Sebastian Blessing, and Andy McNeil. 2015. Deny Capabilities for Safe, Fast Actors. In Proceedings of the 5th International Workshop on Programming Based on Actors, Agents, and Decentralized Control, AGERE!'15. 1-12.Google Scholar
- Sylvan Clebsch, Juliana Franco, Sophia Drossopoulou, Albert Mingkun Yang, Tobias Wrigstad, and Jan Vitek. 2017. Orca: GC and Type System Co-design for Actor Languages. PACMPL 1, OOPSLA ( 2017 ), 72 : 1-72 : 28.Google Scholar
- Brian F. Cooper, Adam Silberstein, Erwin Tam, Raghu Ramakrishnan, and Russell Sears. 2010. Benchmarking Cloud Serving Systems with YCSB. In Proceedings of the 1st ACM Symposium on Cloud Computing, SoCC' 10. 143-154.Google Scholar
Digital Library
- Jefrey Dean and Sanjay Ghemawat. 2008. MapReduce: Simplified Data Processing on Large Clusters. Commun. ACM 51, 1 ( 2008 ), 107-113.Google Scholar
- Ankush Desai, Vivek Gupta, Ethan K. Jackson, Shaz Qadeer, Sriram K. Rajamani, and Damien Zuferey. 2013. P: Safe Asynchronous Event-driven Programming. In ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ' 13. 321-332.Google Scholar
Digital Library
- Peter Dinges and Gul Agha. 2012. Scoped Synchronization Constraints for Large Scale Actor Systems. In Coordination Models and Languages-14th International Conference, COORDINATION' 12. 89-103.Google Scholar
- Carlos H. C. Duarte. 1999. Proof-theoretic Foundations for the Design of Actor Systems. Mathematical. Structures in Comp. Sci. 9, 3 ( 1999 ), 227-252.Google Scholar
- Faith Ellen, Panagiota Fatourou, Eric Ruppert, and Franck van Breugel. 2010. Non-Blocking Binary Search Trees. In Proceedings of the 29th Annual ACM Symposium on Principles of Distributed Computing, PODC' 10. 131-140.Google Scholar
Digital Library
- Robert Escriva and Emin Gün Sirer. 2016. The Design and Implementation of the Warp Transactional Filesystem. In 13th USENIX Symposium on Networked Systems Design and Implementation, NSDI' 16. 469-483.Google Scholar
- Robert Escriva, Bernard Wong, and Emin Gün Sirer. 2015. Warp: Lightweight Multi-Key Transactions for Key-Value Stores. CoRR abs/1509.07815 ( 2015 ).Google Scholar
- John Field and Carlos A. Varela. 2005. Transactors: A Programming Model for Maintaining Globally Consistent Distributed State in Unreliable Environments. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL'05. 195-208.Google Scholar
- Svend Frølund. 1996. Coordinating Distributed Objects-An Actor-based Approach to Synchronization. MIT Press.Google Scholar
- Guy Golan-Gueta, Nathan Grasso Bronson, Alex Aiken, G. Ramalingam, Mooly Sagiv, and Eran Yahav. 2011. Automatic Fine-grain Locking Using Shape Properties. In Proceedings of the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA' 11. 225-242.Google Scholar
Digital Library
- Philipp Haller and Martin Odersky. 2009. Scala Actors: Unifying Thread-based and Event-based Programming. Theor. Comput. Sci. 410, 2-3 ( Feb. 2009 ), 202-220.Google Scholar
Digital Library
- Philipp Haller and Martin Odersky. 2010. Capabilities for Uniqueness and Borrowing. In Proceedings of the 24th European Conference on Object-oriented Programming, ECOOP'10. 354-378.Google Scholar
Cross Ref
- Maurice Herlihy and Ye Sun. 2005. Distributed Transactional Memory for Metric-space Networks. In Proceedings of the 19th International Conference on Distributed Computing, DISC' 05. 324-338.Google Scholar
Digital Library
- Carl Hewitt, Peter Bishop, and Richard Steiger. 1973. A Universal Modular ACTOR Formalism for Artificial Intelligence. In Proceedings of the 3rd International Joint Conference on Artificial Intelligence, IJCAI'73. 235-245.Google Scholar
Digital Library
- HyperDex Warp. 2020. GyperDex Warp. http://hyperdex.org/Google Scholar
- Shams M. Imam and Vivek Sarkar. 2014. Savina-An Actor Benchmark Suite: Enabling Empirical Evaluation of Actor Libraries. In Proceedings of the 4th International Workshop on Programming Based on Actors Agents & Decentralized Control, AGERE!' 14. 67-80.Google Scholar
- Infinispan. 2020. Infinispan. https://infinispan.org/Google Scholar
- Joeri De Koster, Stefan Marr, Theo D'Hondt, and Tom Van Cutsem. 2015. Domains: Safe Sharing Among Actors. Sci. Comput. Program. 98 ( 2015 ), 140-158.Google Scholar
- Christos Kotselidis, Mohammad Ansari, Kim Jarvis, Mikel Luján, Chris C. Kirkham, and Ian Watson. 2008. DiSTM: A Software Transactional Memory Framework for Clusters. In 2008 International Conference on Parallel Processing, ICPP'08. 51-58.Google Scholar
- Ilham W. Kurnia and Arnd Poetzsch-Hefter. 2012. A Relational Trace Logic for Simple Hierarchical Actor-based Component Systems. In Proceedings of the 2nd Edition on Programming Systems, Languages and Applications Based on Actors, Agents, and Decentralized Control Abstractions, AGERE!' 12. 47-58.Google Scholar
- Avinash Lakshman and Prashant Malik. 2010. Cassandra: A Decentralized Structured Storage System. Operating Systems Review 44, 2 ( 2010 ), 35-40.Google Scholar
Digital Library
- Doug Lea. 2005. The java. util.concurrent Synchronizer Framework. Sci. Comput. Program. 58, 3 ( 2005 ), 293-309.Google Scholar
- Lightbend. 2020. Akka. https://akka.io/Google Scholar
- Microsoft. 2020a. Asynchronous Agents Library. https://docs.microsoft.com/en-us/cpp/parallel/concrt/asynchronousagents-libraryGoogle Scholar
- Microsoft. 2020b. Who is Using Orleans? https://dotnet.github.io/orleans/Community/Who-Is-Using-Orleans.htmlGoogle Scholar
- Andrew Newell, Gabriel Kliot, Ishai Menache, Aditya Gopalan, Soramichi Akiyama, and Mark Silberstein. 2016. Optimizing Distributed Actor Systems for Dynamic Interactive Services. In Proceedings of the 11th European Conference on Computer Systems, EuroSys' 16.Google Scholar
Digital Library
- Rumyana Neykova and Nobuko Yoshida. 2014. Multiparty Session Actors. In Proceedings of the 16th IFIP WG 6.1 International Conference on Coordination Models and Languages-Volume 8459. 131-146.Google Scholar
Digital Library
- Patrick E. O'Neil, Edward Cheng, Dieter Gawlick, and Elizabeth J. O'Neil. 1996. The Log-Structured Merge-Tree (LSM-Tree). Acta Inf. 33, 4 ( 1996 ), 351-385.Google Scholar
Digital Library
- Orleans. 2020. Orleans. https://dotnet.github.io/orleans/Google Scholar
- Christos H. Papadimitriou. 1979. The Serializability of Concurrent Database Updates. J. ACM 26 ( 1979 ), 631-653. Issue 4. https://doi.org/10.1145/322154.322158 Google Scholar
Digital Library
- Arnd Poetzsch-Hefter, Ilham W. Kurnia, and Feller Christoph. 2011. Verification of Actor Systems Needs Specification Techniques for Strong Causality and Hierarchical Reasoning. In International Conference on Formal Verification of Object-Oriented Software, FoVeOOS'11. 289-305.Google Scholar
- Red Hat. 2020. JBoss Middleware. https://developers.redhat.com/middleware/Google Scholar
- Bo Sang, Gustavo Petri, Masoud Saeida Ardekani, Srivatsan Ravi, and Patrick Eugster. 2016. Programming Scalable Cloud Services with AEON. In Proceedings of the 17th International Middleware Conference, Middleware' 16. 16: 1-16 : 14.Google Scholar
- Bo Sang, Pierre-Louis Roman, Patrick Eugster, Hui Lu, Srivatsan Ravi, and Gustavo Petri. 2020. PLASMA: Programmable Elasticity for Stateful Cloud Computing Applications. In Proceedings of the 15th European Conference on Computer Systems, EuroSys' 20. 42: 1-42 : 15.Google Scholar
- Alexander J. Summers and Peter Müller. 2016. Actor Services. In Proceedings of the 25th European Symposium on Programming Languages and Systems-Volume 9632. 699-726.Google Scholar
- Janwillem Swalens, Joeri De Koster, and Wolfgang De Meuter. 2018. Chocola: Integrating Futures, Actors, and Transactions. In Proceedings of the 8th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control, AGERE!' 18. 33-43.Google Scholar
Digital Library
- Piazza Technologies. 2016. Piazza. https://piazza.comGoogle Scholar
- Stephen Tu, Wenting Zheng, Eddie Kohler, Barbara Liskov, and Samuel Madden. 2013. Speedy Transactions in Multicore In-memory Databases. In ACM SIGOPS 24th Symposium on Operating Systems Principles, SOSP '13. 18-32.Google Scholar
- Carlos A. Varela and Gul Agha. 1999. A Hierarchical Model for Coordination of Concurrent Activities. In Proceedings of the Third International Conference on Coordination Languages and Models, COORDINATION' 99. 166-182.Google Scholar
- Wikipedia. 2020. DDR3 SDRAM. https://en.wikipedia.org/wiki/DDR3_SDRAMGoogle Scholar
- Xingbo Wu, Li Zhang, Yandong Wang, Yufei Ren, Michel Hack, and Song Jiang. 2016. zExpander: A Key-Value Cache With Both High Performance and Fewer Misses. In Proceedings of the Eleventh European Conference on Computer Systems, EuroSys' 16. 14: 1-14 : 15.Google Scholar
Index Terms
Scalable and serializable networked multi-actor programming
Recommendations
Fast Serializable Multi-Version Concurrency Control for Main-Memory Database Systems
SIGMOD '15: Proceedings of the 2015 ACM SIGMOD International Conference on Management of DataMulti-Version Concurrency Control (MVCC) is a widely employed concurrency control mechanism, as it allows for execution modes where readers never block writers. However, most systems implement only snapshot isolation (SI) instead of full ...
Serializable isolation for snapshot databases
Many popular database management systems implement a multiversion concurrency control algorithm called snapshot isolation rather than providing full serializability based on locking. There are well-known anomalies permitted by snapshot isolation that ...
Making snapshot isolation serializable
Snapshot Isolation (SI) is a multiversion concurrency control algorithm, first described in Berenson et al. [1995]. SI is attractive because it provides an isolation level that avoids many of the common concurrency anomalies, and has been implemented by ...






Comments