1

私はカフカストリームを探しています。非常に低い選択性(数千に1つ)のフィルタを使用してストリームをフィルタリングしたい。 (私は実際にはそれらを捨てるために、消費者にGBの多くを転送したくない https://kafka.apache.org/0100/javadoc/org/apache/kafka/streams/kstream/KStream.html#filter(org.apache.kafka.streams.kstream.Predicate)カフカストリームのフィルタリング:ブローカーまたは消費者側?

しかし、フィルタは、消費者によって評価される場合、私は、任意の証拠を見つけることができません:私はこの方法を見ていました)、またはブローカーの内部(yay!)。

消費者側で評価されている場合、方法はありますか?ブローカーでこれを行う方法はありますか?

ありがとうございます!

答えて

2

カフカはブローカー側のフィルタリングをサポートしていません。 Streams APIを使用すると、アプリケーションでフィルタリングが実行されます(述語はKafkaConsumerではなく、トポロジの「プロセッサ・ノード」内で評価されます。つまりStreams APIランタイム・コード内で評価されます)。

これは役立つかもしれない:https://docs.confluent.io/current/streams/architecture.html

をブローカ側のフィルタリングをサポートしない理由は、ブローカーが唯一のキーと値のデータ型として、(1)バイト配列を使用し、高い達成するために、(2)ゼロコピーメカニズムを使用すること、ありますスループット。ブローカ側のデータをデシリアライズするには、パフォーマンスの大幅な低下(デシリアライゼーションコストとゼロコピー最適化なし)が必要になります。

+0

まあ...私はキーのみのフィルタリングでもかなりいいです。 kafkaがちょうど "プレフィックス"配列のフィルタリング(私のキーは文字列であり、私は一致するプレフィックスを選ぶことができます)を使用することが可能になった場合、私にとってはもっと小さなヒットになるでしょう... – malejpavouk

+1

いつでも作成できます機能要求Jira:https://issues.apache.org/jira/projects/KAFKA –

+0

良い点。私は改善要求を作成しました:https://issues.apache.org/jira/browse/KAFKA-6020、彼らはアイデアが好きかどうかを見てみましょう:-) – malejpavouk

関連する問題