A distributed system is a collection of independent computers that communicate through a network and coordinate their actions to perform a shared task. To users, these computers may appear to operate as one coherent system.
Each computer in the system is called a node. Nodes exchange data using message passing, because they do not normally share the same physical memory. Software and network protocols determine how tasks, data, and resources are divided among the nodes.
For example, a cloud storage service may keep copies of a file on servers in several locations. When a user requests the file, the distributed system selects an available server and returns the data without requiring the user to know which server processed the request.
Important characteristics include concurrency, meaning several nodes can process tasks simultaneously, and independent failure, meaning one node can fail while others continue operating. Nodes also lack a perfectly shared global clock, so coordinating the order and timing of events can be difficult.
| Feature | Effect |
|---|---|
| Scalability | More nodes can be added to increase storage or processing capacity. |
| Fault tolerance | Replication can allow service to continue if a node fails. |
| Resource sharing | Nodes can share data, storage, processing power, or services. |
| Complexity | Coordination, synchronization, security, and error handling become harder. |
| Network dependence | Delays or connection failures can interrupt communication between nodes. |
Common examples include the Domain Name System, cloud computing platforms, distributed databases, and content delivery networks.
A common misconception is that any network is automatically a distributed system. A network only connects devices; a distributed system also requires the devices to coordinate in order to provide a shared service or complete a common task.
In an IB Computer Science response, define the term using the ideas of multiple independent nodes, network communication, and coordinated operation. For an explain question, add a specific example and show how work or data is distributed across the nodes.