官方文档:
一 基本概念
- producer:生产者,发送消息
- consumer:消费者,接受消息
- broker:服务代理节点
- Topic:主题
- Partition:分区
1. 什么是 Topic 和 Partition
主题是逻辑上的概念,下面可以区分很多分区。所以Partition 也被叫做(Topic-Partition)。
同一主题下的不同分区包含的消息是不同的,主题的信息被随机分发到主题下的不同分区中,消息在被发送到分区后会分配一个特定的偏移量(offset)。offset 是分区中的唯一标识,使用其保持在分区中的顺序性。但是 offset在分区中是连续的,所以 kafka 保证的是分区有序 而不是主题有序。
使用不同的分区是为了解决单服务器 io 性能瓶颈问题,有多个分区就可以分步在不同的服务器,实现水平扩容。
同一消费组中,每一个分区只能由一个消费者消费。
分区的好处:
- 便于合理的使用存储资源
- 提高并行度,在生产者和消费者方面都有所提升
2. 副本与同步
Partition 有多副本机制,通过增加副本来提升容灾能力,即一主多从机制。
消费者和生产者都只与 leader 交互,follower 副本只负责消息的同步。
ProducerRecord
ISR:ISR是一个集合,里面包含了一个partition同步好的所有leader和follower集合,如果一个follower消息拉下太多,就会被剔除ISR,直到同步追赶上,再加入ISR
二 消息队列
应用场景(有什么功能)
- 缓冲、削峰
- 解耦:生产者消费者之间不需要每个都链接,只需要对kafka进行通信即可。可以对生产者和消费者之间解耦。
- 异步通信:如将一些异步的功能请求发送到Kafka中。

