一、消息队列模式
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再消费数据 可能会造成消息消费遗漏