Lecture Notes for Client-Server Interfaces
16 January 2001 - Distributed Computing
- distributed computing - independent computations coordinated to slove a
problem
- independent - no resource sharing; limited communications
- computation - processes, threads
- coordinated - communications, either data or control or both
- graph representations - nodes as computation; arcs as communication;
n-to-m patterns
- why do it
- because we can - cheap hardware and widespread communication at low
cost
- increased reliability - replication, redundancy
- increased autonomy - local control over local resources
- increased performance - unlimited resources, parallelism
- high modularity - upgrades and maintenence
- why not do it
- it's hard - most of the features above are wishful thinking
- failure modes - many and complex; can easily drive programs into
unexpected failures
- variable and unpredictable environment
- detecting problems - down or slow
- compensating for problems - partitioning
- recovering from problems - merging independent executions
- conceptually undernourished
- rpc is an early 80s idea
- language support is minimal - type safety, versioning
- os support is minimal - coordination toolkits
- performance - latency and load balancing
- no standards
- how to do it
- master-slave - simple communications patterns; one-to-many
- peer-peer - highly distributed; many-to-many
- client-server - conceptually simple; one-to-one
- publish-subscribe - simple and dynamic; many-to-many
This page last modified on 18 January 2001.