tjtjtjのメモ

自分のためのメモです

kafka レプリケーションパーティションを試す その1

中途半端

トピック作成

# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 3 --topic replicated-topic
Created topic replicated-topic.

トピック確認

list をみる

# bin/kafka-topics.sh --list --zookeeper localhost:2181
replicated-topic

describe を見る。 Partition:0 は リーダーが1。1,2でレプリケーションしている。1,2 とも ISR(In Sync Replica レプリカ済み) 。

# bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic replicated-topic
Topic:replicated-topic  PartitionCount:3        ReplicationFactor:2     Configs:
        Topic: replicated-topic Partition: 0    Leader: 1       Replicas: 1,2   Isr: 1,2
        Topic: replicated-topic Partition: 1    Leader: 2       Replicas: 2,3   Isr: 2,3
        Topic: replicated-topic Partition: 2    Leader: 3       Replicas: 3,1   Isr: 3,1

ブローカー1コ指定で登録/受信

broker1 へメッセージ登録しブローカ1,2,3で受信してみる。順番が異なる場合があるが、全部受信した。

# bin/kafka-console-producer.sh --broker-list 192.168.0.21:9092 --topic replicated-topic
>qwer
>asdf
>zxcv
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --from-beginning
asdf
zxcv
qwer
^CProcessed a total of 3 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --from-beginning
qwer
asdf
zxcv
^CProcessed a total of 3 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --from-beginning
qwer
asdf
zxcv
^CProcessed a total of 3 messages

brokerをつなげてコンシューム。

# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092,192.168.0.22:9092,192.168.0.23:9092 --topic replicated-topic --from-beginning
asdf
zxcv
qwer
^CProcessed a total of 3 messages

パーティションを指定してconsume

3メッセージが別パーティションに配置されていたことがわかる。

↓下だと思っていたが、誤りだった。

broker1に登録したメッセージは1,2でレプリケーションする。3からはコンシュームできない。

# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --partition 0 --from-beginning
zxcv
^CProcessed a total of 1 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --partition 1 --from-beginning
qwer
^CProcessed a total of 1 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --partition 2 --from-beginning
asdf
^CProcessed a total of 1 messages

存在しないパーティションの場合

# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --partition 3 --from-beginning
^CProcessed a total of 0 messages

broker2 からコンシューム。broker1と同じ結果が得られた。

# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --partition 0 --from-beginning
zxcv
^CProcessed a total of 1 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --partition 1 --from-beginning
qwer
^CProcessed a total of 1 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --partition 2 --from-beginning
asdf
^CProcessed a total of 1 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --partition 3 --from-beginning
^CProcessed a total of 0 messages

broker3 からコンシューム。これも同じ

# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --partition 0 --from-beginning
zxcv
^CProcessed a total of 1 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --partition 1 --from-beginning
qwer
^CProcessed a total of 1 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --partition 2 --from-beginning
asdf
^CProcessed a total of 1 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --partition 3 --from-beginning
^CProcessed a total of 0 messages

どのブローカーを指定しても、メッセージのパーティションのリーダーを見つけ、リーダーに書き込み/読み出する挙動のなのか。書籍等をあたりたい。