Docker ComposeでKafkaを構築してどんなものかざっくり理解する

2023.02.08
2024.03.24
ミドルウェア
Docker Composekafkazookeeper

本ページはAmazonアフィリエイトのリンクを含みます。

はじめに

Docker ComposeでKafkaを構築して、Kafkaがどんなものかをざっくり理解していきます。

Kafkaとは

Kafka(Apache Kafka)とは、**イベントストリーミングプラットフォーム(ミドルウェア)**になります。

イベントストリーミングとは、データ(イベント)を受け取り、格納し、処理して、次の宛先に送るようなことを言います。

下記のようなイベントストリーミングに必要な機能がKafkaには備わっています。

  • ストリームデータの継続的なPublish(書き込み)とSubscribe(読み取り)
  • ストリームデータの保持
  • ストリームデータの処理

Kafkaは、メッセージングやログの集約、ストリーム処理などに使われます。

アーキテクチャと用語

Kafkaのアーキテクチャはざっくり下記のようになっています。

Kafkaで出てくる主な用語の意味は下記の通りです。

  • イベント: Kafkaでのデータの単位(レコードやメッセージとも呼ばれる)
  • Broker: Kafkaサーバー
  • Producer: イベントを書き込む(Publish)
  • Consumer: イベントを読み取って処理(Subscribe)
  • Topic: イベントを分類して格納(イベントをファイルと考えたときのフォルダのようなもの)
  • Partiton: Topicを分割したもの

Docker Composeで試す

Docker ComposeでKafkaを動かしてみて、Kafkaがどんなものか実際に体感してみたいと思います。

Kafkaを動かす

まずはDocker ComposeでKafkaを構築します。ここでは、Bitnamiのイメージを利用します。

docker-compose.ymlは下記の通りです。

1version: "3"
2
3services:
4  zookeeper:
5    image: docker.io/bitnami/zookeeper:3.8
6    ports:
7      - "2181:2181"
8    volumes:
9      - "zookeeper_data:/bitnami"
10    environment:
11      - ALLOW_ANONYMOUS_LOGIN=yes
12  kafka:
13    image: docker.io/bitnami/kafka:3.3
14    ports:
15      - "9092:9092"
16    volumes:
17      - "kafka_data:/bitnami"
18    environment:
19      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
20      - ALLOW_PLAINTEXT_LISTENER=yes
21    depends_on:
22      - zookeeper
23
24volumes:
25  zookeeper_data:
26    driver: local
27  kafka_data:
28    driver: local

起動します。

1docker compose up -d

コンテナが起動したら、Kafkaのコンテナに接続しておきます。

1docker exec -it kafka-kafka-1 /bin/bash

Topicの作成

まずはKafkaのコマンドラインツールでイベントが格納されるTopicを作成します。

1kafka-topics.sh --create --topic sample-events --bootstrap-server localhost:9092

イベントの書き込み

次は、Producerのコマンドを使って、イベントを先ほど作成したTopicに書き込みます。

1kafka-console-producer.sh --topic sample-events --bootstrap-server localhost:9092

入力した各行がイベントとして書き込まれます。

1I have no name!@fe5e69f6b112:/$ kafka-console-producer.sh --topic sample-events --bootstrap-server localhost:9092
2>hello
3>world
4>hoge
5>foo

イベントの読み込み

書き込んだイベントをConsumerコマンドを使って読み込みます。

1kafka-console-consumer.sh --topic sample-events --from-beginning --bootstrap-server localhost:9092

先ほど入力したイベントを確認することができます。

1I have no name!@fe5e69f6b112:/$ kafka-console-consumer.sh --topic sample-events --from-beginning --bootstrap-server localhost:9092
2hello
3world
4hoge
5foo

別端末を起動し、Producerからイベントを書き込むとすぐにConsumer側に表示されるのが確認できます。

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

関連記事

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee