logo资料库

Distributed_Systems 3rd Edition.pdf

第1页 / 共596页
第2页 / 共596页
第3页 / 共596页
第4页 / 共596页
第5页 / 共596页
第6页 / 共596页
第7页 / 共596页
第8页 / 共596页
资料共596页,剩余部分请下载后查看
Preface
Introduction
What is a distributed system?
Characteristic 1: Collection of autonomous computing elements
Characteristic 2: Single coherent system
Middleware and distributed systems
Design goals
Supporting resource sharing
Making distribution transparent
Being open
Being scalable
Pitfalls
Types of distributed systems
High performance distributed computing
Distributed information systems
Pervasive systems
Summary
Architectures
Architectural styles
Layered architectures
Object-based and service-oriented architectures
Resource-based architectures
Publish-subscribe architectures
Middleware organization
Wrappers
Interceptors
Modifiable middleware
System architecture
Centralized organizations
Decentralized organizations: peer-to-peer systems
Hybrid Architectures
Example architectures
The Network File System
The Web
Summary
Processes
Threads
Introduction to threads
Threads in distributed systems
Virtualization
Principle of virtualization
Application of virtual machines to distributed systems
Clients
Networked user interfaces
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
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
Example: DCE RPC
Message-oriented communication
Simple transient messaging with sockets
Advanced transient messaging
Message-oriented persistent communication
Example: IBM's WebSphere message-queuing system
Example: Advanced Message Queuing Protocol (AMQP)
Multicast communication
Application-level tree-based multicasting
Flooding-based 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
Example: The Network File System
Attribute-based naming
Directory services
Hierarchical implementations: LDAP
Decentralized implementations
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
Election algorithms
The bully algorithm
A ring algorithm
Elections in wireless environments
Elections in large-scale systems
Location systems
GPS: Global Positioning System
When GPS is not an option
Logical positioning of nodes
Distributed event matching
Centralized implementations
Gossip-based coordination
Aggregation
A peer-sampling service
Gossip-based overlay construction
Summary
Consistency and replication
Introduction
Reasons for replication
Replication as scaling technique
Data-centric consistency models
Continuous consistency
Consistent ordering of operations
Eventual consistency
Client-centric consistency models
Monotonic reads
Monotonic writes
Read your writes
Writes follow reads
Replica management
Finding the best server location
Content replication and placement
Content distribution
Managing replicated objects
Consistency protocols
Continuous consistency
Primary-based protocols
Replicated-write protocols
Cache-coherence protocols
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
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
Atomic multicast
Distributed 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
Secure naming
Security management
Key management
Secure group management
Authorization management
Summary
Bibliography
Distributed Systems Third edition Version 3.01 (2017) Maarten van Steen Andrew S. Tanenbaum
Copyright © 2017 Maarten van Steen and Andrew S. Tanenbaum Published by Maarten van Steen This book was previously published by: Pearson Education, Inc. ISBN: 978-15-430573-8-6 (printed version) ISBN: 978-90-815406-2-9 (digital version) Edition: 3. Version: 01 (February 2017) All rights to text and illustrations are reserved by Maarten van Steen and Andrew S. Tanenbaum. This work may not be copied, reproduced, or translated in whole or part without written permission of the publisher, except for brief excerpts in reviews or scholarly analysis. Use with any form of information storage and retrieval, electronic adaptation or whatever, computer software, or by similar or dissimilar methods now known or developed in the future is strictly forbidden without written permission of the publisher.
To Mariëlle, Max, and Elke – MvS To Suzanne, Barbara, Marvin, Aron, Nathan, Olivia, and Mirte – AST
Contents Preface 1 Introduction . . . . 1.2 Design goals . 1.1 What is a distributed system? . . . . . . . . . . . . . . . . . . . . Characteristic 1: Collection of autonomous computing elements Characteristic 2: Single coherent system . . . . . . . . . . . . . . Middleware and distributed systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Supporting resource sharing . . . . . . . . . . . . . . . . . . . . . Making distribution transparent . . . . . . . . . . . . . . . . . . . . . . Being open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Being scalable . Pitfalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . High performance distributed computing . . . . . . . . . . . . . Distributed information systems . . . . . . . . . . . . . . . . . . Pervasive systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Summary . 1.3 Types of distributed systems 1.4 . . . . . . . . . . . . . . . . . 2 Architectures 2.1 Architectural styles . . . . . . . . . . . . . . . . . . . . . . . . . . Layered architectures . . . . . . . . . . . . . . . . . . . . . . . . . Object-based and service-oriented architectures . . . . . . . . . Resource-based architectures . . . . . . . . . . . . . . . . . . . . Publish-subscribe architectures . . . . . . . . . . . . . . . . . . . 2.2 Middleware organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wrappers . Interceptors . . . . . . . . . . . . . . . . . . . . . . Modifiable middleware . . . . . . . . . . . . . . . . . . . . . . . . System architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 . . . . . . . . . v xi 1 2 2 4 5 7 7 8 12 15 24 24 25 34 40 52 55 56 57 62 64 66 71 72 73 75 76
vi CONTENTS . 76 Centralized organizations . . . . . . . . . . . . . . . . . . . . . 80 Decentralized organizations: peer-to-peer systems . . . . . . . . 90 Hybrid Architectures . . . . . . . . . . . . . . . . . . . . . 94 . . . . . . . . . . . . . . . . . . . . 2.4 Example architectures 94 . . . . . . . . . . . . . . . . . . . . . 98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 . . The Network File System . . The Web . 2.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Processes 3.1 Threads . 3.2 Virtualization . 3.3 Clients . . 3.4 Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 . . . . . . . . . . . . . . . . . . . . 104 . . . . . . . . . . . . . . . . . . . . . 104 Introduction to threads . Threads in distributed systems . . . . . . . . . . . . . . . . . . . 111 . . . . . . . . . . . . . . . . . . . . 116 . Principle of virtualization . . . . . . . . . . . . . . . . . . . . . 116 Application of virtual machines to distributed systems . . . . . 122 . . . . . . . . . . . . . . . . . . . . 124 . Networked user interfaces . . . . . . . . . . . . . . . . . . . . . 124 Client-side software for distribution transparency . . . . . . . . 127 . . . . . . . . . . . . . . . . . . . . 128 . . . . . . . . . . . . . . . . . . . . 129 . . . . . . . . . . . . . . . . . . 133 . . . . . . . . . . . . . . . . . . 139 . . . . . . . . . . . . . . . . . . . 141 . . . . . . . . . . . . . . . . . . . . . 152 . Reasons for migrating code . . . . . . . . . . . . . . . . . . . . . 152 Migration in heterogeneous systems . . . . . . . . . . . . . . . . 158 . . . . . . . . . . . . . . . . . . . . 161 . General design issues . Object servers . . . Example: The Apache Web server Server clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Code migration . 3.6 Summary . . . 4 Communication . . . . . . . . . . . . . . . . . . . . . . 4.1 Foundations . . . . Layered Protocols . Types of Communication . . . . 163 . . . . . . . . . . . . . . . . . . . . 164 . . . . . . . . . . . . . . . . . . . 164 . . . . . . . . . . . . . . . . . . . . . 172 . . . . . . . . . . . . . . . . . . . . 173 4.2 Remote procedure call . . . . . . . . . . . . . . . . . . . . 174 Basic RPC operation . . . . . . . . . . . . . . . . . . . . . 178 Parameter passing . . RPC-based application support . . . . . . . . . . . . . . . . . . . 182 . . . . . . . . . . . . . . . . . . . . 185 Variations on RPC . . Example: DCE RPC . . . . . . . . . . . . . . . . . . . . . 188 4.3 Message-oriented communication . . . . . . . . . . . . . . . . . 193 Simple transient messaging with sockets . . . . . . . . . . . . . 193 Advanced transient messaging . . . . . . . . . . . . . . . . . . . 198 Message-oriented persistent communication . . . . . . . . . . . 206 Example: IBM’s WebSphere message-queuing system . . . . . . 212 Example: Advanced Message Queuing Protocol (AMQP) . . . . 218 . . . . . . . . . . DS 3.01 downloaded by DWYAN3WADE@FOXMAIL.COM
分享到:
收藏