Assignment 1

Due Wednesday September 26, 2018 6:55pm via sakai

Introduction

Please answer the questions precisely and concisely. Every question can be answered in one or at most a few sentences. I will not have the patience to read long paragraphs or essays and you may lose credit for possibly correct answers.

Note: submissions must be be plain text or pdf files – or HTML if embedded within sakai and not uploaded. Other formats, such as Microsoft Word, Apple Pages, or Adobe InDesign will NOT be accepted.

Reading

Google Code University, Introduction to Distributed System Design
Google Code University is no longer supported by Google but this cached introduduction to distributed system design is still relevant. You need to read this for questions 1–3.
Andrew S. Tanenbaum, Robbert van Renesse, A Critique of the Remote Procedure Call Paradigm
This is a paper from the early days of remote procedure calls. Some references to old architectures and memory sizes are extremely outdated but many of the general critiques are still valid. Note that the authors’ use of the term virtual circuits simply refers to message-based communication over reasonably reliable channels, such as communicating via TCP streams. You need to read this for questions 4–5.
M. Vaqqas, RESTful Web Services: A Tutorial, Dr. Dobb’s, September 23, 2014
You need to read this for questions 6–7.

Questions

Question 1.

How does an omission failure differ from a general network failure?

Question 2.

Halting failure and fail-stop are terms that are often used interchangably. What is the distinction between them?

Question 3.

How does caching differ from replication?

Question 4.

What two approaches does the paper propose for passing reference parameters in remote procedure calls?

Question 5.

What is a potential problem of calling nonidempotent remote procedures?

Question 6.

RESTful Web Services use HTTP to request operations and provide parameters, rather than embedding the entire nature of request in the message body. For normal web interactions, our browsers use the following HTTP methods:

GET: request a page
POST: submit a form, send data to a server

What additional four HTTP methods are used in RESTful services?

Question 7.

What does it mean for a service to be stateless?