キーに基づいてデータを分離するには、同じトピック内で複数のトピックまたは複数のパーティションを使用する必要がありますか? サーバーで発生するオーバーヘッド、計算、データストレージ、および負荷に基づいて質問しています。
2177 次
2 に答える
0
@rmetzger が示唆しているように、レコードを複数のトピックに分割すると、プロデューサー レベルでの複雑さが増しますが、考慮に値する他の要因がいくつかある可能性があります。
Kafka では、並列処理の主なレベルはトピック内のパーティションの数です。これにより、同じトピックからデータを並行して読み取り続けるために、その数のコンシューマー インスタンスを生成できるためです。
たとえば、N 個のパーティションを持つイベントに基づく別のトピックがある場合、消費中に、それぞれが特定のパーティションから同時に消費する専用の N 個のコンシューマー インスタンスを作成できます。ただし、その場合、メッセージの順序は保証されません。つまり、メッセージの順序は、並列消費があると失われます。
一方、同じトピック内のレコードを別のパーティションに保持すると、実装がはるかに簡単になり、メッセージを順番に消費できます ( Kafka は、トピック内の異なるパーティション間ではなく、パーティション内のメッセージ全体の順序のみを提供します)。ただし、その場合、実行できるコンシューマー プロセスは 1 つだけに制限されます。
于 2015-09-16T06:25:07.127 に答える