This site best when viewed with a modern standards-compliant browser. We recommend Firefox Get Firefox!.

Linux-HA project logo
Providing Open Source High-Availability Software for Linux and other OSes since 1999.

USA Flag UK Flag

Japanese Flag

ホームページ

サイトについて

コンタクト情報

使用条件

協力方法

セキュリティ

This web page is no longer maintained. Information presented here exists only to avoid breaking historical links.
The Project stays maintained, and lives on: see the Linux-HA Reference Documentation.
To get rid of this notice, you may want to browse the old wiki instead.

2010.1.28
追加パッケージ集リニューアル
追加パッケージ集は、こちらから

2008.8.28
RHEL用rpm更新
更新情報はこちらから

2008.8.18
Heartbeat 2.1.4
リリース!
Downloadはこちらから

2007.11.13
Linux-ha-japan日本語ML移植しました

2007.10.5
日本語サイトOPEN
日本語MLも開設しました

2007.10.5
OSC2007 Tokyo/Fall で Heartbeat紹介
発表資料を公開しました

Last site update:
2017-12-14 23:46:42

Remote Procedure Call

We use the term Remote Procedure Call here to mean any type of procedure call between one process and another. All of the remote procedure calls we're talking about here (up to now) are all really between processes on the same machine, not across machines.

This greatly simplifies the security aspects of this design, since ClientAuthentication is much simpler when clients are local on the same machine.

Normal (synchronous) remote procedure calls are performed by:

  • Client packaging the arguments up in a big blob
  • Client sends them to the server
  • Server receives the request and unpackages the arguments
  • Server processes the request
  • Server packages up return results into a blob
  • Server sends return results to client

Asynchronous remote procedure calls are performed similarly, but the return result is sent later.

  • Client packaging the arguments up in a big blob
  • Client sends them to the server
  • Server receives the request and unpackages the arguments
  • Server validates the request, assigns it an AsyncRequestId, and queues it for execution

  • Server packages the AsyncRequestId (or error return)

  • Server sends the immediate return result to the client
  • Server performs the request specified by the AsyncRequestId

  • Request completes on the server
  • Server packages up return results into a blob
  • Server sends return results to client as an AsyncEventMessage

  • Client reads AsyncEventMessage to learn the real return result from the request.

The process of "packaging up arguments into a big blob" and doing the unpackaging goes by various names. Common names include marshalling/demarshalling, pickling, or serializing.