Task Distribution vs. Data Distribution

There are two reasons why a software system might want to send messages to another system:

Distributing computation is known as "task distribution": for example a load balancer.

Distributing information is known as "data distribution" or "message distribution": for example when different services subscribe to a topic.

Here are some important messaging patterns:

Note that the push-pull pattern either distributes a task to a set of compute resources (fan-out only) or partitions a task into smaller sub-tasks which then need to be aggregated to form a result (fan-out followed by fan-in to a sink). An example of this second option is the MapReduce framework.

illustration of messaging patterns

Sources: Hackernoon and Wikipedia.

Disclaimer: my notes are usually a work-in-progress. Some might be incomplete or contain mistakes.