Affiliation:
1. Purdue University, USA / Ant Group, USA
2. USI Lugano, Switzerland / TU Darmstadt, Germany / Purdue University, USA
3. ARM Research, UK
4. University of Southern California, USA
5. USI Lugano, Switzerland
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.
Funder
NSF
Schweizerischer Nationalfonds zur Förderung der Wissenschaftlichen Forschung
European Science Foundation
Deutsche Forschungsgemeinschaft
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference58 articles.
1. 2020. Akka.NET. http://getakka.net 2020. Akka.NET. http://getakka.net
2. AEON. 2020. AEON. https://aeonproject.github.io/aeon/aeon_webpages/ AEON. 2020. AEON. https://aeonproject.github.io/aeon/aeon_webpages/
3. Gul Agha. 1990. Concurrent Object-Oriented Programming. Commun. ACM 33 9 ( 1990 ) 125-141. Gul Agha. 1990. Concurrent Object-Oriented Programming. Commun. ACM 33 9 ( 1990 ) 125-141.
4. Apache. 2020. Hadoop. http://hadoop.apache.org/ Apache. 2020. Hadoop. http://hadoop.apache.org/
Cited by
3 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. High-performance Deterministic Concurrency Using
Lingua Franca;ACM Transactions on Architecture and Code Optimization;2023-10-26
2. When Concurrency Matters: Behaviour-Oriented Concurrency;Proceedings of the ACM on Programming Languages;2023-10-16
3. Reliable Actors with Retry Orchestration;Proceedings of the ACM on Programming Languages;2023-06-06