2016-08-10 4 views

答えて

1

構成可能な期間内に新しいリーダーを障害のあるパーティションリーダーに割り当てることができる限り、プロセスは透過的です。

ブローカ内のリーダーが失敗したパーティションに割り当てられたメッセージは、request.timeout.msのプロデューサでキューに入れられます。この時間内に新しいリーダーが割り当てられている場合(これは、複数のブローカーとRF> 1を持つ通常のケースです)、キューに入れられたすべてのメッセージが新しいリーダーに送信されます。失敗したパーティションの新しいリーダーをその時間後に割り当てることができない場合、プロデューサはorg.apache.kafka.common.errors.TimeoutException:Batch Expiredをスローします。

新しいリーダーが利用可能になる前に、プロデューサが送信バッファ(設定可能なサイズbuffer.memory)を満たすこともあります。その場合、プロデューサはmax.block.msをブロックし、その後もTimeoutExceptionをスローします。

0

プロデューサの了解(acks)とretriesの設定、ブローカ側min.insync.replicasの設定、およびトピックreplication-factorによって異なります。

適切な設定と適切なクラスタサイズをお持ちの場合、レプリカフェールオーバーはほとんどの場合透過です。 たとえば、acks = 1と2回または3回再試行し、min.insync.replicasはトピック複製率未満です。

関連する問題