Glossary Term
Distributed computing
Introduction and Overview of Distributed Computing
- Distributed system components are located on different networked computers.
- Components communicate and coordinate their actions by passing messages.
- Distributed computing is a field of computer science that studies distributed systems.
- Challenges of distributed systems include maintaining concurrency, overcoming the lack of a global clock, and managing independent failures.
- When a component fails, the entire system does not fail.
- Distributed systems are groups of networked computers with a common work goal.
- Concurrent computing, parallel computing, and distributed computing have overlap.
- Parallel computing is tightly coupled, while distributed computing is loosely coupled.
- In parallel computing, processors have shared memory, while in distributed computing, each processor has its own memory.
- Distributed systems are represented as a network topology, while parallel systems have direct access to shared memory.
History and Evolution of Distributed Computing
- Concurrent processes communicating through message-passing originated in the 1960s.
- Local-area networks like Ethernet were the first widespread distributed systems.
- ARPANET, the predecessor of the Internet, introduced in the late 1960s.
- ARPANET e-mail was an early large-scale distributed application.
- Distributed computing became its own branch of computer science in the late 1970s and early 1980s.
- Andrews (2000) discusses the historical development of distributed computing.
- Banks (2012) provides insights into the secret history of the internet and its founders.
- Tel (2000) explores the evolution and advancements of distributed algorithms.
- Ohlídal et al. (2006) discuss the application of evolutionary computing in distributed systems.
- Real Time and Distributed Computing Systems (PDF) provides an overview of distributed computing systems.
Architectures and Models in Distributed Computing
- Hardware and software architectures are used for distributed computing.
- CPUs are interconnected with networks at a lower level.
- Processes running on CPUs are interconnected with communication systems at a higher level.
- Distributed programming falls into architectures like client-server, three-tier, and peer-to-peer.
- Architectures can be categorized as loose coupling or tight coupling.
- Parallel algorithms in shared-memory model allow all processors to access a shared memory.
- The parallel random-access machine (PRAM) model is commonly used.
- Shared-memory programs can be extended to distributed systems with communication encapsulation.
- Parallel algorithms in message-passing model involve designing the network structure and program execution for each computer.
- Boolean circuits and sorting networks are used in this model.
Applications and Use Cases of Distributed Computing
- Distributed systems are used when data needs to be shared between multiple computers in different locations.
- They allow for larger storage, faster compute, and higher bandwidth than a single machine.
- Distributed systems provide more reliability as there is no single point of failure.
- They are easier to expand and manage compared to a monolithic uniprocessor system.
- Using a cluster of low-end computers can be more cost-efficient than a single high-end computer.
- Vigna and Casey (2015) explore the impact of cryptocurrencies and blockchain on distributed computing.
- Quang Hieu Vu et al. (2010) discuss the principles and applications of peer-to-peer computing.
- Lind and Alm (2006) present a database-centric virtual chemistry system for distributed computing.
- Chiu (1990) proposes a model for optimal database allocation in distributed computing systems.
- Elmasri and Navathe (2000) provide an overview of distributed database systems.
Algorithms, Techniques, and Challenges in Distributed Computing
- Lynch (1996) describes the fundamentals of distributed computing.
- Peleg (2000) provides an introduction to distributed systems.
- Ghosh (2007) discusses the challenges and benefits of distributed computing.
- Keidar (2008) explores the concepts and principles of distributed algorithms.
- Papadimitriou (1994) presents a comprehensive overview of distributed computing.
- Andrews (2000) discusses various algorithms and techniques used in distributed computing.
- Arora and Barak (2009) explore the trade-offs between bit, message, and time complexity in distributed algorithms.
- Cormen, Leiserson, and Rivest (1990) discuss distributed algorithms and their complexities.
- Herlihy and Shavit (2008) provide in-depth coverage of concurrent programming and synchronization in distributed systems.
- Lynch (1996) discusses the challenges and future directions in distributed computing.