Mevcut:*
Library | Materyal Türü | Barkod | Yer Numarası | Durum |
|---|---|---|---|---|
Searching... Pamukkale Merkez Kütüphanesi | Kitap | 0039436 | QA76.9.D5T36 2007 | Searching... Unknown |
Searching... Pamukkale Merkez Kütüphanesi | Kitap | 0097832 | QA76.9.D5T36 2007 | Searching... Unknown |
Bound With These Titles
On Order
Özet
Özet
Virtually every computing system today is part of a distributed system. Programmers, developers, and engineers need to understand the underlying principles and paradigms as well as the real-world application of those principles. Now, internationally renowned expert Andrew S. Tanenbaum - with colleague Martin van Steen - presents a complete introduction that identifies the seven key principles of distributed systems, with extensive examples of each. Adds a completely new chapter on architecture to address the principle of organizing distributed systems. Provides extensive new material on peer-to-peer systems, grid computing and Web services, virtualization, and application-level multicasting. Updates material on clock synchronization, data-centric consistency, object-based distributed systems, and file systems and Web systems coordination. For all developers, software engineers, and architects who need an in-depth understanding of distributed systems.
Author Notes
Andrew S. Tanenbaum is currently Professor of Computer science at Vrije Universiteit in Amsterdam
Maarten Van Steen is currently a professor at the Vrije Universiteit, Amsterdam
Table of Contents
| Preface | p. xvii |
| 1 Introduction | p. 1 |
| 1.1 Definition of a Distributed System | p. 2 |
| 1.2 Goals | p. 3 |
| 1.2.1 Making Resources Accessible | p. 3 |
| 1.2.2 Distribution Transparency | p. 4 |
| 1.2.3 Openness | p. 7 |
| 1.2.4 Scalability | p. 9 |
| 1.2.5 Pitfalls | p. 16 |
| 1.3 Types of Distributed Systems | p. 17 |
| 1.3.1 Distributed Computing Systems | p. 17 |
| 1.3.2 Distributed Information Systems | p. 20 |
| 1.3.3 Distributed Pervasive Systems | p. 24 |
| 1.4 Summary | p. 30 |
| 2 Architectures | p. 33 |
| 2.1 Architectural Styles | p. 34 |
| 2.2 System Architectures | p. 36 |
| 2.2.1 Centralized Architectures | p. 36 |
| 2.2.2 Decentralized Architectures | p. 43 |
| 2.2.3 Hybrid Architectures | p. 52 |
| 2.3 Architectures Versus Middleware | p. 54 |
| 2.3.1 Interceptors | p. 55 |
| 2.3.2 General Approaches to Adaptive Software | p. 57 |
| 2.3.3 Discussion | p. 58 |
| 2.4 Self-Management in Distributed Systems | p. 59 |
| 2.4.1 The Feedback Control Model | p. 60 |
| 2.4.2 Example: Systems Monitoring with Astrolabe | p. 61 |
| 2.4.3 Example: Differentiating Replication Strategies in Globule | p. 63 |
| 2.4.4 Example: Automatic Component Repair Management in Jade | p. 65 |
| 2.5 Summary | p. 66 |
| 3 Processes | p. 69 |
| 3.1 Threads | p. 70 |
| 3.1.1 Introduction to Threads | p. 70 |
| 3.1.2 Threads in Distributed Systems | p. 75 |
| 3.2 Virtualization | p. 79 |
| 3.2.1 The Role of Virtualization in Distributed Systems | p. 79 |
| 3.2.2 Architectures of Virtual Machines | p. 80 |
| 3.3 Clients | p. 82 |
| 3.3.1 Networked User Interfaces | p. 82 |
| 3.3.2 Client-Side Software for Distribution Transparency | p. 87 |
| 3.4 Servers | p. 88 |
| 3.4.1 General Design Issues | p. 88 |
| 3.4.2 Server Clusters | p. 92 |
| 3.4.3 Managing Server Clusters | p. 98 |
| 3.5 Code Migration | p. 103 |
| 3.5.1 Approaches to Code Migration | p. 103 |
| 3.5.2 Migration and Local Resources | p. 107 |
| 3.5.3 Migration in Heterogeneous Systems | p. 110 |
| 3.6 Summary | p. 112 |
| 4 Communication | p. 115 |
| 4.1 Fundamentals | p. 116 |
| 4.1.1 Layered Protocols | p. 116 |
| 4.1.2 Types of Communication | p. 124 |
| 4.2 Remote Procedure Call | p. 125 |
| 4.2.1 Basic RPC Operation | p. 126 |
| 4.2.2 Parameter Passing | p. 130 |
| 4.2.3 Asynchronous RPC | p. 134 |
| 4.2.4 Example: DCE RPC | p. 135 |
| 4.3 Message-Oriented Communication | p. 140 |
| 4.3.1 Message-Oriented Transient Communication | p. 141 |
| 4.3.2 Message-Oriented Persistent Communication | p. 145 |
| 4.3.3 Example: IBM's WebSphere Message-Queuing System | p. 152 |
| 4.4 Stream-Oriented Communication | p. 157 |
| 4.4.1 Support for Continuous Media | p. 158 |
| 4.4.2 Streams and Quality of Service | p. 160 |
| 4.4.3 Stream Synchronization | p. 163 |
| 4.5 Multicast Communication | p. 166 |
| 4.5.1 Application-Level Multicasting | p. 166 |
| 4.5.2 Gossip-Based Data Dissemination | p. 170 |
| 4.6 Summary | p. 175 |
| 5 Naming | p. 179 |
| 5.1 Names, Identifiers, and Addresses | p. 180 |
| 5.2 Flat Naming | p. 182 |
| 5.2.1 Simple Solutions | p. 183 |
| 5.2.2 Home-Based Approaches | p. 186 |
| 5.2.3 Distributed Hash Tables | p. 188 |
| 5.2.4 Hierarchical Approaches | p. 191 |
| 5.3 Structured Naming | p. 195 |
| 5.3.1 Name Spaces | p. 195 |
| 5.3.2 Name Resolution | p. 198 |
| 5.3.3 The Implementation of a Name Space | p. 202 |
| 5.3.4 Example: The Domain Name System | p. 209 |
| 5.4 Attribute-Based Naming | p. 217 |
| 5.4.1 Directory Services | p. 217 |
| 5.4.2 Hierarchical Implementations: LDAP | p. 218 |
| 5.4.3 Decentralized Implementations | p. 222 |
| 5.5 Summary | |
| 6 Synchronization | p. 231 |
| 6.1 Clock Synchronization | p. 232 |
| 6.1.1 Physical Clocks | p. 233 |
| 6.1.2 Global Positioning System | p. 236 |
| 6.1.3 Clock Synchronization Algorithms | p. 238 |
| 6.2 Logical Clocks | p. 244 |
| 6.2.1 Lamport's Logical Clocks | p. 244 |
| 6.2.2 Vector Clocks | p. 248 |
| 6.3 Mutual Exclusion | p. 252 |
| 6.3.1 Overview | p. 252 |
| 6.3.2 A Centralized Algorithm | p. 253 |
| 6.3.3 A Decentralized Algorithm | p. 254 |
| 6.3.4 A Distributed Algorithm | p. 255 |
| 6.3.5 A Token Ring Algorithm | p. 258 |
| 6.3.6 A Comparison of the Four Algorithms | p. 259 |
| 6.4 Global Positioning of Nodes | p. 260 |
| 6.5 Election Algorithms | p. 263 |
| 6.5.1 Traditional Election Algorithms | p. 264 |
| 6.5.2 Elections in Wireless Environments | p. 267 |
| 6.5.3 Elections in Large-Scale Systems | p. 269 |
| 6.6 Summary | p. 270 |
| 7 Consistency and Replication | p. 273 |
| 7.1 Introduction | p. 274 |
| 7.1.1 Reasons for Replication | p. 274 |
| 7.1.2 Replication as Scaling Technique | p. 275 |
| 7.2 Data-Centric Consistency Models | p. 276 |
| 7.2.1 Continuous Consistency | p. 277 |
| 7.2.2 Consistent Ordering of Operations | p. 281 |
| 7.3 Client-Centric Consistency Models | p. 288 |
| 7.3.1 Eventual Consistency | p. 289 |
| 7.3.2 Monotonic Reads | p. 291 |
| 7.3.3 Monotonic Writes | p. 292 |
| 7.3.4 Read Your Writes | p. 294 |
| 7.3.5 Writes Follow Reads | p. 295 |
| 7.4 Replica Management | p. 296 |
| 7.4.1 Replica-Server Placement | p. 296 |
| 7.4.2 Content Replication and Placement | p. 298 |
| 7.4.3 Content Distribution | p. 302 |
| 7.5 Consistency Protocols | p. 306 |
| 7.5.1 Continuous Consistency | p. 306 |
| 7.5.2 Primary-Based Protocols | p. 308 |
| 7.5.3 Replicated-Write Protocols | p. 311 |
| 7.5.4 Cache-Coherence Protocols | p. 313 |
| 7.5.5 Implementing Client-Centric Consistency | p. 315 |
| 7.6 Summary | p. 317 |
| 8 Fault Tolerance | p. 321 |
| 8.1 Introduction to Fault Tolerance | p. 322 |
| 8.1.1 Basic Concepts | p. 322 |
| 8.1.2 Failure Models | p. 324 |
| 8.1.3 Failure Masking by Redundancy | p. 326 |
| 8.2 Process Resilience | p. 328 |
| 8.2.1 Design Issues | p. 328 |
| 8.2.2 Failure Masking and Replication | p. 330 |
| 8.2.3 Agreement in Faulty Systems | p. 331 |
| 8.2.4 Failure Detection | p. 335 |
| 8.3 Reliable Client-Server Communication | p. 336 |
| 8.3.1 Point-to-Point Communication | p. 337 |
| 8.3.2 RPC Semantics in the Presence of Failures | p. 337 |
| 8.4 Reliable Group Communication | p. 343 |
| 8.4.1 Basic Reliable-Multicasting Schemes | p. 343 |
| 8.4.2 Scalability in Reliable Multicasting | p. 345 |
| 8.4.3 Atomic Multicast | p. 348 |
| 8.5 Distributed Commit | p. 355 |
| 8.5.1 Two-Phase Commit | p. 355 |
| 8.5.2 Three-Phase Commit | p. 360 |
| 8.6 Recovery | p. 363 |
| 8.6.1 Introduction | p. 363 |
| 8.6.2 Checkpointing | p. 366 |
| 8.6.3 Message Logging | p. 369 |
| 8.6.4 Recovery-Oriented Computing | p. 372 |
| 8.7 Summary | p. 373 |
| 9 Security | p. 377 |
| 9.1 Introduction to Security | p. 378 |
| 9.1.1 Security Threats, Policies, and Mechanisms | p. 378 |
| 9.1.2 Design Issues | p. 384 |
| 9.1.3 Cryptography | p. 389 |
| 9.2 Secure Channels | p. 396 |
| 9.2.1 Authentication | p. 397 |
| 9.2.2 Message Integrity and Confidentiality | p. 405 |
| 9.2.3 Secure Group Communication | p. 408 |
| 9.2.4 Example: Kerberos | p. 411 |
| 9.3 Access Control | p. 413 |
| 9.3.1 General Issues in Access Control | p. 414 |
| 9.3.2 Firewalls | p. 418 |
| 9.3.3 Secure Mobile Code | p. 420 |
| 9.3.4 Denial of Service | p. 427 |
| 9.4 Security Management | p. 428 |
| 9.4.1 Key Management | p. 428 |
| 9.4.2 Secure Group Management | p. 433 |
| 9.4.3 Authorization Management | p. 434 |
| 9.5 Summary | p. 439 |
| 10 Distributed Object-Based Systems | p. 443 |
| 10.1 Architecture | p. 443 |
| 10.1.1 Distributed Objects | p. 444 |
| 10.1.2 Example: Enterprise Java Beans | p. 446 |
| 10.1.3 Example: Globe Distributed Shared Objects | p. 448 |
| 10.2 Processes | p. 451 |
| 10.2.1 Object Servers | p. 451 |
| 10.2.2 Example: The Ice Runtime System | p. 454 |
| 10.3 Communication | p. 456 |
| 10.3.1 Binding a Client to an Object | p. 456 |
| 10.3.2 Static versus Dynamic Remote Method Invocations | p. 458 |
| 10.3.3 Parameter Passing | p. 460 |
| 10.3.4 Example: Java RMI | p. 461 |
| 10.3.5 Object-Based Messaging | p. 464 |
| 10.4 Naming | p. 466 |
| 10.4.1 Corba Object References | p. 467 |
| 10.4.2 Globe Object References | p. 469 |
| 10.5 Synchronization | p. 470 |
| 10.6 Consistency and Replication | p. 472 |
| 10.6.1 Entry Consistency | p. 472 |
| 10.6.2 Replicated Invocations | p. 475 |
| 10.7 Fault Tolerance | p. 477 |
| 10.7.1 Example: Fault-Tolerant Corba | p. 477 |
| 10.7.2 Example: Fault-Tolerant Java | p. 480 |
| 10.8 Security | p. 481 |
| 10.8.1 Example: Globe | p. 482 |
| 10.8.2 Security for Remote Objects | p. 486 |
| 10.9 Summary | p. 487 |
| 11 Distributed File Systems | p. 491 |
| 11.1 Architecture | p. 491 |
| 11.1.1 Client-Server Architectures | p. 491 |
| 11.1.2 Cluster-Based Distributed File Systems | p. 496 |
| 11.1.3 Symmetric Architectures | p. 499 |
| 11.2 Processes | p. 501 |
| 11.3 Communication | p. 502 |
| 11.3.1 RPCs in NFS | p. 502 |
| 11.3.2 The RPC2 Subsystem | p. 503 |
| 11.3.3 File-Oriented Communication in Plan 9 | p. 505 |
| 11.4 Naming | p. 506 |
| 11.4.1 Naming in NFS | p. 506 |
| 11.4.2 Constructing a Global Name Space | p. 512 |
| 11.5 Synchronization | p. 513 |
| 11.5.1 Semantics of File Sharing | p. 513 |
| 11.5.2 File Locking | p. 516 |
| 11.5.3 Sharing Files in Coda | p. 518 |
| 11.6 Consistency and Replication | p. 519 |
| 11.6.1 Client-Side Caching | p. 520 |
| 11.6.2 Server-Side Replication | p. 524 |
| 11.6.3 Replication in Peer-to-Peer File Systems | p. 526 |
| 11.6.4 File Replication in Grid Systems | p. 528 |
| 11.7 Fault Tolerance | p. 529 |
| 11.7.1 Handling Byzantine Failures | p. 529 |
| 11.7.2 High Availability in Peer-to-Peer Systems | p. 531 |
| 11.8 Security | p. 532 |
| 11.8.1 Security in NFS | p. 533 |
| 11.8.2 Decentralized Authentication | p. 536 |
| 11.8.3 Secure Peer-to-Peer File-Sharing Systems | p. 539 |
| 11.9 Summary | p. 541 |
| 12 Distributed Web-Based Systems | p. 545 |
| 12.1 Architecture | p. 546 |
| 12.1.1 Traditional Web-Based Systems | p. 546 |
| 12.1.2 Web Services | p. 551 |
| 12.2 Processes | p. 554 |
| 12.2.1 Clients | p. 554 |
| 12.2.2 The Apache Web Server | p. 556 |
| 12.2.3 Web Server Clusters | p. 558 |
| 12.3 Communication | p. 560 |
| 12.3.1 Hypertext Transfer Protocol | p. 560 |
| 12.3.2 Simple Object Access Protocol | p. 566 |
| 12.4 Naming | p. 567 |
| 12.5 Synchronization | p. 569 |
| 12.6 Consistency and Replication | p. 570 |
| 12.6.1 Web Proxy Caching | p. 571 |
| 12.6.2 Replication for Web Hosting Systems | p. 573 |
| 12.6.3 Replication of Web Applications | p. 579 |
| 12.7 Fault Tolerance | p. 582 |
| 12.8 Security | p. 584 |
| 12.9 Summary | p. 585 |
| 13 Distributed Coordination-Based Systems | p. 589 |
| 13.1 Introduction to Coordination Models | p. 589 |
| 13.2 Architectures | p. 591 |
| 13.2.1 Overall Approach | p. 592 |
| 13.2.2 Traditional Architectures | p. 593 |
| 13.2.3 Peer-to-Peer Architectures | p. 596 |
| 13.2.4 Mobility and Coordination | p. 599 |
| 13.3 Processes | p. 601 |
| 13.4 Communication | p. 601 |
| 13.4.1 Content-Based Routing | p. 601 |
| 13.4.2 Supporting Composite Subscriptions | p. 603 |
| 13.5 Naming | p. 604 |
| 13.5.1 Describing Composite Events | p. 604 |
| 13.5.2 Matching Events and Subscriptions | p. 606 |
| 13.6 Synchronization | p. 607 |
| 13.7 Consistency and Replication | p. 607 |
| 13.7.1 Static Approaches | p. 608 |
| 13.7.2 Dynamic Replication | p. 611 |
| 13.8 Fault Tolerance | p. 613 |
| 13.8.1 Reliable Publish-Subscribe Communication | p. 613 |
| 13.8.2 Fault Tolerance in Shared Dataspaces | p. 616 |
| 13.9 Security | p. 617 |
| 13.9.1 Confidentiality | p. 618 |
| 13.9.2 Secure Shared Dataspaces | p. 620 |
| 13.10 Summary | p. 621 |
| 14 Suggestions for Further Reading and Bibliography | p. 623 |
| 14.1 Suggestions for Further Reading | p. 623 |
| 14.1.1 Introduction and General Works | p. 623 |
| 14.1.2 Architectures | p. 624 |
| 14.1.3 Processes | p. 625 |
| 14.1.4 Communication | p. 626 |
| 14.1.5 Naming | p. 626 |
| 14.1.6 Synchronization | p. 627 |
| 14.1.7 Consistency and Replication | p. 628 |
| 14.1.8 Fault Tolerance | p. 629 |
| 14.1.9 Security | p. 630 |
| 14.1.10 Distributed Object-Based Systems | p. 631 |
| 14.1.11 Distributed File Systems | p. 632 |
| 14.1.12 Distributed Web-Based Systems | p. 632 |
| 14.1.13 Distributed Coordination-Based Systems | p. 633 |
| 14.2 Alphabetical Bibliography | p. 634 |
| Index | p. 669 |
