私はKafkaプロデューサーを設定しようとしています。異なる値間の最良の相関関係を理解しようとしています。Kafka max.request.sizeとbuffer.memoryとsend.buffer.bytesとの比較
私が理解するところでは、これらの値は次の規則に従わなければなりません: max.request.size> = buffer.memory> = send.buffer.bytes。これらの規則の外に値を設定することは意味をなさないでしょう。私は正しいですか?これらの値を設定するための最良のガイドラインルールは何ですか(max.request.size = Xと仮定します)?
また、ack = 1と仮定すると、max.in.flight.requests.per.connectionは意味を持ちますか?
ありがとうございます!
私は何かが不足しています: プロデューサーが各メッセージの後にackを待つ場合、どのように注文を失うことができますか? (私は最初に返信する前に別のメッセージを送信しません) サイズの問題については、send.bufferがなぜ小さいのか理解していますが、なぜ要求サイズより大きなバッファを保持するのでしょうか?さらに、max.request.sizeとbatch.sizeは冗長ではありませんか? (なぜ私は1回のリクエストでそれを送ることができない場合、より大きなバッチサイズを保持するのでしょうか?また、バッチサイズが小さい場合には大きなリクエストを構成するのはなぜですか?つまり、リクエストはbatch.sizeによって送信されます)? – sternr
If 2つのバッチが同じパーティションに送信され、何らかの理由で最初に失敗し、再試行(再試行を有効にすると仮定します)が2番目のバッチが成功した場合、最初のバッチのメッセージは、 – amethystic
プロデューサは、メッセージが蓄積されるバッファを使用します。後で別のIOスレッドがバッファからメッセージを取り出してPRODUCE要求にラップするので、このバッファをかなり大きくします。そうすることで、IOスレッドは常に待機するのではなく何かを行うことができます。 – amethystic