"Simplicity is prerequisite for reliability." | ||
--Edsger W. Dijkstra |
Location-transparency, serializable event-handling, and non-blocking semantics of sends, make the actor model a powerful foundation for building distributed systems. However, the actor model has several important limitations, which only become apparent when building larger systems. First, actors cannot simultaneously contain multiple message entry points. All messages must arrive through the same receive
block. Consequently, two different protocols cannot reuse the same message type, and must be aware of each other. The main example where we saw this was the Identify
message, which required users to incorporate a unique token into the message. Second, actors cannot await specific combinations of messages. For example, it is cumbersome to simultaneously send a request message to two target actors, and proceed after both replies arrive. Third, the receive
statement is not a first-class citizen. Event...