Consumer groups are Kafka's mechanism for scalable, fault-tolerant message consumption: multiple consumer instances share a group ID and partitions are divided among them, so throughput scales with consumer count up to the partition limit. When a consumer joins or leaves the group, Kafka triggers a rebalance that redistributes partition assignments across all live members. Understanding rebalances and how to handle them gracefully is the most operationally important skill for Kafka consumer engineering, because rebalances pause message processing for the entire group, not just the consumer that triggered the rebalance.
Offset management — tracking which messages a consumer has processed — is the state management problem at the heart of Kafka consumer design. Kafka stores committed offsets in an internal topic (`__consumer_offsets`) keyed by group ID and partition. The consumer's position is the next offset to be fetched; the committed offset is the last durably recorded as processed. Consumer lag — the difference between the topic's high-water mark and the committed offset — is the primary health metric, measuring how far behind the consumer is relative to the producer.