Distributed Computing
- Intro
- What is distributed computing? [Buyya, vol 2, p. 249]
- What is a distributed system?
- Comparison between:
- network computing
- distributed computing
- cluster computing
- parallel computing
- Theoretical distributed computing
- Process algebra
- Pi-calculus
- Erlang
- Designed for concurrent distributed computing
- Invoking functions: Module:Function(Arguments)
- Defining functions:
foo( X ) -> X1;
foo( Y ) -> Y1.
- SSA
- Pattern matching
- Empty variable is bound
- Bound variable is matched
- Modules
- Lists and tuples
- Dictionaries (finite maps) [Erlang, 4.4]
- Concurrency
- Mutual exclusion
- Synchronization
- Deadlocks
- Concurrent objects
- Distributed objects
- Introspection (or object capability publication)
- Message passing
- Data marshaling (serialization/deserialization)
- RPC
- Promises [Erlang, 11.5]
- Easy to implement using concurrent process
- Distributed shared memory
- Group communication (process groups; multicasting [Erlang, 11.6])
- Tuple spaces [Buyya, vol 2, Ch9]
- Tuple reading uses unification pattern matching
- Agent computing
- Migratory processes can be moved after they have started
- Problem of message chasing an agent
- Parallel evaluation [Erlang, 11.10]
- Load balancing
- Erlang: statistics(run_queue).
- Adaptive load distribution [Erlang, 11.8]
- Persistence
- Clusters