Distributed Systems: Concepts and Design Third Edition
George Coulouris, Jean Dollimore and Tim Kindberg
From reviews of the second edition: "I do not know of a better book in the area of distributed systems and can recommend this one without hesitation." Jan Madey, IEEE Parallel and Distributed Technology
"' the best introductory distributed systems textbook" E. Douglas Jensen's Annotated List of Recommended Distributed Computing System Books
The third edition of this best-selling text incorporates the major recent developments in distributed systems technology. All chapters have been thoroughly revised and updated, with emphasis on the Internet, intranets, the Web and middleware. Other new topics include: fault modelling and fault tolerance, distributed objects and distributed multimedia systems. There is increased emphasis on algorithms and the discussion of security has been brought forward in the text and integrated with other related technologies. Unlike the previous editions, prior knowledge of UNIX is not required to follow the text.
As with previous editions, this book is intended to provide knowledge of the principles and practice of distributed system design. Information is conveyed in sufficient depth to allow readers to evaluate existing systems or design new ones. Case studies illustrate the design concepts for each major topic.
New to the third edition: · New chapters on quality of service for multimedia systems, algorithms for coordination and agreement and CORBA · Expanded coverage of the Internet and applications including the Web. ·Material on mobile computing and new network technologies such as IPv6, Mobile IP and wireless networks. · More emphasis on object orientation, with Java and CORBA as the basis for most examples. · New material on Internet security, fault modelling, fault tolerance and models of system execution.
Until recently, the authors were jointly responsible for several undergraduate and postgraduate courses on distributed systems at Queen Mary and Westfield College, University of London.
George Coulouris is now an emeritus professor at Queen Mary and Westfield College and is a Senior Visiting Fellow in the Laboratory for Communications Engineering, Cambridge University, where he leads a research project on quality of service for dynamically reconfigurable multimedia systems. He has recently undertaken research on computer-supported cooperative work and its applications, middleware for distributed multimedia and security models for groupware.
Jean Dollimore is now a Senior Research Fellow at Queen Mary and Westfield College. She has recently carried out research on system support for computer-supported cooperative work, middleware for distributed multimedia and security models for groupware.
Tim Kindberg is a researcher at Hewlett-Packard Laboratories, Palo Alto, where he is investigating a web-based infrastructure for mobile computing that enables the physical world to be augmented with web resources. He has previously led a research project on system support for computer-supported cooperative work, and has undertaken research on distributed operating systems and middleware for distributed multimedia systems.
George F. Coulouris was a British computer scientist and the son of actor George Coulouris. He was an emeritus professor of Queen Mary, University of London and formerly visiting professor in residence at University of Cambridge Computer Laboratory. He was co-author of a textbook on distributed systems. He was instrumental in the development of ICL's Content Addressable File Store (CAFS) and he developed em, the Unix editor, which inspired Bill Joy to write vi.
I'm very discouraged by comments that call this book the 'best book' on distributed computing. For one it's incredibly dated. It's like time stopped in 2005. The Java code snippets are unnecessary and do not employ best coding practices. It does have some decent computer history in terms of networking and design, but it's just too difficult to get over how irrelevant some of the information is. I'm looking at the 5th edition (published 2011) and it just comes across as a money grab.
A solid resource. Case study of Google is particularly well written. The section on distributed databases feels disconnected from the rest of the book. The content is complemented by Santa Cruz lectures on Youtube
It's my own fault, of course. This book has been trundling around my to-read pile for at least ten years. Having finished it, I'm now curious how the state of the art has advanced in the fifteen years since the second edition was published.
Case studies work well for me, especially when I can I have an interest in the study object itself, and here the best was a mock-up of a distributed file service. Reading it took longer than expected simply because I kept a notebook handy as was sketching out a design.
Other sections don't have such a study, especially for the long slow slog of the middle. About halfway through the book my patience broke and I started skimming.
I'm definitely keeping it on hand, in case it becomes useful for something I may have to build someday.
An approachable read, filled with surprisingly relevant case studies. An ideal handbook for the student or professional developer who wants to get their hands dirty with distributed systems.
With all the applications out there being (slowly) converted from sad monoliths into fast distributed microservices, the interest in distributed systems has obviously skyrocketed. I am not sure if it's because it's huge or because it's the fifth edition (suggesting the previous four were successful), but among the many titles available this felt like the one to start with. It is not.
The book is divided into parts (seven by heart) and a nice schema shows us how we can move in case we are only interested in a particular area (say security). Starting with the first chapter already, reading the book feels like listening to a long and very generic talk about some basic concept of telecommunication/computer networks. Next to these we find, instead, that the authors dive deeply into unnecessary details, such as the UDP protocol.
Let's face it. Anyone working with distributed systems must know the difference between TCP and UDP and the pros/cons of both. These concepts are usually taught during the very first computer networks class at the university, were the ISO/OSI stack is analyzed in great detail. Distributed systems should be the next step. Those concepts should be taken for granted.
What is the point of discussing the UDP datagram or how Java supports sending data over UDP in a Distributed systems title? Again, do we really need to be explained the difference between little endian and big endian here?
The book is well written, no doubts about this. But it fails to deliver real value to anyone interested in distributed systems. I was honestly expecting real life scenarios, discussions about highly-availability, scaling, how to deal with failures, security, just to mention some. None of this is given to the readers.
A big disappointment. Not to mention the price of the hardcover book, which is way beyond its real value or the price any book should have (180$). Knowledge should be easily accesible.