What is a distributed system?
Definition
A distributed system is a collection of autonomous computing elements that appears to its users as a single coherent system.
Characteristic features
Autonomous computing elements are also referred to as nodes.
Single coherent system: users or applications perceive a single system: nodes need to collaborate. The collection of nodes as a whole operates the same, no matter where, when, and how the interaction between a user and the system takes place.
Organization
Each node in the collection communicates only with other nodes in the system, its neighbors. The set of neighbors may be dynamic, or may even be known only implicitly (i.e., requires a lookup).
A well-known example of overlay networks: is peer-to-peer systems.
Structured: each node has a well-defined set of neighbors with whom it can communicate (tree, ring).
Unstructured: each node has references to randomly selected other nodes from the system.
Middleware: the OS of distributed systems
It contains commonly used components and functions that need not be implemented by applications separately.
Typical middleware services
Communication
Transactions
Service composition
Reliability
Design Goals
Support sharing of resources
Cloud-based shared storage and files, Peer-to-peer assisted multimedia streaming, etc..
Distribution transparency
Distribution Transparency Types
Access: Hide differences in data representation and how an object is accessed.
Location: Hide where an object is located.
Relocation: Hide that an object may be moved to another location while in use.
Concurrency: Hide that an object may be shared by several independent users.
Replication: Hide that an object is replicated.
Failure: Hide the failure and recovery of an object.
Openness
it means conforming to well-defined interfaces, being easily interoperable, supporting the portability of applications, and being easily extensible.
Scalability
It has 3 types:
Size scalability: it includes the number of users and/or processes.
Geographical scalability: maximum distance between nodes.
Administrative scalability: number of administrative domains.
Pitfalls of Developing Distributed Systems
False (and often hidden) assumptions:
The network is reliable.
The network is secure.
Latency is zero.
Bandwidth is infinite.
Transport cost is zero.
There is one administrator.
Types of Distributed Systems
High-performance distributed computing
It is the use of parallel processing for running advanced application programs efficiently, and quickly.
Systems Distributed information systems
Distributed systems for pervasive computing
Ubiquitous systems: devices are networked, distributed, and accessible in a transparent manner, interaction between users and devices is highly unobtrusive, the system is aware of a user’s context to optimize interaction, devices operate autonomously without human intervention and are thus highly self-managed, and the system as a whole can handle a wide range of dynamic actions and interactions.
Mobile computing: smartphones, tablets, GPS devices, remote controls, active badges. It implies that a device’s location is expected to change over time.
Sensor networks: The nodes to which sensors are attached are many (10s-1000s), simple (small memory/compute/communication capacity), and often battery-powered (or even battery-less).
Thank you, and goodbye!