カフカドキュメントのクイックスタートを試しています。リンクはhttps://kafka.apache.org/quickstartです。 私は3つのブローカーを展開してトピックを作成しました。プロデューサーをテストする: カフカ高可用性機能が動作しない
➜ kafka_2.10-0.10.1.0 bin/kafka-topics.sh --describe --zookeeper
localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3
Configs:
Topic: my-replicated-topic Partition: 0 Leader: 2 Replicas: 2,0,1
Isr: 2,1,0
は、それから私は、 "私の-複製され、話題を--topic 9092ビン/ kafka-console-producer.sh --brokerリストはlocalhost" を使用します。 "bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning-topic my-replicated-topic"を使用してコンシューマをテストします。 プロデューサとコンシューマは正常に動作します。 サーバー1または2を強制終了すると、プロデューサとコンシューマは正常に動作します。
しかし、サーバー0を終了してプロデューサ端末にメッセージを入力すると、コンシューマは新しいメッセージを読み取ることができません。 私は、サーバー0、消費者の印刷ログを殺すとき:
[2017-06-23 17:29:52,750] WARN Auto offset commit failed for group console-consumer-97540: Offset commit failed with a retriable exception. You should
retry committing offsets.
(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
[2017-06-23 17:29:52,974] WARN Auto offset commit failed for group console-
consumer-97540: Offset commit failed with a retriable exception. You should
retry committing offsets.
(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
[2017-06-23 17:29:53,085] WARN Auto offset commit failed for group console-
consumer-97540: Offset commit failed with a retriable exception. You should
retry committing offsets.
(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
[2017-06-23 17:29:53,195] WARN Auto offset commit failed for group console-
consumer-97540: Offset commit failed with a retriable exception. You should
retry committing offsets.
(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
[2017-06-23 17:29:53,302] WARN Auto offset commit failed for group console-
consumer-97540: Offset commit failed with a retriable exception. You should
retry committing offsets.
(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
[2017-06-23 17:29:53,409] WARN Auto offset commit failed for group console-
consumer-97540: Offset commit failed with a retriable exception. You should
retry committing offsets.
(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
を、私は、サーバー0、消費者の印刷メッセージを再起動し、いくつかのログ警告:
hhhh
hello
[2017-06-23 17:32:32,795] WARN Auto offset commit failed for group console-
consumer-97540: Offset commit failed with a retriable exception. You should
retry committing offsets.
(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
[2017-06-23 17:32:32,902] WARN Auto offset commit failed for group console-
consumer-97540: Offset commit failed with a retriable exception. You should
retry committing offsets.
(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
この混乱しme.Whyサーバーを0はとても特殊で、サーバー0はリーダーではありません。
と私は、サーバー0で印刷されたサーバーのログは以下のように多くの情報を持っていることに気づいた:
[2017-06-23 17:32:33,640] INFO [Group Metadata Manager on Broker 0]: Finished
loading offsets from [__consumer_offsets,23] in 38 milliseconds.
(kafka.coordinator.GroupMetadataManager)
[2017-06-23 17:32:33,641] INFO [Group Metadata Manager on Broker 0]: Loading
offsets and group metadata from [__consumer_offsets,26]
(kafka.coordinator.GroupMetadataManager)
[2017-06-23 17:32:33,646] INFO [Group Metadata Manager on Broker 0]: Finished
loading offsets from [__consumer_offsets,26] in 4 milliseconds.
(kafka.coordinator.GroupMetadataManager)
[2017-06-23 17:32:33,646] INFO [Group Metadata Manager on Broker 0]: Loading
offsets and group metadata from [__consumer_offsets,29]
(kafka.coordinator.GroupMetadataManager)
が、server1とserve2ログは、そのコンテンツを持っていません。
誰かが私のためにそれを説明することができます、ありがとう!
解決済み: _consumer-offsetsトピックのレプリケーションファクタが根本原因です。 issues.apache.org/jira/browse/KAFKA-3959
複製因子は、topicが作成されたときに設定されるパラメータです.Producerはこのパラメータを設定する必要はありません。 –
申し訳ありませんが、私はうんざりを意味します。コンソールプロデューサのデフォルトはacks = 1で、少なくとも1回は配信を保証しません。パブリッシュするときは、3つのレプリカすべてがデータを取得することを保証するために、acks = allを指定する必要があります(トピックがレプリケーションファクタ3で作成されていると仮定します)。 asks = allとreplication factor = 3を表示する私の答えを編集する必要があります –
私は3つのサーバーがすべてシャットダウンした後にserver1とserver2を起動した後、レプリカファクタ2を持つ新しいトピックを作成してから、サーバー0が開始されない限り、消費者は新しいトピックのメッセージを読み取ることができません。サーバー0は非常に特殊なものであり、高可用性機能を満たしていません。それらを正しく配備しないのですか? –