An idempotent operation is an operation that can be performed repeatedly with the same effect as if it had been performed exactly once.
If operations are not idempotent, the server must ensure that the same request is not executed twice. Keep a history of all requests and replies. The same reply can be sent without re-executing if a request is resent.
Request = Request-Line *(header CRLF) CRLF [ message-body ]
Request-Line = Method space Request-URI space HTTP-Version CRLF
GET /index.html HTTP/1.1\r\n foo 42 \r\n\r\nHello
CRLF: carriage return; line feed.
RPC is a mechanism that allows a program running on one computer (VM) to cause a procedure to be executed on another computer (VM) without the programmer needing to code for this explicitly.
Two processes are involved:
On each RPC, the server starts a new process to execute the call.
Concurrent invocations might interfere when accessing shared objects – might need synchronization.
A remote object is passed as a reference (by reference), i.e., it remains at the original place it was created.
A serializable object is passed as a copy (by value), i.e., the object is duplicated.