問題タブ [sarama]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1161 参照

apache-kafka - Kafka の 1 つのパーティションに複数のトピックがある場合、オフセットはどのように機能しますか?

Kafka がどのように機能するかをよりよく理解しようとしています。物事を単純にするために、現在私は 1 つの Zookeeper で 3 つのブローカーと 1 つのパーティションで 3 つの重複係数で Kafka を実行しています。

質問 1 : トピックは同じパーティション内でオフセットを共有しますか?

1 つのパーティション (例: パーティション 0) に複数のトピック (例: dogs、 ) があります。これで、私のプロデューサーが各トピックへのメッセージを作成しました。へ、へ、へ。を指定すると返され、 と で同じことを行うと、それぞれのメッセージが返されることに気付きました。これは素晴らしい機能ですが、私の理解と矛盾しています。オフセットはパーティションに固有のものだと思いました。3 つのメッセージをパーティションに順番にプッシュしたとします。メッセージに 0、1、2 のインデックスを付けるべきではありませんか? 今では、オフセットはトピックに固有のもののようです。catsdinosaurs"msg: bark"dogs"msg: meow"cats"msg: rawr"dinosaursdogs[0][0]barkcatsdinosaurs

想像したらこんな感じでした

実際には、このように見えます

しかし、それはできません。オフセットと、ログ ファイル内のメッセージの実際の物理的な場所を追跡する何かが必要です。

質問 2 : 1 つのトピックに複数のパーティションがある場合、メッセージをどのように管理しますか?

質問 1 では、1 つのパーティションに複数のトピックがあります。ここで、1 つのトピックに複数のパーティションがあるとします。たとえば、dogsトピック用に 4 つのパーティションがあり、Kafka クラスターにプッシュするメッセージが 100 あります。パーティション 1 に 25 個、パーティション 2 に 25 個というように、メッセージをパーティション全体に均等に分散しますか?

コンシューマーが一度に 100 個のメッセージすべてを消費したい場合、4 つのパーティションすべてにアクセスする必要があります。これは、100 個のメッセージで 1 つのパーティションにヒットすることとどう違うのですか? ネットワーク帯域幅がボトルネックになっていますか?

前もって感謝します