1954

Thoughts, stories and ideas.

Does Kafka bootstrap server have biased connections from clients?

Kafka clientは以下のようなフローでbrokerに接続します。

  1. まずbootstrap.serversに指定されたいずれかのbrokerに接続し、metadata(partitionのleader)を得る
  2. partitionのleaderに対してconnectionを開く
  3. produce/consumeを開始する

最初に最低1台に繋げればmetadataを取得できるので、通常bootstrap.serversにはクラスターの全台ではなく数台のみ指定します。

ここでもしmetadataを取得したあと最初に接続したbrokerへのコネクションを閉じる仕組みが無いと、bootstrap.serversはほとんど全clientに対するソケットを保持することになり、いくらクラスターを拡張してもclientが増えればbootstrap.serversのコネクション数がボトルネックとなってしまいます。

これを避ける仕組みはちゃんとあって、connections.max.idle.ms 過ぎると必要のないコネクションは閉じるようになってます。

kafka.apache.org