ざっくりApache Kafka

Kafkaってなに

業務でApache Kafkaが出てきたので、ざっくりまとめようと思いました。

まずIoTやメッセージツールなどのシステムでは送信する側と受信する側が常に相互通信可能という状況を想定するべきでないので、非同期的な通信に限られるので両者の間にデータを受け渡しを行うメッセージキューイング(MQ)システムが間に挟まれる。ただ、例えばIoTサービスとかに人気が出てしまうと端末が多くなったり×大量のセンサーデータとかを送ってしかもバッチ処理を待たずにリアルタイムに処理したいなどの話になる、そこでスケーラビリティとかスループット(あんまりよく分かってないが)の話になりビッグデータ向けMQシステムのOSS, Apache Kafkaの出番となるようだ。

Apache Kafka Architecture and Its Components -The A-Z Guide

この人の記事がめちゃまとまってますが、初見だと難しくて玄人向けかも。。。

Apache Kafkaの概要とアーキテクチャ

https://qiita.com/sigmalist/items/5a26ab519cbdf1e07af3

Kafkaシステム内の三つのプレイヤー

一般的にはpublisherとsubscriberとも言うみたいですが、kafkaでは以下のように言われる。

Producer・・・上の図の通り、データ送信する(push)。

Broker・・・Producerからデータを受け取る。このグループがKafka Cluster。

Consumer・・・Brokerからデータを受け取る(pull)。topic-partation単位でデータを読み込み、読んだかどうかをoffsetで管理する。

※Zookeeper・・・Brokerのメタデータ、後述のtopic/partiionなどを管理する、Kafkaはこれがないとちゃんと動かないが、

いずれKafka内に組み込まれるらしい。

データ単位

message ・・・kafka内のデータ最小単位でketとvalue形式

topic・・・messageをグループ化?チャンネル化するものdbのテーブルとかコレクションみたいなイメージ。consumerもpro

ducerもこれを指定する。

partition・・・分散処理を行なうためにtopicを分ける。

まとめ、次回記事

最近のIoTではmqtt軽量・低電力なmq用プロトコルとkafkaを組みあわえてシステム作られているらしいです。ので、業務ではあくまでデータ送ったり受け取ったりするだけだが、ちゃんとkafka自体をチューニングできるようになりたいですね。

どこかの記事見つけて自分でもdockerでkafka立ててハンズオンやってみる実践編を書いてみようと思う、大量データを高速にというよりは、ひとまずkafka経由でデータ送りましたぐらいになってしまうのは必須だが。。。今回はコマンドもコードもゼロな記事でした。

おすすめの記事