プロデューサーパックに続き、Kafka Simulator の v1.2 リリースは読み取り側と、その最も誤解されがちなイベント、リバランスに目を向けます。このパックは 10 個の新しいシナリオ を追加し、カリキュラムを 125 個中 33 個 に広げます。

v1.2 の内容

コンシューマーグループは、シンプルな API をまとった協調問題です。v1.2 はその協調を可視化します。

  • 割り当て戦略rangeroundrobinstickycooperative-sticky を並べて比較し、どれが世界を止め、どれが必要なパーティションだけを動かすのかを確認できます。
  • 静的メンバーシップ (KIP-345)session.timeout.ms範囲内 で再起動したメンバーが割り当てを保持しリバランスを起こさない理由と、停止が長引いたときに何が起こるか。
  • 2 つのタイムアウトsession.timeout.msmax.poll.interval.ms:一方はハートビートに関するもの、もう一方は生きているが処理で止まっているコンシューマーに関するもの。両者は異なる形で失敗し、シミュレーターはその両方を示します。
  • 停止と再開 — ポーリングを止め、追い出され、再参加するコンシューマー — そしてそのときに正確にどのパーティションが動くのか。

リバランスは、取り消し・割り当て・再開というシーケンスとしてしか意味をなさないため、教えるのが難しいものです。静的な図はそのシーケンスを 1 本の矢印に押し込めてしまいます。ここではそれをスクラブして、所有権が 1 パーティションずつ移り変わる様子を見ることができます。

なぜ重要か

本番のコンシューマー障害のほとんどは、実際にはリバランス障害です — 障害のように見えるデプロイ、遅いバッチには短すぎる max.poll.interval.ms、予想以上に静かに動かしてしまう sticky アサイナー。リバランスの動きを、自分で選んだ速度で見ることは、そうした障害を後から見れば当然だと思えるようにする直感を養う最速の方法です。

シミュレーターを開き、コンシューマーを追加したり停止したりして、グループが再編成される様子を見てください。