Interstage Application Server アプリケーション作成ガイド (イベントサービス編)
目次 索引 前ページ次ページ

第1章 機能> 1.3 基礎知識> 1.3.1 通信モデル

1.3.1.4 Pushモデルのデータ管理

 Pushモデルでのイベントデータの管理について説明します。

(1) イベントデータの送受信

 イベントチャネルでのイベントデータの送受信の概要を説明します。イベントチャネルは、サプライヤからイベントデータを受信します。受信したイベントデータは、イベントチャネル内に蓄積します。次に接続しているすべてのコンシューマにイベントデータを送信します。送信を完了するとイベントチャネル上のイベントデータを削除します。その概要を以下に示します。

 上図のイベントデータの送信、受信、削除までの処理について以下に説明します。イベントチャネルでは、すべてのコンシューマへPushを発行した(4)後に、イベントチャネル上のイベントデータを削除します。

  1. コンシューマ1、コンシューマ2がイベントチャネルに接続します。
  2. サプライヤからイベントチャネルへ、イベントデータを送信します。
  3. イベントチャネルからコンシューマ1へ、イベントデータを送信します。
  4. イベントチャネルからコンシューマ2へ、イベントデータを送信します。その後、イベントチャネルはイベントデータを削除します。

(2) 送信スレッド

 イベントチャネルの環境設定で述べた送信スレッドについて説明します。送信スレッドは、イベントチャネルからコンシューマにイベントデータを送信するスレッドです。その概要を以下に示します。以下の図は1つの送信スレッドにより4つのコンシューマに送信する例です。サプライヤからコンシューマまでのイベントデータの送受信処理について以下に説明します。

  1. サプライヤからイベントチャネルへ、イベントデータを送信します。イベントチャネルのPush処理部に一時的にイベントデータを蓄積します。
  2. イベントチャネルのPush処理部から送信スレッドにイベントデータを渡します。イベントデータを送信スレッドに渡してしまうと、イベントチャネルは蓄積したイベントデータを削除します。
  3. 送信スレッドは、その時点で接続しているコンシューマに対してイベントデータを送信します。

 コンシューマが多数存在する場合に、essetcnfコマンドおよびessetcnfchnlコマンドの送信スレッド数(-sthinitオプションと-sthmaxオプション)を増やすとイベントデータのコンシューマへの到達時間を均一化することができます。上図では送信スレッドが1つのため、4つのコンシューマに対して送信します。送信スレッドを2つにした場合の例を以下の図に示します。以下の図では4つのコンシューマを2つのブロックに分割し、それぞれのブロックに1つの送信スレッドが対応しています。送信スレッドは並行に動作するため、コンシューマの間でのイベントデータの到達時間の遅延を小さくすることができます。

 なお、ここではイベントチャネルとコンシューマ間のネットワークのオーバヘッドが均一なものとして説明しています。送信スレッドを複数にした場合について以下に説明します。

  1. サプライヤからイベントチャネルへ、イベントデータを送信します。イベントチャネルのPush処理部に一時的にイベントデータを蓄積します。
  2. イベントチャネルのPush処理部から2つの送信スレッドに順にイベントデータを渡します。接続しているコンシューマをブロック分割して、ブロックに1つの送信スレッドを割り当てます。イベントデータをすべての送信スレッドに渡してしまうと、イベントチャネルは蓄積したイベントデータを削除します。
  3. 送信スレッド1は、割り当てられたブロックのコンシューマ1とコンシューマ2にイベントデータを送信します。
  4. 送信スレッド2は、割り当てられたブロックのコンシューマ3とコンシューマ4にイベントデータを送信します。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005