Kafka
Apache Kafka 是一个分布式的流处理平台,主要用于实时数据流的发布、订阅、存储和处理。它具有高吞吐量、低延迟和分布式架构的特点,广泛应用于日志处理、消息队列、事件流处理等场景。
核心概念
- Broker
Kafka的运行实例,负责存储和处理消息。一个Kafka集群由多个Broker组成,每个Broker用唯一的
broker.id
标识。- Topic
消息的分类或逻辑通道,数据按Topic存储
- Partition:每个Topic被分为多个分区,提供并行处理能力
- Replica:分区的副本,用于实现容错
- Producer
发送消息的客户端,可以将数据发布到指定的Topic和分区。
- Consumer
订阅Topic并消费信息的客户端,通过消费组(Consumer Group)协调并行消费。
- Zookeeper(或KRaft)
Kafka使用Zookeeper存储元数据和协调集群操作
工作流程
- 生产消息
Producer 将消息写入指定的 Topic,Kafka 会根据分区策略选择分区存储。
- 消息存储
Kafka 按分区顺序存储消息,同时通过配置保留策略(时间或大小)来管理历史数据。
- 消息消费
Consumer 从 Topic 的分区中拉取数据。消费组内的消费者分配分区以确保每个分区仅被一个消费者读取。
特性
- 高吞吐量和低延时
采用顺序写磁盘和页面缓存技术,提供高性能。
- 持久化和容错
数据持久化到磁盘,通过副本机制实现高可用
- 可扩展性
增加Broker或分区可以扩展集群容量和性能。
- 灵活的消息消费模式
支持点对点和发布订阅模式。
- 分布式架构
数据分布在多个分区和Broker中,支持分布式处理。
典型应用场景
- 日志采集与处理:收集各系统的日志并统一存储和处理
- 实时流数据处理:用于事件流或传感器数据的实时处理
- 消息队列:替代传统的消息队列(如: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状态
常用命令
https://cloud.tencent.com/developer/article/1844234
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)