---
title: "Kafka Simulator v1.2 — 消费者与重平衡"
date: 2026-07-30T00:00:00.000Z
author: "michal"
excerpt: "消费者组、分配策略、静态成员资格，以及决定成员何时算作离开的两个超时。十个新场景，让 Kafka 中最容易被误解的时刻——重平衡——变成可以观看而非猜测的过程。"
---
继生产者篇之后，[Kafka Simulator](/kafka-simulator/) v1.2 版本转向读取侧，以及它最容易被误解的事件：**重平衡**。本篇新增 **10 个场景**，将课程扩展到 **125 个中的 33 个**。

## v1.2 有什么

消费者组是一个披着简单 API 外衣的协调问题。v1.2 让这种协调变得可见：

- **分配策略** — 将 `range`、`roundrobin`、`sticky` 和 `cooperative-sticky` 并排对比，让你看清哪些会让整个世界停摆，哪些只移动必须移动的分区。
- **静态成员资格 (KIP-345)** — 为什么在 `session.timeout.ms` *之内* 重启的成员会保留其分配、不触发重平衡，以及当它停机太久时会发生什么。
- **两个超时** — `session.timeout.ms` 对比 `max.poll.interval.ms`：一个关乎心跳，另一个关乎一个活着却卡在处理中的消费者。它们以不同的方式失败，而模拟器同时展示两者。
- **停顿与恢复** — 一个停止拉取、被踢出、又重新加入的消费者——以及它这样做时究竟哪些分区会移动。

重平衡很难讲清楚，因为它只有作为一个序列才有意义：撤销、分配、恢复。静态图把这个序列压缩成一根箭头。在这里你可以逐帧拖动，看着所有权一个分区一个分区地易手。

## 为什么重要

生产环境中大多数消费者事故其实都是重平衡事故——一次看起来像宕机的部署、一个对慢批处理来说太短的 `max.poll.interval.ms`、一个悄悄移动了比预期更多分区的 sticky 分配器。以你选择的速度看着重平衡运转，是建立直觉的最快方式，让这些事故在事后看来显而易见。

打开[模拟器](/kafka-simulator/)，添加并杀掉消费者，观察消费者组重新形成。