日常のいろいろなシーンで、メッセージのやり取りがされてます。
メールによるメッセージの送受信。
企業内で部署ごとに必要な情報の送受信。
コンピュータを通して、コマンド(命令)を送って特定の機械を動作させる。
など。
そのようなメッセージ(情報)が送受信できる環境が構築される背景には、
様々な技術やモデルが使われています。
その中で、「出版-購読型モデル」という方式のメッセージ送受信モデルについてまとめたので、シェアしたいと思います。
出版-購読型モデルの基本的な要素-分散処理
例えば、100の能力があるコンピュータで、いろんなアプリやソフトを起動させて99の能力を使うと、動作が遅くなるのは体感的に皆さん感じるところではないでしょうか?
これが、家庭用の1つのコンピュータだけでの作業ではなく、膨大なデータや情報をやり取りする企業、企業間同士となれば動作が遅いことによる問題が発生することが容易に考えられます。
そのようなデータをよりスムーズに送受信するために、様々なシステムや技術が使われており、その一つが分散処理といった仕組みで、
コンピュータ上で複数のプログラムが同時に並行して実行される際に、
複数のコンピュータに分けて処理を分散してスループットを上げること目的としています。
出版-購読型モデルの概要
さて、その分散処理の一つの「出版-購読型モデル」は、
パブリッシャーと呼ばれるアプリケーションが情報を出版し、
サブスクライバと呼ばれるアプリケーションがその情報の中から欲しい情報のみを購読。
その中間として、プロバイダ(またはブローカー)と呼ばれるデータの塊があり、
サブスクライバと、パブリッシャーの作業を、プロバイダに分散させて、負担を減らすシステムです。
普通の送受信と何が違うのか?
例えば、2つのアプリケーション間A、Bでデータをやり取りする場合、
Aのアプリケーション内でBが欲しい情報を構築して送信し、
BはAが作成した情報を受信します。
一見、簡単なように見えますが、Bや、B以外からの様々な要求に対応しようと思うと、
Aは要求に合わせてその数やその種類によって、必要な情報だけを作り上げなければなりません。
その結果、アプリケーションAの負担が増えます。
出版-購読型モデルでは、
データをやりとりするアプリケーションAとBの間にデータの塊とそのデータの中から、要求にあわせたデータを組み合わせて送信するプロバイダを置くことで、そのアプリケーションAの負担を減らすことができます。
アプリケーションAは、自分が持っている情報をプロバイダに送信するだけ、
特定の情報が欲しいアプリケーションBは自分が欲しい情報をプロバイダに登録しておくことで、アプリケーションAから情報がプロバイダに受信されると、自動的にアプリケーションBに情報が送信されます。
出版-購読型モデルを一企業に例えてみると・・・
出版-購読型モデルを、海外からある商品も輸入して、その商品を国内で販売しいてる会社に例えてみます。
- 輸入の手続きに関わる部門
- 輸入した商品を検品する部門
- 経理部門
- 商品を保管する倉庫の手配をする部門
- 出荷を手配する部門
があるとします。
それぞれの部門で、持っている情報と欲しい情報が異なります。
輸入税関処理部門は、商品を輸入したら、税金や輸入にかかった手数料などのデータを、そのままプロバイダに送信します。
経理部門で、手数料だけを知りたい場合、「手数料を知りたい」という要求を予め登録しておくと、輸入税関処理部門からデータがプロバイダに送信されると、自動的に登録していたデータが送られます。
情報を送信する側は、受け取る相手を想定せずに、ただ自分の持っている情報を送るだけ、
受け取る側も、送信者の情報を気にせず、ただ欲しい情報だけを受け取ることができ、入手したデータ、欲しいデータをプロバイダが全て、集めて、整理して送ってくれるので、両者ともかなりの心労と作業を減らすことができますね。
仮に、プロバイダがないことを想定すると、、、
経理部門が輸入税関処理部門に依頼して、欲しいデータだけ整理してもらうか、
輸入税関処理部門から、全データをもらって、自分で必要なデータだけ抽出する作業が発生します。
2部門間だけの話であれば、それほど手間はかからなさそうですが、
大きな組織、多くの部門を抱える企業であれば、情報のやりとりはかなり煩雑になりそうですね。
ここでは、この煩雑なやりとりを人として例えていますが、
このようなやり取りが、データを送受信するネットワークシステムでも行われています。
中央に情報(データ)の塊を分散させて、なるべくアプリケーションの負担を軽減するようなシステムが、出版-購読型モデルです。
まとめ
メッセージングの一技術、出版-購読型モデルについてまとめてみました。
- 出版-購読型モデルは、データ(情報)の送信側、受信側の負担を軽減でき
- パブリッシャー(送信側)、サブスクライバ(受信側)、プロバイダ(データを仲介)、で構成される。
出版-購読型モデルとは?と思われる方の参考になれば幸いです。
参考