Kafka¶
分布式事件流平台,适合高吞吐事件采集、日志流、异步解耦和流处理。Kafka 的数据以 Topic 为单位组织,并被切分为多个 Partition。
核心概念¶
| 概念 | 说明 |
|---|---|
| Broker | Kafka 服务节点。 |
| Topic | 一类事件的逻辑分类。 |
| Partition | Topic 的并行与顺序边界;顺序只保证在单个 Partition 内。 |
| Producer | 向 Topic 写入事件的客户端。 |
| Consumer Group | 一组协作消费的实例;同组内一个 Partition 同时只分配给一个消费者。 |
| Replica | Partition 的副本,用于容错与可用性。 |
同一 key 的事件写入同一 Partition,可在该 Partition 内保持顺序。分区数量决定最大消费并行度,也影响文件数、恢复和运维成本。
常用检查¶
# 以下命令按实际 Kafka 安装路径、认证方式和 Bootstrap Server 替换
kafka-topics.sh --bootstrap-server kafka-1:9092 --list
kafka-topics.sh --bootstrap-server kafka-1:9092 --describe --topic orders
kafka-consumer-groups.sh --bootstrap-server kafka-1:9092 --list
kafka-consumer-groups.sh --bootstrap-server kafka-1:9092 --describe --group order-service
可靠性与容量¶
- 生产 Topic 通常使用多个副本,并让副本跨节点/故障域分布;副本数必须小于等于可用 Broker 数。
- Producer 需要按业务选择确认级别、重试、幂等和超时;Consumer 需要正确处理重复消费。
- 重点监控 Under-Replicated Partitions、Offline Partitions、Consumer Lag、磁盘使用率、请求延迟和 Controller 状态。
- 分区只能增加不能直接减少;创建 Topic 前应评估吞吐、保留期、消费者并行度和未来扩容。
Kafka 复制发生在 Topic-Partition 级别;每个消费者组会维护自己的消费进度。官方参考:Kafka 文档。