KTU Distributed Computing Class Notes
KTU Distributed Computing Class Notes
Distributed computing systems aim to make a network of computers function as a single coherent system. This is achieved through allowing components to communicate and coordinate by passing messages. Goals such as scalability, fault tolerance, and resource sharing enhance system functionality by improving performance, ensuring reliability, and enabling efficient use of shared resources .
In distributed systems, the client-server model involves a central server providing resources and services to multiple clients, which simplifies control and management. The peer-to-peer model, however, consists of nodes (peers) that are functionally equivalent, allowing direct resource sharing without a centralized authority. This decentralization enhances scalability and fault tolerance but increases complexity in consistency and coordination .
Fault tolerance in distributed systems is enhanced through redundancy, which involves replicating components and services so that failures do not impact the entire system. Checkpointing aids in recovery by saving system state periodically, enabling systems to restart from the last checkpoint in case of failure, thereby minimizing data loss and downtime .
Consensus algorithms like Paxos and Raft are crucial in ensuring consistency across distributed systems by facilitating agreement on a single data value among distributed processes. They handle component failures and network issues, ensuring that even in adverse conditions, all processes reach a consistent state, which is essential for maintaining integrity and reliability .
Distributed file systems maintain transparency by abstracting the complexities of file location from users, providing a seamless interface regardless of the physical storage location. Fault tolerance is ensured through replication, where multiple copies of data are maintained across different nodes, allowing the system to handle failures without data loss or disruption in service .
Remote procedure calls (RPC) and remote method invocation (RMI) enable communication in distributed systems by allowing a program to execute code or methods on a remote system as if they were local. RPC focuses on procedural calls across machines, while RMI extends this concept to object-oriented methods, supporting more complex interaction models .
Strong consistency ensures operations are completed and seen in the same order across the system. Weak consistency relaxes these constraints, allowing systems to read stale data temporarily. Eventual consistency, a subset of weak consistency, ensures that despite temporary inconsistencies, the system will converge to a consistent state over time, which is often sufficient for many real-world applications .
Cloud computing platforms significantly enhance the scalability and reliability of distributed systems by providing on-demand resources and redundancy. Platforms like AWS, Azure, and Google Cloud scale easily to accommodate varying workloads and provide built-in fault-tolerant mechanisms, ensuring high availability and data integrity, which are critical for modern applications .
The absence of a global clock in distributed systems means that there is no single time reference for all components, which complicates coordination and synchronization. Logical clocks, such as Lamport timestamps, and vector clocks are used to order events and ensure proper sequence in executing actions across distributed components .
Load balancing is challenging in distributed systems due to the variability in demand and resource availability, as well as the independent failure of components. Techniques such as dynamic load distribution, round-robin, and least-connections strategies are employed to distribute workload evenly across system components to prevent overload and optimize resource utilization .