1.发布-订阅模式 TOPIC
同一条消息会被多个消费组消费,每个消费组设置一个消费者,以此实现广播。
2.队列模式 QUEUE
只有一个消费组、多个消费者,一条消息之被消费组中的某一个消费者消费,实现单播。
3.一旦有消费者加入或者退出消费组,那么消费组中的所有消费者都需要进行分区再平衡rebalance。如果订阅的分区发生了变化,消费者同样需要rebalance。
4.消费者需要将消费进度保存在外部的存储系统中,比如ZK或者kafka的consumer_offsets,消费进度是消费组级别的。消费者消费消息时需要定时将分区的最新消费进度保存到ZK中,rebalance时,消费者拥有的新分区消费进度可以从ZK中读取出来,恢复消费进度。
5.消息消费有三种模式,至多一次,至少一次,正好一次
至多一次:先保存消费进度,后处理消息。
至少一次:先处理消息,再提交消费进度。(kafka即此种类型,一种是定时间隔更新消费进度,一种是消费处理完毕更新消费进度)
正好一次:将处理消息和消费进度的更新包装为原子操作比如两阶段提交。
网友评论