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回しか処理してはいけないという制約がない場合に適する。
====
・・どうやら、複数のソースから取得したメッセージを
複数のコンシューマが利用する場合に適したプラットフォームといえそうです。
そんなわけで、データを収集してくるというより、
収集したデータをバスに循環させるプラットフォームという方がしっくりくるのかもしれませんね。