Distributed Systems: Principles and Paradigms, 2nd Edition
©2007 |Pearson | Out of print
Andrew S. Tanenbaum, rije University, Amsterdam, The Netherlands
Maarten Van Steen
©2007 |Pearson | Out of print
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.
• First part of the book dedicates one chapter to each of seven key principles of all distributed systems: communication, processes, naming, synchronization, consistency and replication, fault tolerance, and security.
– Gives students an understanding of the key principles, paradigms, and models on which all distributed systems are based.
• Second part of the book devoted to real-world distributed case studies:
– Includes examples of object-based, document-based, file-based, and coordination-based systems including Corba, DCOM, Globe, NFS v4, Coda, WWW, and Jini.
– Because Part II is organized along the same seven key principles that are discussed in the first part, students not only learn how state-of-the-art real-world systems and middleware work, but are also able to compare the different systems easily.
• Numerous end-of-chapter exercises – Explain how the various principles of distributed systems work in practice.
• “Big picture” concepts and many technical details:
– Presented in the clear, entertaining style unique to Tanenbaum and van Steen.
– Helps students learn the foundation of distributed operating systems and how things work in the real world.
• Excellent coverage of timely, advanced distributed systems topics – Examines security, payment systems, recent Internet and Web protocols, scalability, and caching and replication.
• A completely new chapter on architecture added to address the principle of organizing distributed systems:
– Covers the logical organization into software components along the lines of architectural styles (layers, object-orientation, event orientation, and data orientation)
– Discusses the physical organization of distributed systems, addressing issues such as client/server systems and peer-to-peer systems
– Interweaves the two types of organization by examining self-managing distributed systems, which form an important part of what are known as autonomic systems.
• Extensive new material on peer-to-peer systems:
– Discusses structured as well as unstructured peer-to-peer systems
– Explains how they work and how they are being applied to solve challenging problems in various domains, in various sections throughout.
• New material on Grid computing and Web services:
– Reflects the emergence of this increasingly important type of distributed system in the form of large-scale computing and information systems, which are often deployed across the Internet.
– Web-based systems, including Web services, are treated more thoroughly in this revision.
• New material on virtualization:
– Reflects the growing importance of virtual machines as a component of distributed systems
– Adds a separate section discussing different forms of virtualization and how it is applied in practical settings.
• Addition of application-level multicasting:
– Adds a separate section on how (large scale) group communication can be set up in a decentralized fashion, using structured as well as unstructured peer-to-peer systems.
• Improved material on clock synchronization – Now addresses clock synchronization in very large systems, and updates the material with a description of GPS systems (relates directly to GPS-based services that students use in practice).
• Updated material on data-centric consistency:
– Removes models that are exclusively used only in distributed shared memory systems
– Adds simpler models on continuous consistency, which is more applicable to modern distributed information systems.
• Updated chapter on object-based distributed systems:
– Now takes examples from existing systems for each principle separately
– Not only provides better illustrations of those principles, but makes the material more attractive for students to learn and for instructors to teach.
• Updated chapters on file systems and Web systems coordination.
• Deleted information on:
– distributed garbage collection
– distributed shared memory
– lotus notes as case
– a number of specific distributed algorithms.
1.1 DEFINITION OF A DISTRIBUTED SYSTEM
1.2.1 Making Resources Accessible
1.2.2 Distribution Transparency
1.3 TYPES OF DISTRIBUTED SYSTEMS
1.3.1 Distributed Computing Systems
1.3.2 Distributed Information Systems
1.3.3 Distributed Pervasive Systems
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.2 General Approaches to Adaptive Software
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
3.1.1 Introduction to Threads
3.1.2 Threads in Distributed Systems
3.2.1 The Role of Virtualization in Distributed Systems
3.2.2 Architectures of Virtual Machines
3.3.1 Networked User Interfaces
3.3.2 Client-Side Software for Distribution Transparency
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
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
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
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.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
7 CONSISTENCY AND REPLICATION
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
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.3 Message Logging
8.6.4 Recovery-Oriented Computing
9.1 INTRODUCTION TO SECURITY
9.1.1 Security Threats, Policies, and Mechanisms
9.1.2 Design Issues
9.2 SECURE CHANNELS
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.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
10 DISTRIBUTED OBJECT-BASED SYSTEMS
10.1.1 Distributed Objects
10.1.2 Example: Enterprise Java Beans
10.1.3 Example: Globe Distributed Shared Objects
10.2.1 Object Servers
10.2.2 Example: The Ice Runtime System
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.1 CORBA Object References
10.4.2 Globe Object References
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.1 Example: Globe
10.8.2 Security for Remote Objects
11 DISTRIBUTED FILE SYSTEMS
11.1.1 Client-Server Architectures
11.1.2 Cluster-Based Distributed File Systems
11.1.3 Symmetric Architectures
11.3.1 RPCs in NFS
11.3.2 The RPC2 Subsystem
11.3.3 File-Oriented Communication in Plan 9
11.4.1 Naming in NFS
11.4.2 Constructing a Global Name Space
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.1 Security in NFS
11.8.2 Decentralized Authentication
11.8.3 Secure Peer-to-Peer File-Sharing Systems
12 DISTRIBUTED WEB-BASED SYSTEMS
12.1.1 Traditional Web-Based Systems
12.1.2 Web Services
12.2.2 The Apache Web Server
12.2.3 Web Server Clusters
12.3.1 Hypertext Transfer Protocol
12.3.2 Simple Object Access Protocol
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
13 DISTRIBUTED COORDINATION-BASED
13.1 INTRODUCTION TO COORDINATION MODELS
13.2.1 Overall Approach
13.2.2 Traditional Architectures
13.2.3 Peer-to-Peer Architectures
13.2.4 Mobility and Coordination
13.4.1 Content-Based Routing
13.4.2 Supporting Composite Subscriptions
13.5.1 Describing Composite Events
13.5.2 Matching Events and Subscriptions
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.2 Secure Shared Dataspaces
14 SUGGESTIONS FOR FURTHER READING
14.1 SUGGESTIONS FOR FURTHER READING
14.1.1 Introduction and General Works
14.1.7 Consistency and Replication
14.1.8 Fault Tolerance
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
Pearson offers affordable and accessible purchase options to meet the needs of your students. Connect with us to learn more.
K12 Educators: Contact your Savvas Learning Company Account General Manager for purchase options. Instant Access ISBNs are for individuals purchasing with credit cards or PayPal.
Savvas Learning Company is a trademark of Savvas Learning Company LLC.
Andrew S. Tanenbaum has a B.S. Degree from M.I.T. and a Ph.D. from the University of California at Berkeley. He is currently a Professor of Computer Science at the Vrije Universiteit in Amsterdam, The Netherlands, where he heads the Computer Systems Group. He is also Dean of the Advanced School for Computing and Imaging, an interuniversity graduate school doing research on advanced parallel, distributed, and imaging systems. Nevertheless, he is trying very hard to avoid turning into a bureaucrat.
In the past, he has done research on compilers, operating systems, networking, and local-area distributed systems. His current research focuses primarily on the design of wide-area distributed systems that scale to a billion users. These research projects have led to five books and over 85 referred papers in journals and conference proceedings.
Prof. Tanenbaum has also produced a considerable volume of software. He was the principal architect of the Amsterdam Compiler Kit, a widely-used toolkit for writing portable compilers, as well as of MINIX, a small UNIX clone intended for use in student programming labs. Together with his Ph.D. students and programmers, he helped design the Amoeba distributed operating system, a high-performance microkernel-based distributed operating system. The MINIX and Amoeba systems are now available for free via the Internet.
Prof. Tanenbaum is a Fellow of the ACM, a Fellow of the IEEE, a member of the Royal Netherlands Academy of Arts and Sciences, winner of the 1994 ACM Karl V. Karlstrom Outstanding Educator Award, and winner of the 1997 ACM/SIGCSE Award for Outstanding Contributions to Computer Science Education. He is also listed in Who’s Who in the World.
Maarten van Steen is a professor at the Vrije Universiteit, Amsterdam where he teaches operating systems, computer networks, and distributed systems. He has also given various highly successful courses on computer systems related subjects to ICT professionals from industry and governmental organizations.
Prof. van Steen studied Applied Mathematics at Twente University and received a Ph.D. from Leiden University in Computer Science. After his graduate studies he went to work for an industrial research laboratory where he eventually became head of a group concentrating on programming support for parallel applications.
After five years of struggling to simultaneously do research and management, he decided to return to academia, first as an assistant professor in Computer Science at the Erasmus University Rotterdam, and later as an assistant professor in Andrew Tanenbaum's group at the Vrije Universiteit Amsterdam.
His current research concentrates on large-scale distributed systems. Part of his research focusses on Web-based systems, in particular adaptive distribution and replication in (collaborative) content distribution networks. Another subject of extensive research is fully decentralized (gossip based) peer-to-peer systems for wired as well as wireless ad hoc networks.
We're sorry! We don't recognize your username or password. Please try again.
The work is protected by local and international copyright laws and is provided solely for the use of instructors in teaching their courses and assessing student learning.
You have successfully signed out and will be required to sign back in should you need to download more resources.