书籍详情
分布式系统:原理与范例
作者:Andrew S.Tanenbaum著
出版社:清华大学出版社
出版时间:2002-09-01
ISBN:9787302058274
定价:¥59.00
购买这本书可以去
内容简介
本书可分为“原理”和“范例”两大部分。第1章为总论,讨论了分布式系统定义、目标、硬件概念、软件概念、客户-服务器模型等内容。“原理”部分从第2章至第8章,主要论述分布式系统中最为重要的一些基本概念和原理,包括通信、进程、命名、同步、一致性和复制、容错、安全性等;“范例”部分则由第9章至第12章,分别介绍了分布式系统中的几个典型范例,由这些范例构成的几个主要系统,这些范例包括基于分布式对象的系统、分布式文件系统、基于分布式文档的系统、基于分布式协调的系统等。本书是作者为计算机科学专业的高年级本科生或研究生的课程而写的,既系统地讲授了分布式系统的基本原理,技术的发展,也给出了一些范例和实际系统,每章都有问题与练习,供学生去深入思考,另外配有题解,是一本很好的教材。对于从事分布式系统和分布式操作系统领域研究和开发的工作人员,本书也具有很大的参考价值。
作者简介
作者:AndrewS.TanenbaumAndrewS.Tanenbaum获得过美国麻省理工学院的理学学士学位和加利福尼亚大学伯克利分校的哲学博士学位,目前是荷兰阿姆斯特丹Vrije大学的计算机科学系的教授,并领导着一个计算机系统的研究小组。同时,他还是一家计算与图象处理学院的院长,这是由几家大学合作成立的研究生院。尽管社会工作很多,但他并没有中断学术研究。多年来,他在编译技术、操作系统、网络及局域分布式系统方面进行了大量的研究工作。目前的主要研究方向是设计规模达数百万用户的广域分布式系统。在进行这些研究项目的基础上,他在各种学术杂志及会议上发表了70多篇论文。他同时还是5本计算机专著的作者。Tanenbaum教授还开发了大量的软件。他是Amsterdan编译器的原理设计师,这是一个被广泛使用的;用来编写可移植编译器的工具箱。他领导编写的MINIX,是一个用于操作系统教学的类UNIX(的小型操作系统。他和他的博士研究生及其他编程人员一道设计的Amoeba分布式操作系统,是一个高性能的微内核分布式操作系统。目前,可在因特网上免费得到MLNIX及Amoeba,用于教学和研究。他的一些博士研究生,在获得学位后继续进行研究,并取得了更大的成就,赢得了社会的赞誉,对此他深感自豪。人们称他为桃李满天下的教育家。Tanenbaum是ACM的会员,IEEE的资深会员,荷兰皇家艺术和科学学院院士,获得过1994年度ACMKarlV.Karlstrom杰出教育家奖。他还人选了《世界名人录》。计算机组成结构化方法(英文影印版)(第5版)>>更多作品
目录
PREFACE
1 INTRODUCTlON
l.1 DEFINITION OF A DISTRIBUTED SYSTEM 2
l.2 GOALS 4
l.2.l Connecting Users and Resources 4
l.2.2 Transparency 5
1.2.3 Openness 8
l.2.4 Scalability 10
l.3 HARDWARE CONCEPTS l6
l.3.l Multiprocessors l7
l.3.2 Homogeneous MuIticomputer Systems l9
l.3.3 Heterogeneous Multicomputer Systems 2l
l.4 SOFTWARE CONCEPTS 22
l.4.l Distributed Operating Systems 22
l.4.2 Network Operating Systems 33
l.4.3 Middleware 36
l.5 THE CLIENT-SERVER MODEL 42
l.5.l Clients and Servers 42
l.5.2 Application Layering 46
l.5.3 Client-Server Architectures 50
1.6 SUMMARY 53
2 COMMUNICATION
2.l LAYERED PROTOCOLS 58
2.l.l Lower-Level Protocols 6l
2.l.2 Transport Protocols 63
2.l.3 Higher-Level Protocols 66
2.2 REMOTE PROCEDURE CALL 68
2.2.l Basic RPC Operation 69
2.2.2 Parameter Passing 73
2.2.3 Extended RPC Models 77
2.2.4 Example: DCE RPC 80
2.3 REMOTE OBJECT INVOCATION 85
2.3.l Distributed Objects 86
2.3.2 Binding a Client to an Object 88
2.3.3 Static versus Dynamic Remote Method Invocations 90
2.3.4 Parameter Passing 9l
2.3.5 ExamPle l: DCE Remote Objects 93
2.3.6 Example 2: Java RMI 95
2.4 MESSAGE-ORIEmD COMMUNICATION 99
2.4.l Persistence and Synchronicity in Conunnication 99
2.4.2 Message-Oriented Transient Conunnication l04
2.4.3 Message-Oriented Persistent Communication l08
2.4.4 ExamPle: IBM MQSeries ll5
2.5 SmAM-ORIENTED COMMUNICATION ll9
2.5.l Support for Continuous Media l20
2.5.2 Streams and Quality of Service l23
2.5.3 Stream Synchronization l27
2.6 SUMMARY 130
3 PROCESSES 135
3.l THREADS l36
3.l.l Introduchon to Threads l36
3.l.2 Threads in Distributed Systems 14l
3.2 CLIENTS 145
3.2.l User Interfaces l45
3.2.2 Client-Side Software for Distribution Transparency l47
3.3 SERVERS 149
3.3.l General Design Issues l49
3.3.2 Object Servers 152
3.4 CODE MIGRATION 158
3.4.l Approaches to Code Migration 158
3.4.2 Migration and Local Resources 163
3.4.3 Migration in Heterogeneous Systems l65
3.4.4 Example: D'Agents 168
3.5 SOFTWARE AGENTS l73
3.5.l Software Agents in Distributed Systems l73
3.5.2 Agent Technology l75
3.6 SUMMARY l78
4 NAMING
4.l NAMING ENTITIES 184
4.l.l Names, Identifiers, and Addresses l84
4.l.2 Name Resolution l89
4.l.3 The Implementation of a Name Space l94
4.1.4 Example: The Domain Name System 20l
4.1.5 Example: X.500 206
4.2 LOCATING MOBILE ENTITIES 2l0
4.2.l Naming versus Locating Entities 2l0
4.2.2 Simple Solutions 2l2
4.2.3 Home-Based Approaches 216
4.2.4 Hierarchical Approaches 2l7
4.3 REMOVING UNREFERENCED ENTITIES 225
4.3.l The Problem of Unreferenced Objects 225
4.3.2 Reference Counting 227
4.3.3 Reference Listing 23l
4.3.4 Identifying Unreachable Entities 232
4.4 SUMMARY 238
5 SYNCHRONIZATION
5.l CLOCK SYNCHRONIZATION 242
5.1.l Physical Clocks 243
5.l.2 Clock Synchronization Algorithms 246
5.l.3 Use of Synchronized Clocks 25l
5.2 LOGICAL CLOCKS 252
5.2.1 Lamport timestamps 252
5.2.2 Vector timestamps 256
5.3 GLOBAL STATE 258
5.4 ELECTION ALGORITHMS 262
5.4.l The Bully Algorithm 262
5.4.2 A Ring Algorithm 263
5.5 MUTUAL EXCLUSION 265
5.5.l A Centralized Algorithm 265
5.5.2 A Distributed Algorithm 266
5.5.3 A Token Ring Algorithm 269
5.5.4 A Comparison of the Three Algorithms 270
5.6 DISTRIBUTED TRANSACTIONS 27l
5.6.l The Transaction Model 272
5.6.2 Classification of Transactions 275
5.6.3 Implementation 278
5.6.4 Concurrency Control 280
5.7 SUMMARY 288
6 CONSlSTENCY AND REPLICATION
6.l INTRODUCTION 292
6.1.l Reasons for Replication 292
6.l.2 Object Replication 293
6.l.3 Replication as Scaling Technique 296
6.2 DATA-CENTRIC CONSISTENCY MODELS 297
6.2.l Strict Consistency 298
6.2.2 Linearizability and Sequential ConsistCncy 30()
6.2.3 Causal Consistency 305
6.2.4 FIFO Consistency 306
6.2.5 Weak Consistency 308
6.2.6 Release Consistency 3l0
6.2.7 Entry Consistency 3l3
6.2.8 Summary of Consistency Models 3l5
6.3 CLIENT-CENTRIC CONSISTENCY MODELS 3l6
6.3.l Eventual Consistency 3l7
6.3.2 Monotonic Reads 319
6.3.3 Monotonic Writes 320
6.3.4 Read Your Writes 322
6.3.5 Writes Follow Reads 323
6.3.6 Implementation 324
6.4 DISTRIBUTION PROTOCOLS 326
6.4.l Replica Placement 326
6.4.2 Update Propagation 330
6.4.3 Epidendc Protocols 334
6.5 CONSISTENCY PROTOCOLS 337
6.5.l Primary-Based Protocols 337
6.5.2 Replicated-Write Protocols 341
6.5.3 Cache-Coherence Protocols 345
6.6 EXAMPLES 346
6.6.l Orca 347
6.6.2 Causally--Consistent Lazy Replication 352
6.7 SUMMARY 357
7 FAULT TOLERANCE
7.1 INTRODUCTION TO FAULT TOLERANCE 362
7.l.l Basic Concepts 362
7.1.2 Failure Models 364
7.l.3 Failure Masking by Redundancy 366
7.2 PROCESS RESILIENCE 368
7.2.l Design Issues 368
7.2.2 Failure Masking and Replication 370
7.2.3 Agreement in Faulty Systems 371
7.3 RELIABLE CLIENT-SERVER COMMUNICAnON 375
7.3.l Point-to-Point Communication 375
7.3.2 RPC Semantics in the Presence of Failures 375
7.4 RELIABLE GROUP COMMUNICATION 38l
7.4.l Basic Reliable-Multicasting Schemes 38l
7.4.2 Scalability in Reliable Multicasting 383
7.4.3 Atomic Multicast 386
7.5 DISTRIBUTED COMMIT 393
7.5.l Two-Phase Commit 393
7.5.2 Three-Phase Commit 399
7.6 RECOVERY 40l
7.6.l Introduction 401
7.6.2 Checkpointing 404
7.6.3 Message Logging 407
7.7 SUMMARY 4l0
8 SECURITY
8.l INTRODUCTION TO SECURITY 414
8.l.l Security Threats, Policies, and Mechhosms 4l4
8.l.2 Design Issues 420
8.l.3 Cryptography 425
8.2 SECURE CHANNELS 432
8.2.l Authentication 433
8.2.2 Message Integrity and Confidentiality 44l
8.2.3 Secure Group Communication 444
8.3 ACCESS CONTROL 447
8.3.l General Issues in Access Control 447
8.3.2 Firewalls 45l
8.3.3 Secure Mobile Code 453
8.4 SECURITY MANAGEMENT 460
8.4.l Key Management 46l
8.4.2 Secure Group Management 465
8.4.3 Authorization Management 466
8.5 EXAMPLE: KERBEROS 472
8.6 EXAMPLE: SESAME 473
8.6.l SESAME Components 474
8.6.2 Privilege Attribute Certificates (PACs) 477
8.7 EXAMPLE: ELECTRONIC PAYMENT SYSTEMS 478
8.7.1 Electronic Payment Systems 478
8.7.2 Security in ElectrOnic Payment Systems 480
8.7.3 Example Protocols 484
8.8 SUMMARY 488
9 DISTRIBUTED OBJECT-BASED SYSTEMS
9.l CORBA 494
9.l.l Overview of CORBA 495
9.1.2 Communication 50l
9.l.3 Processes 508
9.l.4 Naming 5l4
9.l.5 Synchronization 5l8
9.1.6 Caching and Replication 5l8
9.l.7 Fault Tolerance 520
9.l.8 Security 522
9.2 DISTRIBUTED COM 525
9.2.l Overview of DCOM 526
9.2.2 Communication 53l
9.2.3 Processes 534
9.2.4 Naming 537
9.2.5 Synchronization 54l
9.2.6 Replication 54l
9.2.7 Fault Tolerance 54l
9.2.8 Security 542
9.3 GLOBE 545
9.3.l Overview of Globe 545
9.3.2 Communication 553
9.3.3 Processes 554
9.3.4 Naming 557
9.3.5 Synchronization 559
9.3.6 Replication 560
1 INTRODUCTlON
l.1 DEFINITION OF A DISTRIBUTED SYSTEM 2
l.2 GOALS 4
l.2.l Connecting Users and Resources 4
l.2.2 Transparency 5
1.2.3 Openness 8
l.2.4 Scalability 10
l.3 HARDWARE CONCEPTS l6
l.3.l Multiprocessors l7
l.3.2 Homogeneous MuIticomputer Systems l9
l.3.3 Heterogeneous Multicomputer Systems 2l
l.4 SOFTWARE CONCEPTS 22
l.4.l Distributed Operating Systems 22
l.4.2 Network Operating Systems 33
l.4.3 Middleware 36
l.5 THE CLIENT-SERVER MODEL 42
l.5.l Clients and Servers 42
l.5.2 Application Layering 46
l.5.3 Client-Server Architectures 50
1.6 SUMMARY 53
2 COMMUNICATION
2.l LAYERED PROTOCOLS 58
2.l.l Lower-Level Protocols 6l
2.l.2 Transport Protocols 63
2.l.3 Higher-Level Protocols 66
2.2 REMOTE PROCEDURE CALL 68
2.2.l Basic RPC Operation 69
2.2.2 Parameter Passing 73
2.2.3 Extended RPC Models 77
2.2.4 Example: DCE RPC 80
2.3 REMOTE OBJECT INVOCATION 85
2.3.l Distributed Objects 86
2.3.2 Binding a Client to an Object 88
2.3.3 Static versus Dynamic Remote Method Invocations 90
2.3.4 Parameter Passing 9l
2.3.5 ExamPle l: DCE Remote Objects 93
2.3.6 Example 2: Java RMI 95
2.4 MESSAGE-ORIEmD COMMUNICATION 99
2.4.l Persistence and Synchronicity in Conunnication 99
2.4.2 Message-Oriented Transient Conunnication l04
2.4.3 Message-Oriented Persistent Communication l08
2.4.4 ExamPle: IBM MQSeries ll5
2.5 SmAM-ORIENTED COMMUNICATION ll9
2.5.l Support for Continuous Media l20
2.5.2 Streams and Quality of Service l23
2.5.3 Stream Synchronization l27
2.6 SUMMARY 130
3 PROCESSES 135
3.l THREADS l36
3.l.l Introduchon to Threads l36
3.l.2 Threads in Distributed Systems 14l
3.2 CLIENTS 145
3.2.l User Interfaces l45
3.2.2 Client-Side Software for Distribution Transparency l47
3.3 SERVERS 149
3.3.l General Design Issues l49
3.3.2 Object Servers 152
3.4 CODE MIGRATION 158
3.4.l Approaches to Code Migration 158
3.4.2 Migration and Local Resources 163
3.4.3 Migration in Heterogeneous Systems l65
3.4.4 Example: D'Agents 168
3.5 SOFTWARE AGENTS l73
3.5.l Software Agents in Distributed Systems l73
3.5.2 Agent Technology l75
3.6 SUMMARY l78
4 NAMING
4.l NAMING ENTITIES 184
4.l.l Names, Identifiers, and Addresses l84
4.l.2 Name Resolution l89
4.l.3 The Implementation of a Name Space l94
4.1.4 Example: The Domain Name System 20l
4.1.5 Example: X.500 206
4.2 LOCATING MOBILE ENTITIES 2l0
4.2.l Naming versus Locating Entities 2l0
4.2.2 Simple Solutions 2l2
4.2.3 Home-Based Approaches 216
4.2.4 Hierarchical Approaches 2l7
4.3 REMOVING UNREFERENCED ENTITIES 225
4.3.l The Problem of Unreferenced Objects 225
4.3.2 Reference Counting 227
4.3.3 Reference Listing 23l
4.3.4 Identifying Unreachable Entities 232
4.4 SUMMARY 238
5 SYNCHRONIZATION
5.l CLOCK SYNCHRONIZATION 242
5.1.l Physical Clocks 243
5.l.2 Clock Synchronization Algorithms 246
5.l.3 Use of Synchronized Clocks 25l
5.2 LOGICAL CLOCKS 252
5.2.1 Lamport timestamps 252
5.2.2 Vector timestamps 256
5.3 GLOBAL STATE 258
5.4 ELECTION ALGORITHMS 262
5.4.l The Bully Algorithm 262
5.4.2 A Ring Algorithm 263
5.5 MUTUAL EXCLUSION 265
5.5.l A Centralized Algorithm 265
5.5.2 A Distributed Algorithm 266
5.5.3 A Token Ring Algorithm 269
5.5.4 A Comparison of the Three Algorithms 270
5.6 DISTRIBUTED TRANSACTIONS 27l
5.6.l The Transaction Model 272
5.6.2 Classification of Transactions 275
5.6.3 Implementation 278
5.6.4 Concurrency Control 280
5.7 SUMMARY 288
6 CONSlSTENCY AND REPLICATION
6.l INTRODUCTION 292
6.1.l Reasons for Replication 292
6.l.2 Object Replication 293
6.l.3 Replication as Scaling Technique 296
6.2 DATA-CENTRIC CONSISTENCY MODELS 297
6.2.l Strict Consistency 298
6.2.2 Linearizability and Sequential ConsistCncy 30()
6.2.3 Causal Consistency 305
6.2.4 FIFO Consistency 306
6.2.5 Weak Consistency 308
6.2.6 Release Consistency 3l0
6.2.7 Entry Consistency 3l3
6.2.8 Summary of Consistency Models 3l5
6.3 CLIENT-CENTRIC CONSISTENCY MODELS 3l6
6.3.l Eventual Consistency 3l7
6.3.2 Monotonic Reads 319
6.3.3 Monotonic Writes 320
6.3.4 Read Your Writes 322
6.3.5 Writes Follow Reads 323
6.3.6 Implementation 324
6.4 DISTRIBUTION PROTOCOLS 326
6.4.l Replica Placement 326
6.4.2 Update Propagation 330
6.4.3 Epidendc Protocols 334
6.5 CONSISTENCY PROTOCOLS 337
6.5.l Primary-Based Protocols 337
6.5.2 Replicated-Write Protocols 341
6.5.3 Cache-Coherence Protocols 345
6.6 EXAMPLES 346
6.6.l Orca 347
6.6.2 Causally--Consistent Lazy Replication 352
6.7 SUMMARY 357
7 FAULT TOLERANCE
7.1 INTRODUCTION TO FAULT TOLERANCE 362
7.l.l Basic Concepts 362
7.1.2 Failure Models 364
7.l.3 Failure Masking by Redundancy 366
7.2 PROCESS RESILIENCE 368
7.2.l Design Issues 368
7.2.2 Failure Masking and Replication 370
7.2.3 Agreement in Faulty Systems 371
7.3 RELIABLE CLIENT-SERVER COMMUNICAnON 375
7.3.l Point-to-Point Communication 375
7.3.2 RPC Semantics in the Presence of Failures 375
7.4 RELIABLE GROUP COMMUNICATION 38l
7.4.l Basic Reliable-Multicasting Schemes 38l
7.4.2 Scalability in Reliable Multicasting 383
7.4.3 Atomic Multicast 386
7.5 DISTRIBUTED COMMIT 393
7.5.l Two-Phase Commit 393
7.5.2 Three-Phase Commit 399
7.6 RECOVERY 40l
7.6.l Introduction 401
7.6.2 Checkpointing 404
7.6.3 Message Logging 407
7.7 SUMMARY 4l0
8 SECURITY
8.l INTRODUCTION TO SECURITY 414
8.l.l Security Threats, Policies, and Mechhosms 4l4
8.l.2 Design Issues 420
8.l.3 Cryptography 425
8.2 SECURE CHANNELS 432
8.2.l Authentication 433
8.2.2 Message Integrity and Confidentiality 44l
8.2.3 Secure Group Communication 444
8.3 ACCESS CONTROL 447
8.3.l General Issues in Access Control 447
8.3.2 Firewalls 45l
8.3.3 Secure Mobile Code 453
8.4 SECURITY MANAGEMENT 460
8.4.l Key Management 46l
8.4.2 Secure Group Management 465
8.4.3 Authorization Management 466
8.5 EXAMPLE: KERBEROS 472
8.6 EXAMPLE: SESAME 473
8.6.l SESAME Components 474
8.6.2 Privilege Attribute Certificates (PACs) 477
8.7 EXAMPLE: ELECTRONIC PAYMENT SYSTEMS 478
8.7.1 Electronic Payment Systems 478
8.7.2 Security in ElectrOnic Payment Systems 480
8.7.3 Example Protocols 484
8.8 SUMMARY 488
9 DISTRIBUTED OBJECT-BASED SYSTEMS
9.l CORBA 494
9.l.l Overview of CORBA 495
9.1.2 Communication 50l
9.l.3 Processes 508
9.l.4 Naming 5l4
9.l.5 Synchronization 5l8
9.1.6 Caching and Replication 5l8
9.l.7 Fault Tolerance 520
9.l.8 Security 522
9.2 DISTRIBUTED COM 525
9.2.l Overview of DCOM 526
9.2.2 Communication 53l
9.2.3 Processes 534
9.2.4 Naming 537
9.2.5 Synchronization 54l
9.2.6 Replication 54l
9.2.7 Fault Tolerance 54l
9.2.8 Security 542
9.3 GLOBE 545
9.3.l Overview of Globe 545
9.3.2 Communication 553
9.3.3 Processes 554
9.3.4 Naming 557
9.3.5 Synchronization 559
9.3.6 Replication 560
猜您喜欢