Distributed Architectures

Distributed Systems: Concepts and Design, 5th EditionCoulouris, G., Dollimore, J., Kindberg, T., Blair, G., (2012) Distributed Systems – Concepts and Design, Fifth Edition, Peasrson Education, Inc.

Broad and up-to-date coverage of the principles and practice in the fast moving area of Distributed Systems.

Distributed Systems provides students of computer science and engineering with the skills they will need to design and maintain software for distributed applications. It will also be invaluable to software engineers and systems designers wishing to understand new and future developments in the field.

From mobile phones to the Internet, our lives depend increasingly on distributed systems linking computers and other devices together in a seamless and transparent way. The fifth edition of this best-selling text continues to provide a comprehensive source of material on the principles and practice of distributed computer systems and the exciting new developments based on them, using a wealth of modern case studies to illustrate their design and development. The depth of coverage will enable readers to evaluate existing distributed systems and design new ones.

Download PDF (9,932KB)

Visit the publisher’s website at https://www.pearsonhighered.com/program/Coulouris-Distributed-Systems-Concepts-and-Design-5th-Edition/PGM85317.html

Further extensive resources are available at: http://www.cdk5.net/wp/

Foundations
1 Characterization of DS
2 System Models
3 Networking and Internetworking
4 Interprocess Communication
5 Remote Invocation
6 Indirect Communication
7 Operating System Support

Middleware
8 Dist. Objects and Components
9 Web Services
10Peer-to-Peer Systems

System services
11 Security
12 Distributed File Systems
13 Name Services

Distributed algorithms
14 Time and Global States
15 Coordination and Agreement

Shared data
16 Transactions and Concurrency Control
17 Distributed Transactions
18 Replication

New challenges
19 Mobile and Ubiquitous Computing
20 Distributed Multimedia Systems

Substantial Case Study

21 Designing Distributed Systems: Google Case Study


Tanenbaum, Andrew S. , van Steen, Maarten. (2007) Distributed Systems – Principles and Paradigms, Second Edition, Pearson Education, Inc.

Download PDF (9.809KB)

Visit publisher’s website at https://www.pearsonhighered.com/program/Tanenbaum-Distributed-Systems-Principles-and-Paradigms-2nd-Edition/PGM104647.html

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.

Goals
Distributed systems often appear to be highly complex and intertwined networked systems. Touching one component often affects many others in surprising ways. In this book, we aim at explaining the basics of distributed systems by systematically taking different perspectives, and subsequently bringing these perspectives together by looking at often-applied organizations of distributed systems. The book is now in its second edition and is gradually being updated toward a next edition (expected to be completed in 2016).

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

Further resources and information at: http://www.distributed-systems.net/index.php?id=distributed-systems-principles-and-paradigms

  • An official set of PPT slides developed by the publisher (45 MB).
  • A set of PDF slides that I developed and maintained for my own courses.
  • All figures from the book are also available.

Tapscott, D. and Williams, A. D. (2008) Wikinomics – How Mass Collaboration Changes Everything, Atlantic Books

Companion Web Site: http://www.wikinomics.com/book/

The knowledge, resources and computing power of billions of people are self-organizing into a massive, new collective force. Interconnected and orchestrated via blogs, wikis, chat rooms, peer-to-peer networks, and personal broadcasting, the web is being reinvented to provide the first global platform for collaboration in history. Wikinomics is the essential analysis of the new Web 2.0 world.

In the last few years, traditional collaboration—in a meeting room, a conference call, even a convention center—has been superceded by collaborations on an astronomical scale.

Today, encyclopedias, jetliners, operating systems, mutual funds, and many other items are being created by teams numbering in the thousands or even millions. While some leaders fear the heaving growth of these massive online communities, Wikinomics proves this fear is folly. Smart firms can harness collective capability and genius to spur innovation, growth, and success.

A brilliant primer on one of the most profound changes of our time, Wikinomics challenges our most deeply-rooted assumptions about business and will prove indispensable to anyone who wants to understand the key forces driving competitiveness in the twenty-first century.
Based on a $9 million research project led by bestselling author Don Tapscott, Wikinomics shows how the masses of people can participate in the economy like never before. They are creating TV news stories, sequencing the human genome, remixing their favorite music, designing software, finding a cure for disease, editing school texts, inventing new cosmetics, and even building motorcycles.