“Send” Is Not One Operation: Rethinking Distributed Computing #5
The dangerous part of send(message) is how much meaning we quietly pack into the word “send.” "Why send(message) is not one operation. Explore transient vs. persistent communication, synchronous vs. asynchronous messaging, queues, publish/subscribe, message brokers, MPI, collective communication, delivery guarantees, ordering, and the contracts hidden behind distributed communication." Two…
The "send" verb hides multiple independent decisions in distributed computing. When Alice sends a message to Bob, several questions arise regarding the message's fate. First, how long should the message stay alive? Transient communication keeps the message only while both Alice and Bob are active, while persistent communication preserves the message until either party can handle it.
Second, when is the sender allowed to continue working? Asynchronous communication lets Alice move on from sending the message, while synchronous communication requires her to wait until the message is delivered or processed by Bob. These two questions—how long the communication system preserves the message and how long the sender must wait—are not mutually exclusive and can be combined.
A message can be persistent and asynchronous, like email, or persistent and synchronous, waiting for durable storage at the receiving side without requiring the receiving application to be active. Transient asynchronous communication lets the sender continue immediately while relying on temporary buffering, and transient synchronous communication can wait for receipt, delivery, or even a response.
The message queue plays a crucial role in decoupling applications, allowing them to operate without needing to coordinate their calendars.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.