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