Lecture 2
Lecture 2
Distributed Systems?
The decision to use parallel and distributed systems depends on the requirements,
constraints, and goals of the task. Here's a breakdown of why you might use them—and
why you might not.
Why Use Parallel and Distributed
Systems?
1 Increased Performance and Speed
Parallel Computing: By dividing a task into smaller subtasks that run simultaneously,
computations are completed much faster. For example, GPUs perform tasks like deep learning
or 3D rendering at lightning speed.
Distributed Computing: Large tasks (e.g., analyzing massive datasets) can be split
among multiple computers working together, significantly reducing execution time.
2 Scalability
Distributed systems can handle growing workloads by adding more nodes.
This is ideal for cloud applications or data processing frameworks like Apache Hadoop or
Spark.
Why Use Parallel and Distributed
Systems?
3 Fault Tolerance and Reliability
In distributed systems, if one node fails, others can continue working, ensuring
uninterrupted service. This makes systems more robust.
4 Resource Utilization
Parallel systems maximize the use of all available cores or processors, while distributed
systems leverage underutilized machines (e.g., in a network) to perform useful work.
Why Use Parallel and Distributed
Systems?
5 Cost Efficiency
Distributed systems like cloud computing reduce the need for expensive,
high-performance single machines by using many commodity machines.
For example, Google’s search engine runs on distributed systems using
relatively inexpensive hardware.
6 Flexibility
Distributed systems can span geographically dispersed resources, enabling global
applications like streaming services (Netflix) or multiplayer online games.
Why Use Parallel and Distributed
Systems?
7 Support for Complex Tasks
• Many real-world problems (e.g., weather simulation, drug discovery, big data analytics)
require computational power that a single machine cannot handle efficiently.
Why NOT Use Parallel and Distributed
Systems?
1 Complexity in Design and Development
Designing algorithms for parallel and distributed systems is challenging.
Tasks need to be broken into smaller pieces, and managing inter-process
communication or synchronization can be error-prone.
2 Communication Overhead
Distributed systems rely on network communication between nodes,
which introduces latency and overhead. For small tasks, this can outweigh the benefits.
Why NOT Use Parallel and Distributed
Systems?
3 Cost of Maintenance
Maintaining distributed systems, especially large clusters,
requires skilled personnel and advanced tools, which can be expensive.
4 Debugging Difficulties
Debugging parallel or distributed systems is harder due to the asynchronous
nature of tasks and potential race conditions, deadlocks, or message losses.
Why NOT Use Parallel and Distributed
Systems?
5 Not Suitable for All Problems
Some tasks are inherently sequential and cannot be easily parallelized
(e.g., calculating the Fibonacci sequence iteratively). In such cases,
these systems add unnecessary complexity.