This is the fourth edition of “Distributed Systems.” We have stayed close to the setup of the third edition, including examples of (part of) existing distributed systems close to where general principles are discussed. For example, we have included material on blockchain systems, and discuss their various components throughout the book. We have, again, used special boxed sections for material that can be skipped at first reading.
The text has been thoroughly reviewed, revised, and updated. In particular, all the Python code has been updated to Python3, while at the same time the channel package has been almost completely revised and simplified.
Additional material, including coding examples, figures, and slides, are available at www.distributed-systems.net.
Author(s): Maarten van Steen, Andrew S. Tanenbaum
Edition: 4.01
Publisher: Maarten van Steen
Year: 2023
Language: English
Pages: 683
Preface
Introduction
From networked systems to distributed systems
Distributed versus decentralized systems
Why making the distinction is relevant
Studying distributed systems
Design goals
Resource sharing
Distribution transparency
Openness
Dependability
Security
Scalability
A simple classification of distributed systems
High-performance distributed computing
Distributed information systems
Pervasive systems
Pitfalls
Summary
Architectures
Architectural styles
Layered architectures
Service-oriented architectures
Publish-subscribe architectures
Middleware and distributed systems
Middleware organization
Modifiable middleware
Layered-system architectures
Simple client-server architecture
Multitiered Architectures
Example: The Network File System
Example: The Web
Symmetrically distributed system architectures
Structured peer-to-peer systems
Unstructured peer-to-peer systems
Hierarchically organized peer-to-peer networks
Example: BitTorrent
Hybrid system architectures
Cloud computing
The edge-cloud architecture
Blockchain architectures
Summary
Processes
Threads
Introduction to threads
Threads in distributed systems
Virtualization
Principle of virtualization
Containers
Comparing virtual machines and containers
Application of virtual machines to distributed systems
Clients
Networked user interfaces
Virtual desktop environment
Client-side software for distribution transparency
Servers
General design issues
Object servers
Example: The Apache Web server
Server clusters
Code migration
Reasons for migrating code
Models for code migration
Migration in heterogeneous systems
Summary
Communication
Foundations
Layered Protocols
Types of Communication
Remote procedure call
Basic RPC operation
Parameter passing
RPC-based application support
Variations on RPC
Message-oriented communication
Simple transient messaging with sockets
Advanced transient messaging
Message-oriented persistent communication
Example: Advanced Message Queuing Protocol (AMQP)
Multicast communication
Application-level tree-based multicasting
Flooding-based multicasting
Gossip-based data dissemination
Summary
Coordination
Clock synchronization
Physical clocks
Clock synchronization algorithms
Logical clocks
Lamport's logical clocks
Vector clocks
Mutual exclusion
Overview
A centralized algorithm
A distributed algorithm
A token-ring algorithm
A decentralized algorithm
Example: Simple locking with ZooKeeper
Election algorithms
The bully algorithm
A ring algorithm
Example: Leader election in ZooKeeper
Example: Leader election in Raft
Elections in large-scale systems
Elections in wireless environments
Gossip-based coordination
Aggregation
A peer-sampling service
Gossip-based overlay construction
Secure gossiping
Distributed event matching
Centralized implementations
Secure publish-subscribe solutions
Location systems
GPS: Global Positioning System
When GPS is not an option
Logical positioning of nodes
Summary
Naming
Names, identifiers, and addresses
Flat naming
Simple solutions
Home-based approaches
Distributed hash tables
Hierarchical approaches
Secure flat naming
Structured naming
Name spaces
Name resolution
The implementation of a name space
Example: The Domain Name System
Example: The Network File System
Attribute-based naming
Directory services
Hierarchical implementations: LDAP
Decentralized implementations
Named-data networking
Basics
Routing
Security in named-data networking
Summary
Consistency and replication
Introduction
Reasons for replication
Replication as scaling technique
Data-centric consistency models
Consistent ordering of operations
Eventual consistency
Continuous consistency
Client-centric consistency models
Monotonic reads
Monotonic writes
Read your writes
Writes follow reads
Example: client-centric consistency in ZooKeeper
Replica management
Finding the best server location
Content replication and placement
Content distribution
Managing replicated objects
Consistency protocols
Sequential consistency: Primary-based protocols
Sequential consistency: Replicated-write protocols
Cache-coherence protocols
Implementing continuous consistency
Implementing client-centric consistency
Example: Caching and replication in the Web
Summary
Fault tolerance
Introduction to fault tolerance
Basic concepts
Failure models
Failure masking by redundancy
Process resilience
Resilience by process groups
Failure masking and replication
Consensus in faulty systems with crash failures
Example: Paxos
Consensus in faulty systems with arbitrary failures
Consensus in blockchain systems
Some limitations on realizing fault tolerance
Failure detection
Reliable client-server communication
Point-to-point communication
RPC semantics in the presence of failures
Reliable group communication
Introduction
Scalability in reliable multicasting
Atomic multicast
Distributed commit
Recovery
Introduction
Checkpointing
Message logging
Summary
Security
Introduction to security
Security threats, policies, and mechanisms
Design issues
Cryptography
Basics
Symmetric and asymmetric cryptosystems
Hash functions
Key management
Authentication
Introduction to authentication
Authentication protocols
Trust in distributed systems
Trust in the face of Byzantine failures
Trusting an identity
Trusting a system
Authorization
General issues in access control
Attribute-based access control
Delegation
Decentralized authorization: an example
Monitoring
Firewalls
Intrusion detection: basics
Collaborative intrusion detection
Summary
Index
Bibliography
Glossary
B
C
D
E
F
G
H
I
L
M
O
P
R
S
T
V