Lecture Notes for Client-Server Interfaces

21 January 2003 - Distributed Computing


  1. parallel, concurrent, distributed computing -

  2. distributed computing - independent computations coordinated to solve a problem

    1. independent - no resource sharing; limited communications

    2. computation - processes, threads

    3. coordinated - communications, either data or control or both

  3. why do it

    1. because we can - cheap hardware and widespread communication at low cost

    2. increased reliability - replication, redundancy

    3. increased autonomy - local control over local resources

    4. increased performance - unlimited resources, parallelism

    5. high modularity - upgrades and maintenance

  4. why not do it

    1. it's hard - most of the features above are wishful thinking

    2. failure modes - many and complex; can easily drive programs into unexpected failures

    3. variable and unpredictable environment

      1. detecting problems - down or slow

      2. compensating for problems - partitioning

      3. recovering from problems - merging independent executions

    4. conceptually under-nourished

      1. rpc is an early 80s idea

      2. language support is minimal - type safety, versioning

      3. os support is minimal - coordination toolkits

    5. performance - latency and load balancing

    6. unhelpful standards

      1. true standards are low level - tcp/ip

      2. higher level standards are quasi and, um, pragmatic - corba, xml-soap

        1. aren't that high level, either - location, rpc

  5. distributed-computing patterns

    1. graph representations - nodes as computation; arcs as communication; n-to-m patterns

    2. master-slave - simple communications patterns; one-to-many

    3. peer-peer - highly distributed; many-to-many

    4. client-server - conceptually simple; one-to-one

    5. publish-subscribe - simple and dynamic; many-to-many

  6. distributed computing examples

    1. scientific computation - seti@home, beowulf

      1. many cpus, massive parallelism

    2. data-access computations - dns

      1. improved reliability, performance

    3. monitoring and coordination - factory automation

      1. sensors, actuators, brains


This page last modified on 20 January 2003.