- 消息队列的主要作用
解耦,将生产者与消费者解耦。
数据冗余,消息队列中还会有一份数据备份。
缓冲,生产者消费者速度不匹配时,做缓冲。
- 消息投递模式
1. push模式
优点:及时性好
缺点:受限于消费能力,可能造成积压。
2. pull模式
优点:消费者可按需获取。
缺点:及时性差,可能会延迟。
- 消费语义
1. 至多消费一次:消息可能丢失,但绝不重传。
2. 至少消费一次:消息可能重传,但绝不丢失。
3. 仅被消费一次:消息只被传递一次。
- 消息与主题,分区间的关系
每一个消息都归属于某一个主题,kafka中以主题为单位进行归类。
每一个主题会有若干个分区,每个分区只属于一个主题,每个分区包含的消息不同而且是有序的。
- 消费者组与分区关系
每个分区只能被消费者组中的一个消费者消费,一个消费者可以消费多个分区。
- 分区的副本机制
分区的副本机制,是一主多从的关系,各副本之间的内容是一致的。
leader副本用来读写,follower副本用来备份。
一旦leader副本下线,会通过选举机制选举新的leader副本。
(按照ISR列表中选取)
不同的副本在不同的broker中。
- acks参数含义
acks=0:不需要等待任何返回。
acks=1:需要等待leader副本写入成功,不等待follower副本。
acks=-1:需要等待leader副本与所有follower副本写入成功。
- AR,ISR和OSR的含义与关系
AR:所有副本
ISR:leader副本和与leader副本保持一定同步的follower副本。
OSR:同步滞后的副本集合。
AR = ISR + OSR