| |
| |
Preface | |
| |
| |
| |
Introduction | |
| |
| |
| |
Definition of a Distributed System | |
| |
| |
| |
Goals | |
| |
| |
| |
Making Resources Accessible | |
| |
| |
| |
Distribution Transparency | |
| |
| |
| |
Openness | |
| |
| |
| |
Scalability | |
| |
| |
| |
Pitfalls | |
| |
| |
| |
Types of Distributed Systems | |
| |
| |
| |
Distributed Computing Systems | |
| |
| |
| |
Distributed Information Systems | |
| |
| |
| |
Distributed Pervasive Systems | |
| |
| |
| |
Summary | |
| |
| |
| |
Architectures | |
| |
| |
| |
Architectural Styles | |
| |
| |
| |
System Architectures | |
| |
| |
| |
Centralized Architectures | |
| |
| |
| |
Decentralized Architectures | |
| |
| |
| |
Hybrid Architectures | |
| |
| |
| |
Architectures Versus Middleware | |
| |
| |
| |
Interceptors | |
| |
| |
| |
General Approaches to Adaptive Software | |
| |
| |
| |
Discussion | |
| |
| |
| |
Self-Management in Distributed Systems | |
| |
| |
| |
The Feedback Control Model | |
| |
| |
| |
Example: Systems Monitoring with Astrolabe | |
| |
| |
| |
Example: Differentiating Replication Strategies in Globule | |
| |
| |
| |
Example: Automatic Component Repair Management in Jade | |
| |
| |
| |
Summary | |
| |
| |
| |
Processes | |
| |
| |
| |
Threads | |
| |
| |
| |
Introduction to Threads | |
| |
| |
| |
Threads in Distributed Systems | |
| |
| |
| |
Virtualization | |
| |
| |
| |
The Role of Virtualization in Distributed Systems | |
| |
| |
| |
Architectures of Virtual Machines | |
| |
| |
| |
Clients | |
| |
| |
| |
Networked User Interfaces | |
| |
| |
| |
Client-Side Software for Distribution Transparency | |
| |
| |
| |
Servers | |
| |
| |
| |
General Design Issues | |
| |
| |
| |
Server Clusters | |
| |
| |
| |
Managing Server Clusters | |
| |
| |
| |
Code Migration | |
| |
| |
| |
Approaches to Code Migration | |
| |
| |
| |
Migration and Local Resources | |
| |
| |
| |
Migration in Heterogeneous Systems | |
| |
| |
| |
Summary | |
| |
| |
| |
Communication | |
| |
| |
| |
Fundamentals | |
| |
| |
| |
Layered Protocols | |
| |
| |
| |
Types of Communication | |
| |
| |
| |
Remote Procedure Call | |
| |
| |
| |
Basic RPC Operation | |
| |
| |
| |
Parameter Passing | |
| |
| |
| |
Asynchronous RPC | |
| |
| |
| |
Example: DCE RPC | |
| |
| |
| |
Message-Oriented Communication | |
| |
| |
| |
Message-Oriented Transient Communication | |
| |
| |
| |
Message-Oriented Persistent Communication | |
| |
| |
| |
Example: IBM's WebSphere Message-Queuing System | |
| |
| |
| |
Stream-Oriented Communication | |
| |
| |
| |
Support for Continuous Media | |
| |
| |
| |
Streams and Quality of Service | |
| |
| |
| |
Stream Synchronization | |
| |
| |
| |
Multicast Communication | |
| |
| |
| |
Application-Level Multicasting | |
| |
| |
| |
Gossip-Based Data Dissemination | |
| |
| |
| |
Summary | |
| |
| |
| |
Naming | |
| |
| |
| |
Names, Identifiers, and Addresses | |
| |
| |
| |
Flat Naming | |
| |
| |
| |
Simple Solutions | |
| |
| |
| |
Home-Based Approaches | |
| |
| |
| |
Distributed Hash Tables | |
| |
| |
| |
Hierarchical Approaches | |
| |
| |
| |
Structured Naming | |
| |
| |
| |
Name Spaces | |
| |
| |
| |
Name Resolution | |
| |
| |
| |
The Implementation of a Name Space | |
| |
| |
| |
Example: The Domain Name System | |
| |
| |
| |
Attribute-Based Naming | |
| |
| |
| |
Directory Services | |
| |
| |
| |
Hierarchical Implementations: LDAP | |
| |
| |
| |
Decentralized Implementations | |
| |
| |
| |
Summary | |
| |
| |
| |
Synchronization | |
| |
| |
| |
Clock Synchronization | |
| |
| |
| |
Physical Clocks | |
| |
| |
| |
Global Positioning System | |
| |
| |
| |
Clock Synchronization Algorithms | |
| |
| |
| |
Logical Clocks | |
| |
| |
| |
Lamport's Logical Clocks | |
| |
| |
| |
Vector Clocks | |
| |
| |
| |
Mutual Exclusion | |
| |
| |
| |
Overview | |
| |
| |
| |
A Centralized Algorithm | |
| |
| |
| |
A Decentralized Algorithm | |
| |
| |
| |
A Distributed Algorithm | |
| |
| |
| |
A Token Ring Algorithm | |
| |
| |
| |
A Comparison of the Four Algorithms | |
| |
| |
| |
Global Positioning of Nodes | |
| |
| |
| |
Election Algorithms | |
| |
| |
| |
Traditional Election Algorithms | |
| |
| |
| |
Elections in Wireless Environments | |
| |
| |
| |
Elections in Large-Scale Systems | |
| |
| |
| |
Summary | |
| |
| |
| |
Consistency and Replication | |
| |
| |
| |
Introduction | |
| |
| |
| |
Reasons for Replication | |
| |
| |
| |
Replication as Scaling Technique | |
| |
| |
| |
Data-Centric Consistency Models | |
| |
| |
| |
Continuous Consistency | |
| |
| |
| |
Consistent Ordering of Operations | |
| |
| |
| |
Client-Centric Consistency Models | |
| |
| |
| |
Eventual Consistency | |
| |
| |
| |
Monotonic Reads | |
| |
| |
| |
Monotonic Writes | |
| |
| |
| |
Read Your Writes | |
| |
| |
| |
Writes Follow Reads | |
| |
| |
| |
Replica Management | |
| |
| |
| |
Replica-Server Placement | |
| |
| |
| |
Content Replication and Placement | |
| |
| |
| |
Content Distribution | |
| |
| |
| |
Consistency Protocols | |
| |
| |
| |
Continuous Consistency | |
| |
| |
| |
Primary-Based Protocols | |
| |
| |
| |
Replicated-Write Protocols | |
| |
| |
| |
Cache-Coherence Protocols | |
| |
| |
| |
Implementing Client-Centric Consistency | |
| |
| |
| |
Summary | |
| |
| |
| |
Fault Tolerance | |
| |
| |
| |
Introduction to Fault Tolerance | |
| |
| |
| |
Basic Concepts | |
| |
| |
| |
Failure Models | |
| |
| |
| |
Failure Masking by Redundancy | |
| |
| |
| |
Process Resilience | |
| |
| |
| |
Design Issues | |
| |
| |
| |
Failure Masking and Replication | |
| |
| |
| |
Agreement in Faulty Systems | |
| |
| |
| |
Failure Detection | |
| |
| |
| |
Reliable Client-Server Communication | |
| |
| |
| |
Point-to-Point Communication | |
| |
| |
| |
RPC Semantics in the Presence of Failures | |
| |
| |
| |
Reliable Group Communication | |
| |
| |
| |
Basic Reliable-Multicasting Schemes | |
| |
| |
| |
Scalability in Reliable Multicasting | |
| |
| |
| |
Atomic Multicast | |
| |
| |
| |
Distributed Commit | |
| |
| |
| |
Two-Phase Commit | |
| |
| |
| |
Three-Phase Commit | |
| |
| |
| |
Recovery | |
| |
| |
| |
Introduction | |
| |
| |
| |
Checkpointing | |
| |
| |
| |
Message Logging | |
| |
| |
| |
Recovery-Oriented Computing | |
| |
| |
| |
Summary | |
| |
| |
| |
Security | |
| |
| |
| |
Introduction to Security | |
| |
| |
| |
Security Threats, Policies, and Mechanisms | |
| |
| |
| |
Design Issues | |
| |
| |
| |
Cryptography | |
| |
| |
| |
Secure Channels | |
| |
| |
| |
Authentication | |
| |
| |
| |
Message Integrity and Confidentiality | |
| |
| |
| |
Secure Group Communication | |
| |
| |
| |
Example: Kerberos | |
| |
| |
| |
Access Control | |
| |
| |
| |
General Issues in Access Control | |
| |
| |
| |
Firewalls | |
| |
| |
| |
Secure Mobile Code | |
| |
| |
| |
Denial of Service | |
| |
| |
| |
Security Management | |
| |
| |
| |
Key Management | |
| |
| |
| |
Secure Group Management | |
| |
| |
| |
Authorization Management | |
| |
| |
| |
Summary | |
| |
| |
| |
Distributed Object-Based Systems | |
| |
| |
| |
Architecture | |
| |
| |
| |
Distributed Objects | |
| |
| |
| |
Example: Enterprise Java Beans | |
| |
| |
| |
Example: Globe Distributed Shared Objects | |
| |
| |
| |
Processes | |
| |
| |
| |
Object Servers | |
| |
| |
| |
Example: The Ice Runtime System | |
| |
| |
| |
Communication | |
| |
| |
| |
Binding a Client to an Object | |
| |
| |
| |
Static versus Dynamic Remote Method Invocations | |
| |
| |
| |
Parameter Passing | |
| |
| |
| |
Example: Java RMI | |
| |
| |
| |
Object-Based Messaging | |
| |
| |
| |
Naming | |
| |
| |
| |
Corba Object References | |
| |
| |
| |
Globe Object References | |
| |
| |
| |
Synchronization | |
| |
| |
| |
Consistency and Replication | |
| |
| |
| |
Entry Consistency | |
| |
| |
| |
Replicated Invocations | |
| |
| |
| |
Fault Tolerance | |
| |
| |
| |
Example: Fault-Tolerant Corba | |
| |
| |
| |
Example: Fault-Tolerant Java | |
| |
| |
| |
Security | |
| |
| |
| |
Example: Globe | |
| |
| |
| |
Security for Remote Objects | |
| |
| |
| |
Summary | |
| |
| |
| |
Distributed File Systems | |
| |
| |
| |
Architecture | |
| |
| |
| |
Client-Server Architectures | |
| |
| |
| |
Cluster-Based Distributed File Systems | |
| |
| |
| |
Symmetric Architectures | |
| |
| |
| |
Processes | |
| |
| |
| |
Communication | |
| |
| |
| |
RPCs in NFS | |
| |
| |
| |
The RPC2 Subsystem | |
| |
| |
| |
File-Oriented Communication in Plan 9 | |
| |
| |
| |
Naming | |
| |
| |
| |
Naming in NFS | |
| |
| |
| |
Constructing a Global Name Space | |
| |
| |
| |
Synchronization | |
| |
| |
| |
Semantics of File Sharing | |
| |
| |
| |
File Locking | |
| |
| |
| |
Sharing Files in Coda | |
| |
| |
| |
Consistency and Replication | |
| |
| |
| |
Client-Side Caching | |
| |
| |
| |
Server-Side Replication | |
| |
| |
| |
Replication in Peer-to-Peer File Systems | |
| |
| |
| |
File Replication in Grid Systems | |
| |
| |
| |
Fault Tolerance | |
| |
| |
| |
Handling Byzantine Failures | |
| |
| |
| |
High Availability in Peer-to-Peer Systems | |
| |
| |
| |
Security | |
| |
| |
| |
Security in NFS | |
| |
| |
| |
Decentralized Authentication | |
| |
| |
| |
Secure Peer-to-Peer File-Sharing Systems | |
| |
| |
| |
Summary | |
| |
| |
| |
Distributed Web-Based Systems | |
| |
| |
| |
Architecture | |
| |
| |
| |
Traditional Web-Based Systems | |
| |
| |
| |
Web Services | |
| |
| |
| |
Processes | |
| |
| |
| |
Clients | |
| |
| |
| |
The Apache Web Server | |
| |
| |
| |
Web Server Clusters | |
| |
| |
| |
Communication | |
| |
| |
| |
Hypertext Transfer Protocol | |
| |
| |
| |
Simple Object Access Protocol | |
| |
| |
| |
Naming | |
| |
| |
| |
Synchronization | |
| |
| |
| |
Consistency and Replication | |
| |
| |
| |
Web Proxy Caching | |
| |
| |
| |
Replication for Web Hosting Systems | |
| |
| |
| |
Replication of Web Applications | |
| |
| |
| |
Fault Tolerance | |
| |
| |
| |
Security | |
| |
| |
| |
Summary | |
| |
| |
| |
Distributed Coordination-Based Systems | |
| |
| |
| |
Introduction to Coordination Models | |
| |
| |
| |
Architectures | |
| |
| |
| |
Overall Approach | |
| |
| |
| |
Traditional Architectures | |
| |
| |
| |
Peer-to-Peer Architectures | |
| |
| |
| |
Mobility and Coordination | |
| |
| |
| |
Processes | |
| |
| |
| |
Communication | |
| |
| |
| |
Content-Based Routing | |
| |
| |
| |
Supporting Composite Subscriptions | |
| |
| |
| |
Naming | |
| |
| |
| |
Describing Composite Events | |
| |
| |
| |
Matching Events and Subscriptions | |
| |
| |
| |
Synchronization | |
| |
| |
| |
Consistency and Replication | |
| |
| |
| |
Static Approaches | |
| |
| |
| |
Dynamic Replication | |
| |
| |
| |
Fault Tolerance | |
| |
| |
| |
Reliable Publish-Subscribe Communication | |
| |
| |
| |
Fault Tolerance in Shared Dataspaces | |
| |
| |
| |
Security | |
| |
| |
| |
Confidentiality | |
| |
| |
| |
Secure Shared Dataspaces | |
| |
| |
| |
Summary | |
| |
| |
| |
Suggestions for Further Reading and Bibliography | |
| |
| |
| |
Suggestions for Further Reading | |
| |
| |
| |
Introduction and General Works | |
| |
| |
| |
Architectures | |
| |
| |
| |
Processes | |
| |
| |
| |
Communication | |
| |
| |
| |
Naming | |
| |
| |
| |
Synchronization | |
| |
| |
| |
Consistency and Replication | |
| |
| |
| |
Fault Tolerance | |
| |
| |
| |
Security | |
| |
| |
| |
Distributed Object-Based Systems | |
| |
| |
| |
Distributed File Systems | |
| |
| |
| |
Distributed Web-Based Systems | |
| |
| |
| |
Distributed Coordination-Based Systems | |
| |
| |
| |
Alphabetical Bibliography | |
| |
| |
Index | |