Features
- Cover Type: Hard Cover with 300 pages
- Published by: Springer
- Edition: 1st Edition April 11, 2006
- Written in: English
- ISBN 10 Number: 3540288457
- ISBN 13 Number: 978-3540288459
-
Book Dimensions:
9.4 x 6.4 x 0.9 inches
- Weighs: 1.3 pounds
Product Review
From the reviews:
"This book deals with distributed systems. But unlike all other books in this area it treats the subject from a modular, specification viewpoint and not from the classical algorithmic view point. … This book is very remarkable, because it marks a change in attitude within computer science." (Jan Friso Groote, Zentralblatt MATH, Vol. 1095 (21), 2006)
Product Description
In modern computing a program is usually distributed among several processes. The fundamental challenge when developing reliable distributed programs is to support the cooperation of processes required to execute a common task, even when some of these processes fail.
Guerraoui and Rodrigues present an introductory description of fundamental reliable distributed programming abstractions as well as algorithms to implement these abstractions. The authors follow an incremental approach by first introducing basic abstractions in simple distributed environments, before moving to more sophisticated abstractions and more challenging environments. Each core chapter is devoted to one specific class of abstractions, covering reliable delivery, shared memory, consensus and various forms of agreement.
This textbook comes with a companion set of running examples implemented in Java. These can be used by students to get a better understanding of how reliable distributed programming abstractions can be implemented and used in practice. Combined, the chapters deliver a full course on reliable distributed programming. The book can also be used as a complete reference on the basic elements required to build reliable distributed applications.
Reader ReviewsThe book is about abstractions and algorithms for distributed programming. Arguably, the abstractions are considered to be at least as important as the algorithms. The abstractions effectively are assumptions that let you push down certain details into lower level code. A very modular approach that allows for a solid object oriented design. Notably, you should not have to worry about the semantics of pushing bytes from one machine to another. Network programming is now so well established that you won't have to write code to move a byte set. So there is a stable, debugged network protocol stack. (Not necessarily TCP/IP, to be sure.) The algorithms in the book can then focus on such matters as how to distribute data and collect results across a network of machines. Very importantly, to also detect when a machine might have timed out or otherwise generated a failure.