トップ / ブログ / 検索結果

うさぎ

前回,クラスタリングとスケールアップ,スケールアウトについて取り上げました。今回は,お約束通り,オークネット・アイビーエス社内ではスケールアウトやクラスタリングをどのように行なっているかをお話ししたいと思います。

魔法のレシピはありませんが,強いて言えば主な材料は「うさぎ」です。

うさぎといっても,フワフワした耳長の暖かいペットのことではなく,当然RabbitMQのことです。

郵便局

RabbitMQとはつまり,オープンソースでありながら商用サポートありの,簡便な,メッセージ指向のミドルウェアです。

郵便局のようなものだと思ってください。(業務の進行はずっとずっとスピーディーですが…)人が送る手紙類はそこに運ばれます。唯一の大きな違いは,郵便配達が配達してくれる代わりに自分でそこへ行って手紙をもらって来る点というです。

RabbitMQはApacheのオープンソースソフトウェア「ActiveMQ」やIBMの商用ソフトウェア「Integration Bus Advanced」やMicrosoft Azureのサービス「Service Bus」に似ています。因みに,これらのものは「メッセージ指向ミドルウェア」以外に「ブローカー」や「メッセージバス」や「メッセージブローカー」や「MQサーバー」とも呼ばれています。

3つの疎結合

ブローカーがあることがスケールアウトするにあたってどのように役に立つと言うのでしょう。郵便局との共通点を元に考えてみると,3つの点が考えられます。

  • 場所の疎結合 — 送る側(MQの世界でいうと,パブリッシャー)は受ける人(サブスクライバー)が実際にどこに居るのか知らなくても大丈夫
  • 時間の疎結合 — パブリッシャーは送信時間を気にせずにメッセージを送ることができる。サブスクライバーも受け取れる時に受け取れば良い
  • 同期の疎結合 — 上記の理由により,パブリッシャーとサブスクライバーそれぞれ行っている処理を合わせなくても良い

似たような説明がHiveMQのブログにもありました。

ミルクは何になる?

郵便局の例えをもう少し掘り下げて考えてみましょう。

送信側が何人いても良く,ランダムな時間帯にメッセージを送ることができ,受信側も何人いても良く,それぞれ都合の良い時間にメッセージを受け取ることができます。サーバーに関しても同じ事が言えます。複数のサーバーでスケールアウトして,あるサーバー群はパブリッシャー,あるサーバー群はサブスクライバーとして働けば,万が一あるサーバーがダウンしても複数あるので,問題なく仕事が続行できます。メッセージが多ければサーバーを増やすことができます。当然かもしれませんが,パブリッシャーはサブスクライバーに,サブスクライバーはパブリッシャーになることもできます。更に,各パブリッシャーは異なったメッセージ(仕事)を送ることはもちろん,サブスクライバーも異なった処理の仕方をすることができます。(ミルクを送られてきたらあるサブスクライバーはそれをチーズに,あるサブスクライバーはアイスクリームを作るかもしれません。)

次回

次回,上記の3つの疎結合以外とスケールアウト以外に,ブローカーがあるとどのような利点があるのか取り上げたいと思います。

株式会社オークネット・アイビーエス 技術統括室 Edwin

Author 江戸 勝 2015/03/27 09:55