Kafkaとは何かLinkedInが作ったOSSの分散メッセージングシステム(メッセージングキュー)。高スループット、高スケーラビリティ。Java(Scala)で書かれている。Producer、Broker、Consumerの3つのコンポーネントで構成される。ProducerからストリーミングされたデータをConsumerへ中継する。対障害のためにデータの永続化もする。メッセージを受け取る※仔細な仕組みやアーキテクチャ等については以下が参考になります。Kafkaに入門した何に使うのかユースケースとしては以下のようなものが挙げられます。システムがサイロ化するのを防ぐためにデータハブとしてアーキテクチャに組み込む(マイクロサービスとかで)Fluentdなどと連携してログ収集に使うWebサイトのユーザのページ移動とかを収集してWebアクティビティ分析に使うIoTデバイスのセンサーの値を集約し、可視化や分析、他のデバイスの制御などに使うビッグデータ、機械学習、etc具体的なところだと以下。動かしてみる簡単なサンプルを作って試してみます。今回はKafka本体はKafka-dockerを使って環境構築をして、ProducerとConsumerのクライアント側はkafka-pythonを使いました。APIみたいなデータをとってきたり、IoTのセンサーの値を取得したかったですが、今回は用意がないので一旦適当に数値を取れるものを、ということでマウスのx座標を取得して1秒おきにKafkaに送付するスクリプトを書きました。hostのIPアドレスと、kafkaのコンテナに割り当てられたPort番号を指定します。上の場合は32783がそれです。以下が作成したProducer側のソースコードです。procuer.send(でtestというTopicに現在のマウスのx座標を投げています。main()Consumerを実装する次にConsumer側の実装です。同様にKafkaのIPアドレスとPortを指定します。consumer:でKafkaからデータを逐次pullしてきてくれます。下の左側でProducer側、右側でConsumerを実行しています。Producer側からKafkaに送った値(マウスのx座標)をConsumer側でKafkaから取得して表示できているのが確認できます。今後やりたいこと・ラズパイ、Arduinoとか使ってセンサーの値を組み込む。・取得したデータをグラフにしたり、解析したりする。