一、消息队列模式

1)点对点模式:一对一
2)发布/订阅模式:一对多,
消费者主动拉取
队列推送

二、kafka集群

1)Broker
2)Topic
3)Partition
4)Consumer group

三、数据可靠性

1)ack=all(-1),leader和follower(ISR中的follower)全部同步后,返回ack(会产生数据重复)
2)ack=1,等待分区leader写完,返回ack,不管follower是否同步(会产生数据丢失)
3)ack=0,不等待leader写完就直接返回 ack(会产生数据丢失)

四、数据一致性

1)LEO:指的是每个副本最大的offset
2)HW:指的是消费者能见到的最大的offset,ISR队列中最小的LEO,所有副本中最小的LEO
HW之前的数据才对consumer可见,为保证副本之间数据一致性,把副本按照HW切除多余部分,并按照新leader补充完整。

五、消费方式

push模式:是由队列主动推送消息给消费者
poll模式:消费者轮询队列中是否有数据,如果当前没有数据可消费,consumer会等待一段时间再返回,这段时间为 timeout。

六、分配策略

1)

七、offset提交

1)同步提交(commitSync):当前线程会阻塞直到offset提交成功
2)异步提交(commitAsync):

先消费再提交offset 可能会造成重复消费
先提交offset再消费数据 可能会造成消息消费遗漏