Distributed Computing: Principles and Applications

0
905

Distributed Computing: Principles and Applications M. L. Liu, First Edition, Addison Wesley Publishing Company, Boston, MA, 2003 448 pages, $89.40 Language: English ISBN: 0201796449 Distributed computing, one of the most highly implemented computer theories, is a computing methodology in which tasks are collaborated among collections of interconnected, independent computers. The World Wide Web, Remote Procedure Call (RPC), Java Remote Method Invocation (Java RMI) and collaborative application such as mobile agent systems are some common examples of distributed computing. With the recent growth of net-centric applications, it is essential to equip undergraduate students with the necessary knowledge to attend to and fulfill such demands. As the author suggested in the preface, the purpose of Distributed Computing: Principles and Applications is to introduce to undergraduate students the different paradigms of distributed computing, as well as to provide programming examples to reinforce topics within each paradigm. The book is organized into two key parts: chapter 1 through chapter 3 educates readers about the fundamental concepts and the various paradigms of distributed computing; the remaining 9 chapters further explains each paradigm in greater detail and promotes clarification through code examples. At the end of each chapter, the author supplies a summary of the significant subjects as well as a set of exercise problems. Relevant references are also provided to direct interested readers to further resources. In the first part of the book (chapter 1, 2 and 3), the author first defines distributed computing and then presents the principles of distributed computing from different perspectives including operating system, network and software engineering. To ensure that readers wholly comprehend the communication mechanism behind distributed computing, the author discusses interprocess communications thoroughly. The first part ends with a classification of various paradigms of distributed applications with respect to their level of abstraction. The trade-offs among the different levels of abstractions are also discussed to educate readers on some of the issues that need to be considered when choosing an appropriate paradigm. The second part of the book (chapter 4s through 12) provides in-depth discussions of each paradigm. Examples and sample codes are used to help illustrate the communication mechanism of each paradigm in each chapter. Chapter 4 demonstrates distributed computing using the socket API, the lowest level of abstraction, and illustrates this with both datagram and stream-mode sockets of Java socket APIs. Built on top of the socket API, the client-server paradigm is the most commonly implemented approach in networked environments. The Internet is one such example; and chapter 9 and 11 further elaborates on the different applications that exist on the Internet. Chapter 6 discusses group communication involving multicast mechanisms. The author then focuses on the distributed objects in chapter 7, 8, and 10, where she covers Remote Procedure Call (RPC), Remote Method Invocation (RMI), Common Object Request Broker Architecture (COBRA) and Java Interface Definition Language (IDL). Finally, the book ends with an overview of the current advanced distributed computing areas including message queue system, mobile agents, network services, object spaces and collaborative computing. Overall, this book is more informative than practical, in that it attempts to cover many significant distributed computing methodologies without thoroughly explaining everything to ensure the concepts can be grasped by undergraduate students. Although there are code examples in most chapters, they are intended for illustration purposes and lack challenge. Exercises in the end of each chapter are reasonable, but could include more advanced problems to encourage students to seek additional relevant knowledge beyond the book. References are adequate and can be improved with more recent studies. It may also be good to introduce well known distributed computing projects such as the BOINC to students. Despite some grammar imperfection, the book itself does provide excellent introduction materials to students with little or none knowledge of distributed computing.