Kafka - 分布式消息队列
Kafka使用
Kafka简介
概念
- 基于发布/订阅的分布式消息系统
- 由Linkedin开发,用Scala语言编写
特性
- 消息持久化:采用时间复杂度O(1)的磁盘存储结构,即使TB级以上数据也能保证常数时间的访问速度
- 高吞吐:即使在廉价的商用机器上,也能达到单机每秒10万条消息的传输
- 高容错:多分区多副本
- 易扩展:新增机器,集群无需停机,自动感知
- 同时支持离线、实时数据处理
Kafka原理
基本概念
- Broker(代理)
- Kafka的一个实例或节点,一个或多个Broker组成一个Kafka集群
- Topic(主题)
- Topic是Kafka中同一类数据的集合,相当于数据库中的表
- Producer将同一类数据写入同一个Topic,Consumer从同一个Topic中读取同类数据
- Topic是逻辑概念,用户只需指定Topic就可以生产或消费数据,不必关心数据存于何处
- Partition(分区)
- 分区是一个有序的、不可修改的消息队列,分区内消息有序存储
- 一个Topic可分为多个分区,相当于把一个数据集分成多份,分别存储不同的分区中
- Partition是物理概念,每个分区对应一个文件夹,其中存储分区的数据和索引文件
- Replication(副本)
- 一个分区可以设置多个副本,副本存储在不同的Broker中
- Producer(消息生产者)
- 向Broker发布消息的客户端
- Consumer(消息消费者)
- 从Broker消费消息的客户端
- Consumer Group(CG,消费者组)
- 每个Consumer都隶属于一个特定的CG
- 一条消息可以发送给多个不同的CG,但一个CG中只能有一个Consumer读取该消息
- Zookeeper
- Kafka将元数据保存在Zookeeper中
- 负责Kafka集群管理,包括配置管理、动态扩展、Broker负载均衡、Leader选举,以及Consumer Group变化时的Rebalance等
工作机制
- 消息在Broker中按Topic(主题)进行分类,相当于为每个消息打上标签
- 一个Topic可划分为多个Partition(分区)
- 每个Partition可以有多个Replication(副本)
- 消息存储在Broker的某一Topic的某一Partition中,同时存在多个副本
- Partition是一个FIFO队列,写入消息采用在队列尾部追加的方式,消费消息采用在队列头部顺序读取的方式
- 一个Topic可分为多个Partition,仅保证同一分区内消息有序存储,不保证Topic整体(多个分区之间)有序
Kafka使用
— EOF —
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南