#Lecture 1#
##Distributed Systems##
A system in which hardware or software components located at networked computers communicate and coordinate their actions only by message passing
A distributed system is a collection of independent computers that appear to the users of the system as a single computer.
A distributed system is a collection of autonomous computers linked by a network with software designed to produce an integrated computing facility.
##Distributed Systems vs Computer Networks## Computer Network: An interconnected collection of autonomous computers able to exchange messages based on protocols. Network entities are visible and they are explicitly addressed (IP address). Networks focuses on packets and routing.
Distributed System: existence of multiple autonomous computers is transparent to the user. Distributed systems focus on applications.
##Characteristics##
- Parallel activities - Autonomous components executing concurrent tasks
- Communication via message passing - No shared memory
- Resource sharing - Printer, database, other services
- No global state - No single process can have knowledge of the current global state of the system
- No global clock - Only limited precision for processes to synchronise their clocks
##Design Challenges##
- Heterogeneity
- Openness
- Security
- Scalability
- Fault tolerance
- Concurrency
- Transparency
###Heterogeneity### Variety and Difference
- Computer hardware
- Operating Systems
- Communication Architectures
- Programming Languages
Solution?: Middleware: Additional software layer to mask heterogeneity.
###Openness### The characteristic that determines whether the system can be extended and re-implemented in various ways
- Every services is equally accessible to every client (local or remote)
- It is easy to implement, install and debug new services.
- Users can write and install their own services.
- Standard interfaces and protocols (internet communication protocol) should be published.
###Security### Security of information resource
- Confidentiality - Protection against disclosure to unauthorised individuals
- Integrity - Protection against alteration or corruption
- Availability - Protection against loss of access whether circumstantial or a malicious denial of service attack
###Scalability### The system should remain efficient even with a significant increase in the number of users and resources connected
- Control performance loss (number of users & resources should be controlled)
- Avoiding performance bottlenecks
- Preventing software resources running out
###Failure Handling### Failures in DS are partial (some component fails while others continue to function)
- Detection - Checksums are used to detect corrupted data in a message/file
- Masking/hiding - Failed message retransmission. Data can be written to a pair of disks so that if one is corrupted, the other may still be correct
- Tolerance - Exception handling (e.g., timeouts when waiting for a web resource)
- Redundancy - Redundant routes in network
###Concurrency### Handling several simultaneous requests for a resource
- Shared objects/resources must guarantee correctness in a concurrent environment
- Synchronisation is required
###Transparency###
##Fallacies##
- The network is reliable
- Latency is zero
- Bandwidth is infinite
- The network is secure
- The topology doesn’t change
- There is one administrator
- Transport cost is zero
- The network is homogenous