Expanding on the highly successful formula of the first edition, this book now serves as the primary textbook of choice for any algorithm design course while maintaining its status as the premier practical reference guide to algorithms.

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.

A practical, nuts-and-bolts guide to architectural solutions that describes step-by-step how to design robustness and flexibility into an Internet-based system Based on real-world problems and systems, and illustrated with a running case study Enables software architects and project managers to ensure that nonfunctional requirements are met so that the system won't fall over, that it can be maintained and upgraded without being switched off, and that it can deal with security, scalability, and performance demands Platform and vendor independence will empower architects to challenge product-dictated limitations