夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

Apache Kafkaってそもそも何か確認してみます(その2

こんにちは。

とりあえず前回の続きで、Apache Kafkaについて確認してみます。
・・・なんか長引きそうなので、全部ページを確認し終わったら特徴も改めてまとめますね。

5.基本設計方針

Apache Kafkaの持つ設計方針は下記の通り。

1.Kafkaは永続化する必要があるメッセージを共通的に扱うために設計
2.スループットより、1の特徴を満たすことを優先して設計
3.状態はプロデューサ/ブローカではなく、コンシューマが更新
4.Kafkaは完全分散型。プロデューサ/ブローカ/コンシューマは複数マシンに分散することを前提とする。

6.基本コンセプト

KafkaではMessageを基本の通信単位とする。

Messageはトピックという扱いでプロデューサからサーバ(ブローカとして動作)に送信される。
複数のコンシューマがトピックを取得設定した場合、
全コンシューマに対して各々のメッセージが送付される。

これらのプロデューサ/ブローカ/コンシューマは別マシンに分散配置することができ、
論理的なグルーピングを構成して協調動作する。

上記の動作はプロデューサ/ブローカにとっては自然だが、
コンシューマはいくつか設定が必要となる。

各コンシューマはコンシューマグループに所属することでメッセージの受信が可能となる。
『コンシューマグル―プに所属しているコンシューマ群』に対して全メッセージが配信される形となる。
#コンシューマグループに所属するコンシューマのうち1つに配信。

つまりは、コンシューマグループとは、
複数のプロセス/マシンを論理的に1つのコンシューマとして見せる仕組みとなる。

このコンシューマグループによってキューやJMSトピックのサポートが可能。

キューイングをサポートする際には、複数のコンシューマを1コンシューマグループに所属させ、
各メッセージを1つのコンシューマに送付する。

JMSトピックをサポートする際には、
各コンシューマが各々コンシューマグループを保持するようにすれば、
全コンシューマに対して全メッセージが配信される。

一般的なKafka利用形態として、
複数のコンシューマグループを持ち、各々が全メッセージを受信するケースとなる。

Kafkaはコンシューマの数がいくつあっても問題ないことから、
かつ1つのメッセージを1回しか処理してはいけないという制約がない場合に適する。
====

・・どうやら、複数のソースから取得したメッセージを
複数のコンシューマが利用する場合に適したプラットフォームといえそうです。

そんなわけで、データを収集してくるというより、
収集したデータをバスに循環させるプラットフォームという方がしっくりくるのかもしれませんね。