ブローカー
分散したシステムで、クライアントとサーバの間に仲介役を置き、サービスの登録・検索や要求と応答の受け渡しを任せるアーキテクチャパターンである。両者の依存関係を弱め、サーバの配置や実装を変更しやすくする。
イマシルちゃんの解説
複数のコンピュータで動くソフトウェアを連携させるとき、相手の場所や通信方法を一つずつ扱うのは大変なんだ。
そこで仲介役を置くのがブローカーというアーキテクチャパターンだよ。
これはソフトウェア全体の組み立て方を示す設計の型なんだ。
サービスを提供するサーバは、できる仕事を仲介役に登録するよ。
サービスを使うクライアントが依頼すると、仲介役が担当するサーバを探して要求を届けるんだ。
処理の結果も仲介役を通して返してもらえるよ。
通信の細かな処理をまとめて任せられるから、利用側が相手の配置や実装に振り回されにくくなるんだね。
この解説はわかりやすかったですか?
より深い解説
定義
ブローカーは、ソフトウェアの設計でよく使われる構造を整理した書籍『Pattern-Oriented Software Architecture』(POSA)で紹介されたアーキテクチャパターンの1つである。分散環境で、互いに独立したコンポーネントが、リモートのサービス呼出しによって連携するための構造を定める。
構成要素
| 要素 | 役割 |
|---|---|
| クライアント | サービスを利用する |
| サーバ | サービスを提供し、自分のサービスをブローカーに登録する |
| ブローカー | サービスの登録を受け付け、クライアントの要求に合うサーバを検索し、要求と結果のメッセージを受け渡す |
| クライアント側プロキシ / サーバ側プロキシ | 通信の細かな処理を隠し、遠くのサービスを手元の呼出しのように扱えるようにする |
利点
- クライアントは、サーバがどこにあるかを知らなくてよい(位置の透過性)
- サーバの場所や実装を変えても、クライアントを変更せずに済む。クライアントとサーバの相互依存性を弱められる
- サーバを追加・交換しやすい
欠点
- ブローカーを経由するぶん、直接通信するより遅くなる
- ブローカーが止まると全体が止まるため、ブローカーの冗長化が必要になる
例
CORBAのORB(Object Request Broker)、Java RMIのレジストリなどが、このパターンに基づいている。
POSAのほかの主なアーキテクチャパターン
| パターン | 説明 |
|---|---|
| マイクロカーネル | 機能の中核部分と拡張部分を分離し、変更への拡張性を高める |
| パイプとフィルタ | データの流れに対する一連の処理を、追加や削除がしやすいように分割し、段階的に行う |
| MVC | データの管理、表示、入力と制御の3つに分けて、表示部分の変更に柔軟に対応する |
| レイヤ | 機能を階層に分け、各層は1つ下の層だけを使う |
| ブラックボード | 決まった解き方のない問題を、複数の専門の部品が共有のデータ領域を見ながら少しずつ解く |
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午前Ⅱ