-
Notifications
You must be signed in to change notification settings - Fork 3
Castoro::gateway function details
lamatsujun edited this page Mar 27, 2012
·
6 revisions
Home > Components >
Gateway は主機能「 Basket 情報のキャッシュ」「 Peer の稼働状況監視」のほかに幾つかの機能を有している。
Gateway の機能を以下の二つに大別して説明する。
- UDP リクエストに応じた機能
- TCP リクエストに応じた機能
Gateway は、特定の UDP ポートでリクエストを待ち受けており、受信したパケットに応じた処理を実施する。
- 新しい Basket 作成要求。
通常、CREATE リクエストは Client が新しい Basket を作成する際に Gateway へリクエストする。
Gateway は CREATE リクエストを受信すると、「 新しい Basket を保存可能な Peer 一覧 」を Client へレスポンスする。
- 「 新しい Basket を保存可能な Peer 」とは、以下の条件を満たす Peer の事である。
- 一定時間 ( コンフィグ値: watchdog_limit ) 以内に ALIVE リクエストを送信してきている
- Watchdog ステータスコードが 30 以上
- CREATE リクエストで要求された ( Basket ) サイズ以上のキャパシティを持つ
- 既存 Basket の取得要求。
Client から「 該当 Basket をどの Peer が有しているか 」を意味する GET リクエストを受信した場合、Gateway は条件により 2通りの振る舞いを行う。
Gateway の内包するキャッシュが同情報を有している場合は、Gateway 自身が直接レスポンスを返す。
- Gateway の内包するキャッシュが同情報を有していない場合は、Gateway 自身がレスポンスを返す事ができない。
この場合、Gateway は Peer や他の Gateway が属しているアドレスにマルチキャスト送信する。
- Peer に新しい Basket が保存された事を意味する通知。
Gateway は INSERT リクエストを受けると、内包するキャッシュに Peer が有している Basket 情報を記憶する。
記憶した Basket 情報は、前述の GET リクエスト処理時に反映される。
- Peer から既存 Basket の削除がされた事を意味する通知。
Gateway は DROP リクエストを受けると、事前に記憶していた INSERT 情報を破棄する。
- Peer の稼働状況通知。
ステータスコードと Peer のディスク空き容量を受け取る。
Gateway は ALIVE リクエストを受け取ると該当 Peer の空き容量を更新し、更に該当 Peer が動作中であることを認識する。
- Island 単位での Peer の稼働状況通知。
保存可能な Peer 数と Island 配下の Peer 群のディスク空き容量合計を受け取る。
Gateway(Master) は ISLAND リクエストを受け取ると該当 ISLAND の空き容量を更新し、更に該当 ISLAND が動作中であることを認識する。
- 疎通確認リクエスト。 ( No Operation )
NOP リクエストを受信した場合、何も実施せずに NOP レスポンスを返す。
Gateway は特定の TCP ポートでリクエストを待受けており、受信したパケットに応じた処理を実施する。
- 疎通確認リクエスト。 ( No Operation )
NOP リクエストを受信した場合、何も実施せずに NOP レスポンスを返す。