What is a distributed system? A network of processes. The nodes are processes, and the edges are communication channels
Examples Large networks are very commonplace these days. Think of the world wide web. Other examples are: - KaZaA - BitTorrent - MySpace - Sensor networks - Process control networks - Computational grids ( learn about Teragrid, )
Goal Most often, the application layers of the processes interact with one another to meet a global objective. At times, the results are applicable to other layers of networking too (like TCP implementing a reliable end-to-end communication channel, or the media access protocol used in Ethernet LAN)
Why distributed systems Geographic distribution of processes Resource sharing as used in P2P networks Computation speed up (as in a grid) Fault tolerance
Important services Internet banking Web search (to “google”) Net meeting Distance education Video distribution Internet auction Google earth Google sky Publish subscribe Misc serives: check what flightaware.com does.
Important issues Knowledge is local Clocks are not synchronized No shared address space Topology and routing Scalability Fault tolerance
Some common subproblems Leader election Mutual exclusion Time synchronization Distributed snapshot Replica management
Implementation Practical distributed systems must have a real network as its backbone. However, such systems can be simulated on a shared-memory multiprocessor, or even on a uniprocessor. (How will you do it?)
A classification Client-server modelPeer-to-peer model Server Clients
Parallel vs Distributed In both parallel and distributed systems, the events are partially ordered. In parallel systems, the primarily issue is speed-up In distributed systems the primary issues are fault-tolerance and availability of services