- Define a distributed system and a distributed application.
- List the key characteristics and challenges of distributed systems.
- Explain the CAP theorem at a basic level.
- Compare centralized, decentralized and distributed architectures and place blockchain among them.
Distributed Applications
- A distributed application is software whose computation is spread across several components running on different computers. The components communicate and coordinate their actions by passing messages over a network.
- The components work together to achieve a common goal, and to the user the whole system appears as one application.
- Some distributed application examples are:
- CDN – Content Delivery Networks that serve web content from servers close to the user.
- Cloud platforms such as AWS – Amazon Web Services – and cloud instances that run one service on many machines.
- Large web services such as search engines, social networks and video streaming, which run on thousands of servers.
- Note: these examples are distributed but still centrally controlled by one company.
Characteristics of Distributed Systems
| Characteristic | Meaning |
|---|---|
| Concurrency | Many components execute at the same time and may access shared resources. |
| No global clock | Each machine has its own clock, so ordering events requires coordination. |
| Independent failures | One machine or link can fail while others keep running; the system must tolerate this. |
| Scalability | Capacity can be increased by adding more machines (horizontal scaling). |
| Transparency | Users see a single system and do not need to know where each component runs. |
| Replication | Data is copied on multiple machines for availability and fault tolerance. |
The CAP Theorem (Basic Idea)
The CAP theorem states that when a network partition (communication break) happens, a distributed data store must choose between:
- Consistency (C) – every read returns the most recent write, and
- Availability (A) – every request still receives a response,
while still tolerating the Partition (P). It cannot guarantee both C and A during a partition. Public blockchains generally favour availability and reach consistency over time as blocks are confirmed (often called eventual or probabilistic consistency).
Centralized vs Decentralized vs Distributed
| Aspect | Centralized | Decentralized | Distributed |
|---|---|---|---|
| Control | One authority | Several independent authorities, none in complete control | Spread over all participating nodes |
| Failure impact | Whole system fails | Only part of the network is affected | System keeps running if some nodes fail |
| Data location | One place | Several hubs | Copies on many nodes |
| Trust | Trust the owner | Trust shared among parties | Trust in protocol and replication |
| Examples | Single bank database | Federated systems | Cloud clusters, CDNs, P2P networks |
Where does blockchain fit? A public blockchain is both distributed (data and computation are on many nodes) and decentralized (no single owner controls those nodes). A cloud application is distributed but not decentralized.
Key Takeaways
- Distributed = many machines cooperating by messages; it says nothing about who controls them.
- Distributed systems face concurrency, clock and partial-failure challenges (CAP theorem).
- Public blockchains are distributed and decentralized.
Question / Answer (15 questions)
MCQ Test : Check Your Understanding (5 questions)
Select an option and press Check Answer, or answer all questions and press Submit Test to see your score. Each answer comes with an explanation.
Bibliography/References
The notes, questions and MCQs on this page are original explanations written for this course. The works listed below were consulted and are cited for attribution and further reading. Product names, logos and trademarks belong to their respective owners. Short quotations, where used, are marked and attributed.
- Investopedia. (n.d.). Distributed Applications (dApps). https://www.investopedia.com/terms/d/distributed-applications-apps.asp
- van Steen, M., & Tanenbaum, A. S. (2017). Distributed Systems (3rd ed.). distributed-systems.net. https://www.distributed-systems.net/
- Gilbert, S., & Lynch, N. (2002). Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services. ACM SIGACT News, 33(2), 51–59. https://doi.org/10.1145/564585.564601
- Lamport, L., Shostak, R., & Pease, M. (1982). The Byzantine Generals Problem. ACM Transactions on Programming Languages and Systems, 4(3), 382–401. https://doi.org/10.1145/357172.357176
- Yaga, D., Mell, P., Roby, N., & Scarfone, K. (2018). Blockchain Technology Overview (NISTIR 8202). National Institute of Standards and Technology. https://doi.org/10.6028/NIST.IR.8202