Definition of a distributed system:
A distributed system is a collection of independent computers
that appears to its users as a single coherent (connected) system.
| Hardware: Easy to expand and scale (independant
computers), |
| Software: Users and applications interact with a
distributed system in a uniform way. |
Distributed systems uses
middleware between the
different operating systems and the distributed applications.
Goals:
| Easy access for users to remote resources |
| Transparency (able to present itself as if it is a
single computer) |
| Openness (interoperability, portability ) |
| Scalability (size, geographically and
administratively)(distributing, replication/caching and hiding
communication latencies) |
Hardware concepts:
| Multiprocessors (all CPUs have direct access to the
shared memory) |
| Homo/Hetero Multicomputer (each CPU has direct
connection with its own local memory) |
Software concepts:
| 1: Distributed operating systems (uniprocessor,
multiprocessor and multicomputer). Same OS distributed on the different
machines. Communicating with messages. CLOSED. |
| 2: Network Operating systems (collection of
uniprocessor systems, each with its own OS). rlogin. communicating
with shared files. OPEN |
NEITHER OF THESE TWO QUALIFIES AS DITRIBUTED SYSTEMS.
WE NEED AN ADITIONAL LAYER OF SOFTWARE!!
Middleware:
Sits between the application and the operating software.
| Middleware models: 1: All IO as keyboard are
treated like files (UNIX), 2:
RPC(remote
procedure call), 3:
Distributed
objects. |
| Middleware services: naming, persistence (storage),
distributed transactions (multiple read and write automatically), its
OPEN(interfaces are complete). |
The client-server model:
| Client: A process that requests a service from a server
by sending and then waiting. |
| Server: A process implementing a specific service
like a file system service or a database service. |
Application layering:
| User interface level |
| Processing level (core functionality of an application) |
| Data level (database) |
Cient-server architectures:
| Client machine only containing the programs
implementing the user-interface level |
| A server machine with the programs implementing the
processing and datalevel |
| Multitired Architectures (GUI, Application and database
divided not stricktly in 3). Vertical. |
| Horizontal distribution (webservers replicated across
several machines) |
|