This new edition represents a significant update of the best-selling book, incorporating and anticipating the major developments in distributed systems technology. All chapters have been thoroughly revised and updated, including emphasis on the Internet, intranets, and middleware. New material includes coverage of large-scale applications, fault modeling and fault tolerance, models of system execution, object-orientation, and distributed multimedia systems. Discussion of security has also been brought forward in the book and integrated with other related technologies. The book includes a new chapter on distributed multimedia systems, and also provides new material on current network technologies such as IPv6, Mobile IP, and active and wireless networks. Throughout, Java and CORBA are used as the basis for most examples. This book is designed for programmers who need to learn the principles and practice of distributed system design. Readers should have an understanding of programming and elementary computer architecture, as well as a familiarity with basic operating system concepts, but the book does not require knowledge of networks.
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.