skip to main content
research-article
Open Access

Scalable and serializable networked multi-actor programming

Published:13 November 2020Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

Auxiliary Presentation Video

This is the talk video for oopsla20 paper 299 "Scalable and Serializable Networked Multi-actor Programming".

References

  1. 2020. Akka.NET. http://getakka.netGoogle ScholarGoogle Scholar
  2. AEON. 2020. AEON. https://aeonproject.github.io/aeon/aeon_webpages/Google ScholarGoogle Scholar
  3. Gul Agha. 1990. Concurrent Object-Oriented Programming. Commun. ACM 33, 9 ( 1990 ), 125-141.Google ScholarGoogle Scholar
  4. Marcos Kawazoe Aguilera, Wojciech M. Golab, and Mehul A. Shah. 2008. A Practical Scalable Distributed B-Tree. PVLDB 1, 1 ( 2008 ), 598-609.Google ScholarGoogle Scholar
  5. Apache. 2020. Hadoop. http://hadoop.apache.org/Google ScholarGoogle Scholar
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. AWS. 2020. AWS. https://aws.amazon.com/Google ScholarGoogle Scholar
  8. Philip A. Bernstein, Vassos Hadzilacos, and Nathan Goodman. 1987. Concurrency Control and Recovery in Database Systems. Addison-Wesley.Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. Chandrasekhar Boyapati. 2003. SafeJava: A Unified Type System for Safe Programming. Ph.D. Dissertation. Massachusetts Institute of Technology.Google ScholarGoogle Scholar
  11. 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 ScholarGoogle Scholar
  12. 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 ScholarGoogle Scholar
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. Dominik Charousset, Raphael Hiesgen, and Thomas C. Schmidt. 2016. Revisiting Actor Programming in C++. Computer Languages, Systems & Structures 45 ( April 2016 ), 105-131.Google ScholarGoogle Scholar
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle Scholar
  17. 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 ScholarGoogle Scholar
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. Jefrey Dean and Sanjay Ghemawat. 2008. MapReduce: Simplified Data Processing on Large Clusters. Commun. ACM 51, 1 ( 2008 ), 107-113.Google ScholarGoogle Scholar
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle Scholar
  22. 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 ScholarGoogle Scholar
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle Scholar
  25. 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 ScholarGoogle Scholar
  26. 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 ScholarGoogle Scholar
  27. Svend Frølund. 1996. Coordinating Distributed Objects-An Actor-based Approach to Synchronization. MIT Press.Google ScholarGoogle Scholar
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarCross RefCross Ref
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. HyperDex Warp. 2020. GyperDex Warp. http://hyperdex.org/Google ScholarGoogle Scholar
  34. 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 ScholarGoogle Scholar
  35. Infinispan. 2020. Infinispan. https://infinispan.org/Google ScholarGoogle Scholar
  36. 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 ScholarGoogle Scholar
  37. 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 ScholarGoogle Scholar
  38. 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 ScholarGoogle Scholar
  39. Avinash Lakshman and Prashant Malik. 2010. Cassandra: A Decentralized Structured Storage System. Operating Systems Review 44, 2 ( 2010 ), 35-40.Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Doug Lea. 2005. The java. util.concurrent Synchronizer Framework. Sci. Comput. Program. 58, 3 ( 2005 ), 293-309.Google ScholarGoogle Scholar
  41. Lightbend. 2020. Akka. https://akka.io/Google ScholarGoogle Scholar
  42. Microsoft. 2020a. Asynchronous Agents Library. https://docs.microsoft.com/en-us/cpp/parallel/concrt/asynchronousagents-libraryGoogle ScholarGoogle Scholar
  43. Microsoft. 2020b. Who is Using Orleans? https://dotnet.github.io/orleans/Community/Who-Is-Using-Orleans.htmlGoogle ScholarGoogle Scholar
  44. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  47. Orleans. 2020. Orleans. https://dotnet.github.io/orleans/Google ScholarGoogle Scholar
  48. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  49. 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 ScholarGoogle Scholar
  50. Red Hat. 2020. JBoss Middleware. https://developers.redhat.com/middleware/Google ScholarGoogle Scholar
  51. 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 ScholarGoogle Scholar
  52. 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 ScholarGoogle Scholar
  53. 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 ScholarGoogle Scholar
  54. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  55. Piazza Technologies. 2016. Piazza. https://piazza.comGoogle ScholarGoogle Scholar
  56. 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 ScholarGoogle Scholar
  57. 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 ScholarGoogle Scholar
  58. Wikipedia. 2020. DDR3 SDRAM. https://en.wikipedia.org/wiki/DDR3_SDRAMGoogle ScholarGoogle Scholar
  59. 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 ScholarGoogle Scholar

Index Terms

  1. Scalable and serializable networked multi-actor programming

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image Proceedings of the ACM on Programming Languages
      Proceedings of the ACM on Programming Languages  Volume 4, Issue OOPSLA
      November 2020
      3108 pages
      EISSN:2475-1421
      DOI:10.1145/3436718
      Issue’s Table of Contents

      Copyright © 2020 Owner/Author

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 13 November 2020
      Published in pacmpl Volume 4, Issue OOPSLA

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!