"A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable."
Throughout this book, we have concentrated on many different abstractions for concurrent programming. Most of these abstractions assume the presence of shared memory. Futures and promises, concurrent data structures, and software transactional memory, are best suited to shared-memory systems. While the shared-memory assumption ensures that these facilities are efficient, it also limits them to applications running on a single computer. In this chapter, we consider a programming model that is equally applicable to a shared-memory machine or a distributed system, namely, the actor model. In the actor model, the program is represented by a large number of entities that execute computations independently, and communicate by passing messages. These independent entities are called actors.
The actor model aims to resolve issues...