Distributed Systems: Concepts and DesignEdition 3

PREFACE

This third edition
of our textbook arrives at a time when distributed systems, particularly
the Web and other Internet-based applications and services, are
of unprecedented interest and importance. The book aims to convey
insight into, and knowledge of, the principles and practice underlying
the design of distributed systems, both Internet-based and otherwise.
Information is provided in sufficient depth to allow readers to
evaluate existing systems or design new ones. Detailed case studies
illustrate the concepts for each major topic.

Distributed systems techniques
developed over the last two to three decades, such as interprocess
communication and remote invocation, distributed naming, cryptographic
security, distributed file systems, data replication and distributed
transaction mechanisms, provide the run-time infrastructure supporting
today's networked computer applications.

Distributed system development
relies increasingly on middleware support through the use of software
frameworks that provide abstractions such as distributed shared
objects, and services including secure communication, authentication
and access control, mobile code, transactions and persistent storage
mechanisms.

In the near future, distributed
applications will enable closer cooperation between users through
replicated data and multimedia data streams, and will support
user and device mobility using wireless and spontaneous networking.

Developers of distributed systems
and applications now benefit from a range of useful languages,
tools and environments. These enable students as well as professional
developers to construct working distributed applications.

Purposes and readership

The book is intended
for use in undergraduate and introductory postgraduate courses.
It can equally be used for self-study. We take a top-down approach,
addressing the issues to be resolved in the design of distributed
systems and describing successful approaches in the form of abstract
models, algorithms and detailed case studies of widely-used systems.
We cover the field in sufficient depth and breadth to enable readers
to go on to study most research papers in the literature on distributed
systems.

We aim to make the subject
accessible to students who have a basic knowledge of object oriented
programming, operating systems and elementary computer architecture.
The book includes coverage of those aspects of computer networks
relevant to distributed systems, including the underlying technologies
for the Internet, wide area, local area and wireless networks.
Algorithms and interfaces are presented throughout the book in
Java or, in a few cases, ANSI C. For brevity and clarity of presentation,
a form of pseudo-code derived from Java/C is also used.

Organization of the book

The following diagram
shows the book's chapters under five main topic areas. It is intended
to provide a guide to the book's structure and to indicate recommended
navigation routes for instructors wishing to provide, or readers
wishing to achieve, understanding of the various subfields of
distributed system design:

References

The existence of the
World Wide Web has changed the way in which a book such as this
can be linked to source material including research papers, technical
specifications and standards. Many of the source documents are
now available on the web; some are available only there. For reasons
of brevity and readability, we employ a special form of reference
to web material which loosely resembles a URL: references such
as [ www.omg.org ] and [ www.rsasecurity.com I
] refer to documentation that is available only on the web. They
can be looked up in the reference list at the end of the book,
but the full URLs are given only in an online version of the reference
list at the book's web site: www.cdk3.net/refs where they take
the form of clickable links. Both versions of the reference list
include a more detailed explanation of this scheme.

Changes for this edition

This third edition
appears some six years after the second edition. The work done
to produce this edition is summarized in the table above. The
introductory chapters and some others have been largely rewritten
and several new chapters have been introduced to reflect new perspectives
and technical directions. There has been much reorganization in
other chapters, affecting the topics covered, the depth of coverage
and the location of material. We have condensed older material
to make space for new topics. Some material has been moved to
a more prominent position to reflect its new significance. The
case studies removed from the second edition can be found on the
book's web site, as described below.

Rewritten
and extended chapters:

1
3
4
5
7
10
14

Characterization
of DS
Networking and Internetworking
Interprocess Communication
Distributed Objects and Remote Invocation
Security
Time and Global States
Replication

Acknowledgements

We are grateful to
the many classes of students at Queen Mary and Westfield College
whose contributions in seminars and lectures have helped us to
produce this new edition, as have the helpful suggestions of many
teachers elsewhere. Kohei Honda tested early drafts in classes
at QMW and this resulted in some particularly valuable comments.

The following gave their time
unstintingly to review substantial portions of the final draft,
resulting in substantial improvements: Angel Alvarez, Dave Bakken,
John Barton, Simon Boggis, Brent Callaghan, Keith Clarke, Kurt
Jensen and Roger Prowse.

We should also like to thank
the following, who either gave permission to use their material
or suggested topics for inclusion in the book: Tom Berson, Antoon
Bosselaers, Ralph Herrtwitch, Frederick Hirsch, Bob Hopgood, Ajay
Kshemkalyan, Roger Needham, Mikael Pettersson, Rick Schantz and
David Wheeler.

We are grateful to the Department
of Computer Science, Queen Mary and Westfield College, for hosting
the companion web site and to Keith Clarke and Tom King for their
support in setting it up.

Finally, we thank Keith Mansfield,
Bridget Allen, Julie Knight and Kristin Erickson of Pearson Education/Addison-Wesley
for essential support throughout the arduous process of getting
the book into print.

Web site

We maintain a web site
with a wide range of material designed to assist teachers and
readers. It can be accessed via either of the URLs:

Reference list

The list of references
that can be found at the end of the book is replicated at the
web site. The web version of the reference list includes active
links for material that is available online.

Errata list

A list of errors that
are discovered in the book, with corrections for them.

Supplementary material

We plan to maintain
a set of supplementary material for each chapter. Initially, this
consists of source code for the programs in the book and relevant
reading material that was present in the previous edition of the
book but was removed from this one for reasons of space. References
to this supplementary material appear in the book with links such
as www.cdk3.net/ipc .

Contributed teaching material

We hope to extend the
supplementary material to cover new topics as they emerge during
the lifetime of this edition. In order to do so, we invite teachers
to submit teaching material, including lecture notes and laboratory
projects. A procedure for the submission of supplementary material
is described at the web site. Submissions will be reviewed by
a team including several teachers who are users of the book.

Links to web sites for
courses using the book

Teachers are asked
to notify us of their courses with URLs for inclusion in the list.

Instructor's Guide

Comprising:

Complete artwork of the
book in a form suitable for use as slide masters.

Solutions to the exercises
(protected by a password available only to teachers).