-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

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

['bark', 'meow', 'rawr']

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

['bark']
['meow']
['rawr']

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

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

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

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

前もって感謝します

4

1 に答える 1