kafkaでconsumer.idを指定しないとconsumerが偏る件kafkakafkaの基本的な概念は理解してる前提で細かい説明省略して書くので、ご了承ください。(JavaではなくScalaで書かれてるやつ。0.9.0.0(旧consumerなら他のversionでも同じ気はする)partition.assignment.strategyはデフォルトのrangeあるtopicに関して、partition数よりconsumer数が多い(実際わりとそれが普通?以下で説明)という場合です。「あるtopicに関して、partition数よりconsumer数が多い」とは、多い余ったconsumerは単にconsumeせずスタンバイ状態にしたいだけです。スタンバイ状態にしたい、というか、あるtopicに関してpartition数より多いconsumerは、完全に同時には動かそうとしても動かないはずです。耐障害性サーバー増やして横にスケールという理由により、複数台用意するのは当然ですね?それで、あるtopicに関してpartitionが1でも2つ(以上)のconsumerを動かすpartitionが2でも3つ(以上)のconsumerを動かすというのは普通にありえる、というか、やっておかないと、consumerが動いているどこかのサーバーが何らかの原因で死んだ*2ら、consumeされないtopic/partitionが発生してしまいますね?*3なので、そういった観点からスタンバイ状態にしておくために多めにconsumer作っていたわけですが、なぜか特定のサーバーに偏るのです。複数台サーバーあるのに1台だけに偏り、そのサーバー以外のconsumerが暇してる、みたいな状態が発生して悩んでいました。それで、その解決方法がわかったので、今書いているところです。結論としては「"consumer.id"をいい感じに設定する」なのですが、まずconsumer.id自体の説明を書きます。set.「デフォルトがnullで、明示されてなかったら自動生成されるよ」と言ってます。何も間違ってはいないですが、もう少し説明欲しかったですね。「自動生成」とはどう生成されるのでしょうか?ソースコード見てみましょう。idの辞書順らしいです。ハッシュをとり、かつ辞書順なのでそれを先頭に持ってきて、さらに万が一のhash衝突のためにhost名を追加してユニーク*6になるようにして、さらにローカルやJenkins上のテスト環境で衝突したので、一番後ろにランダム文字列追加となりました。見事にこれを試して分散したので、同じような境遇の人にはおすすめです。いい感じな工夫してる人いたら教えて下さい。1注目記事はてなブログをはじめよう!xuweiさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。