Distributed systems : principles and paradigms

Bibliographic Information

Distributed systems : principles and paradigms

Andrew S. Tanenbaum, Maarten van Steen

Pearson Prentice Hall, c2007

2nd ed

  • : pbk (International ed)

Search this Book/Journal
Note

Includes bibliographical reference (p. 623-668) and index

Description and Table of Contents

Description

For courses on Distributed Systems, Distributed Operating Systems, and Advanced Operating Systems focusing on distributed systems, found in departments of Computer Science, Computer Engineering and Electrical Engineering. Very few textbooks today explore distributed systems in a manner appropriate for university students. In this unique text, esteemed authors Tanenbaum and van Steen provide full coverage of the field in a systematic way that can be readily used for teaching. No other text examines the underlying principles - and their applications to a wide variety of practical distributed systems - with this level of depth and clarity.

Table of Contents

CONTENTS 1 INTRODUCTION 1.1 DEFINITION OF A DISTRIBUTED SYSTEM 1.2 GOALS 1.2.1 Making Resources Accessible 1.2.2 Distribution Transparency 1.2.3 Openness 1.2.4 Scalability 1.2.5 Pitfalls 1.3 TYPES OF DISTRIBUTED SYSTEMS 1.3.1 Distributed Computing Systems 1.3.2 Distributed Information Systems 1.3.3 Distributed Pervasive Systems 1.4 SUMMARY 2 ARCHITECTURES 2.1 ARCHITECTURAL STYLES 2.2 SYSTEM ARCHITECTURES 2.2.1 Centralized Architectures 2.2.2 Decentralized Architectures 2.2.3 Hybrid Architectures 2.3 ARCHITECTURES VERSUS MIDDLEWARE 2.3.1 Interceptors 2.3.2 General Approaches to Adaptive Software 2.3.3 Discussion 2.4 SELF-MANAGEMENT IN DISTRIBUTED SYSTEMS 2.4.1 The Feedback Control Model 2.4.2 Example: Systems Monitoring with Astrolabe 2.4.3 Example: Differentiating Replication Strategies in Globule 2.4.4 Example: Automatic Component Repair Management in Jade 2.5 SUMMARY 3 PROCESSES 3.1 THREADS 3.1.1 Introduction to Threads 3.1.2 Threads in Distributed Systems 3.2 VIRTUALIZATION 3.2.1 The Role of Virtualization in Distributed Systems 3.2.2 Architectures of Virtual Machines 3.3 CLIENTS 3.3.1 Networked User Interfaces 3.3.2 Client-Side Software for Distribution Transparency 3.4 SERVERS 3.4.1 General Design Issues 3.4.2 Server Clusters 3.4.3 Managing Server Clusters 3.5 CODE MIGRATION 3.5.1 Approaches to Code Migration 3.5.2 Migration and Local Resources 3.5.3 Migration in Heterogeneous Systems 3.6 SUMMARY 4 COMMUNICATION 4.1 FUNDAMENTALS 4.1.1 Layered Protocols 4.1.2 Types of Communication 4.2 REMOTE PROCEDURE CALL 4.2.1 Basic RPC Operation 4.2.2 Parameter Passing 4.2.3 Asynchronous RPC 4.2.4 Example: DCE RPC 4.3 MESSAGE-ORIENTED COMMUNICATION 4.3.1 Message-Oriented Transient Communication 4.3.2 Message-Oriented Persistent Communication 4.3.3 Example: IBM's WebSphere Message-Queuing System 4.4 STREAM-ORIENTED COMMUNICATION 4.4.1 Support for Continuous Media 4.4.2 Streams and Quality of Service 4.4.3 Stream Synchronization 4.5 MULTICAST COMMUNICATION 4.5.1 Application-Level Multicasting 4.5.2 Gossip-Based Data Dissemination 4.6 SUMMARY 5 NAMING 5.1 NAMES, IDENTIFIERS, AND ADDRESSES 5.2 FLAT NAMING 5.2.1 Simple Solutions 5.2.2 Home-Based Approaches 5.2.3 Distributed Hash Tables 5.2.4 Hierarchical Approaches 5.3 STRUCTURED NAMING 5.3.1 Name Spaces 5.3.2 Name Resolution 5.3.3 The Implementation of a Name Space 5.3.4 Example: The Domain Name System 5.4 ATTRIBUTE-BASED NAMING 5.4.1 Directory Services 5.4.2 Hierarchical Implementations: LDAP 5.4.3 Decentralized Implementations 5.5 SUMMARY 6 SYNCHRONIZATION 6.1 CLOCK SYNCHRONIZATION 6.1.1 Physical Clocks 6.1.2 Global Positioning System 6.1.3 Clock Synchronization Algorithms 6.2 LOGICAL CLOCKS 6.2.1 Lamport's Logical Clocks 6.2.2 Vector Clocks 6.3 MUTUAL EXCLUSION 6.3.1 Overview 6.3.2 A Centralized Algorithm 6.3.3 A Decentralized Algorithm 6.3.4 A Distributed Algorithm 6.3.5 A Token Ring Algorithm 6.3.6 A Comparison of the Four Algorithms 6.4 GLOBAL POSITIONING OF NODES 6.5 ELECTION ALGORITHMS 6.5.1 Traditional Election Algorithms 6.5.2 Elections in Wireless Environments 6.5.3 Elections in Large-Scale Systems 6.6 SUMMARY 7 CONSISTENCY AND REPLICATION 7.1 INTRODUCTION 7.1.1 Reasons for Replication 7.1.2 Replication as Scaling Technique 7.2 DATA-CENTRIC CONSISTENCY MODELS 7.2.1 Continuous Consistency 7.2.2 Consistent Ordering of Operations 7.3 CLIENT-CENTRIC CONSISTENCY MODELS 7.3.1 Eventual Consistency 7.3.2 Monotonic Reads 7.3.3 Monotonic Writes 7.3.4 Read Your Writes 7.3.5 Writes Follow Reads 7.4 REPLICA MANAGEMENT 7.4.1 Replica-Server Placement 7.4.2 Content Replication and Placement 7.4.3 Content Distribution 7.5 CONSISTENCY PROTOCOLS 7.5.1 Continuous Consistency 7.5.2 Primary-Based Protocols 7.5.3 Replicated-Write Protocols 7.5.4 Cache-Coherence Protocols 7.5.5 Implementing Client-Centric Consistency 7.6 SUMMARY 8 FAULT TOLERANCE 8.1 INTRODUCTION TO FAULT TOLERANCE 8.1.1 Basic Concepts 8.1.2 Failure Models 8.1.3 Failure Masking by Redundancy 8.2 PROCESS RESILIENCE 8.2.1 Design Issues 8.2.2 Failure Masking and Replication 8.2.3 Agreement in Faulty Systems 8.2.4 Failure Detection 8.3 RELIABLE CLIENT-SERVER COMMUNICATION 8.3.1 Point-to-Point Communication 8.3.2 RPC Semantics in the Presence of Failures 8.4 RELIABLE GROUP COMMUNICATION 8.4.1 Basic Reliable-Multicasting Schemes 8.4.2 Scalability in Reliable Multicasting 8.4.3 Atomic Multicast 8.5 DISTRIBUTED COMMIT 8.5.1 Two-Phase Commit 8.5.2 Three-Phase Commit 8.6 RECOVERY 8.6.1 Introduction 8.6.2 Checkpointing 8.6.3 Message Logging 8.6.4 Recovery-Oriented Computing 8.7 SUMMARY 9 SECURITY 9.1 INTRODUCTION TO SECURITY 9.1.1 Security Threats, Policies, and Mechanisms 9.1.2 Design Issues 9.1.3 Cryptography 9.2 SECURE CHANNELS 9.2.1 Authentication 9.2.2 Message Integrity and Confidentiality 9.2.3 Secure Group Communication 9.2.4 Example: Kerberos 9.3 ACCESS CONTROL 9.3.1 General Issues in Access Control 9.3.2 Firewalls 9.3.3 Secure Mobile Code 9.3.4 Denial of Service 9.4 SECURITY MANAGEMENT 9.4.1 Key Management 9.4.2 Secure Group Management 9.4.3 Authorization Management 9.5 SUMMARY 10 DISTRIBUTED OBJECT-BASED SYSTEMS 10.1 ARCHITECTURE 10.1.1 Distributed Objects 10.1.2 Example: Enterprise Java Beans 10.1.3 Example: Globe Distributed Shared Objects 10.2 PROCESSES 10.2.1 Object Servers 10.2.2 Example: The Ice Runtime System 10.3 COMMUNICATION 10.3.1 Binding a Client to an Object 10.3.2 Static versus Dynamic Remote Method Invocations 10.3.3 Parameter Passing 10.3.4 Example: Java RMI 10.3.5 Object-Based Messaging 10.4 NAMING 10.4.1 CORBA Object References 10.4.2 Globe Object References 10.5 SYNCHRONIZATION 10.6 CONSISTENCY AND REPLICATION 10.6.1 Entry Consistency 10.6.2 Replicated Invocations 10.7 FAULT TOLERANCE 10.7.1 Example: Fault-Tolerant CORBA 10.7.2 Example: Fault-Tolerant Java 10.8 SECURITY 10.8.1 Example: Globe 10.8.2 Security for Remote Objects 10.9 SUMMARY 11 DISTRIBUTED FILE SYSTEMS 11.1 ARCHITECTURE 11.1.1 Client-Server Architectures 11.1.2 Cluster-Based Distributed File Systems 11.1.3 Symmetric Architectures 11.2 PROCESSES 11.3 COMMUNICATION 11.3.1 RPCs in NFS 11.3.2 The RPC2 Subsystem 11.3.3 File-Oriented Communication in Plan 9 11.4 NAMING 11.4.1 Naming in NFS 11.4.2 Constructing a Global Name Space 11.5 SYNCHRONIZATION 11.5.1 Semantics of File Sharing 11.5.2 File Locking 11.5.3 Sharing Files in Coda 11.6 CONSISTENCY AND REPLICATION 11.6.1 Client-Side Caching 11.6.2 Server-Side Replication 11.6.3 Replication in Peer-to-Peer File Systems 11.6.4 File Replication in Grid Systems 11.7 FAULT TOLERANCE 11.7.1 Handling Byzantine Failures 11.7.2 High Availability in Peer-to-Peer Systems 11.8 SECURITY 11.8.1 Security in NFS 11.8.2 Decentralized Authentication 11.8.3 Secure Peer-to-Peer File-Sharing Systems 11.9 SUMMARY 12 DISTRIBUTED WEB-BASED SYSTEMS 12.1 ARCHITECTURE 12.1.1 Traditional Web-Based Systems 12.1.2 Web Services 12.2 PROCESSES 12.2.1 Clients 12.2.2 The Apache Web Server 12.2.3 Web Server Clusters 12.3 COMMUNICATION 12.3.1 Hypertext Transfer Protocol 12.3.2 Simple Object Access Protocol 12.4 NAMING 12.5 SYNCHRONIZATION 12.6 CONSISTENCY AND REPLICATION 12.6.1 Web Proxy Caching 12.6.2 Replication for Web Hosting Systems 12.6.3 Replication of Web Applications 12.7 FAULT TOLERANCE 12.8 SECURITY 12.9 SUMMARY 13 DISTRIBUTED COORDINATION-BASED SYSTEMS 13.1 INTRODUCTION TO COORDINATION MODELS 13.2 ARCHITECTURES 13.2.1 Overall Approach 13.2.2 Traditional Architectures 13.2.3 Peer-to-Peer Architectures 13.2.4 Mobility and Coordination 13.3 PROCESSES 13.4 COMMUNICATION 13.4.1 Content-Based Routing 13.4.2 Supporting Composite Subscriptions 13.5 NAMING 13.5.1 Describing Composite Events 13.5.2 Matching Events and Subscriptions 13.6 SYNCHRONIZATION 13.7 CONSISTENCY AND REPLICATION 13.7.1 Static Approaches 13.7.2 Dynamic Replication 13.8 FAULT TOLERANCE 13.8.1 Reliable Publish-Subscribe Communication 13.8.2 Fault Tolerance in Shared Dataspaces 13.9 SECURITY 13.9.1 Confidentiality 13.9.2 Secure Shared Dataspaces 13.10 SUMMARY 14 SUGGESTIONS FOR FURTHER READING AND BIBLIOGRAPHY 14.1 SUGGESTIONS FOR FURTHER READING 14.1.1 Introduction and General Works 14.1.2 Architectures 14.1.3 Processes 14.1.4 Communication 14.1.5 Naming 14.1.6 Synchronization 14.1.7 Consistency and Replication 14.1.8 Fault Tolerance 14.1.9 Security 14.1.10 Distributed Object-Based Systems 14.1.11 Distributed File Systems 14.1.12 Distributed Web-Based Systems 14.1.13 Distributed Coordination-Based Systems 14,2 ALPHABETICAL BIBLIOGRAPHY INDEX

by "Nielsen BookData"

Details
Page Top