Apache Kafka 是一个分布式的流处理平台,主要用于实时数据流的发布、订阅、存储和处理。它具有高吞吐量、低延迟和分布式架构的特点,广泛应用于日志处理、消息队列、事件流处理等场景。
核心概念
- Broker
broker.id
标识。
- Topic
- Partition:每个Topic被分为多个分区,提供并行处理能力
- Replica:分区的副本,用于实现容错
- Producer
- Consumer
- Zookeeper(或KRaft)
工作流程
- 生产消息
- 消息存储
- 消息消费
特性
- 高吞吐量和低延时
- 持久化和容错
- 可扩展性
- 灵活的消息消费模式
- 分布式架构
典型应用场景
- 日志采集与处理:收集各系统的日志并统一存储和处理
- 实时流数据处理:用于事件流或传感器数据的实时处理
- 消息队列:替代传统的消息队列(如:RabbitMQ、ActiveMQ),用于异步通信和解耦系统
- 数据管道:在多个系统间传输和同步数据
配置和部署建议
-
Broker配置
- 增加
num.partitions
和log.retention.hours
来平衡性能和存储需求 - 配置副本数量
replication.factor
保证容错能力
- 增加
-
Producer配置
- 优化批量发送数据的参数,如
batch.size
和linger.ms
- 优化批量发送数据的参数,如
-
Consumer配置
- 设置合适的max.poll.records和session.timeout.ms,以适应消费速率
-
集群监控
- 使用Kafka提供的JMX指标,结合工具如Prometheus和Grafana,监控Broker、Topic和Consumer状态