消费原理

最近更新时间:2019-11-15 16:31:59

消费组消费流程

使用消费组消费数据时,服务端会管理消费组里的所有消费者的消费任务,根据主题分区和消费者的数量关系自动调整消费任务的均衡性,同时会记录每个主题分区的消费进度,保证不同消费者可以无重复消费数据。消费组消费的具体流程如下:

  1. 创建消费组。
  2. 每个消费者定期向服务端发送心跳。
  3. 消费组根据主题分区负载情况自动分配主题分区给消费者。
  4. 消费者根据所分配的分区列表,获取分区游标并消费数据。
  5. 消费者周期性地更新分区的消费进度到消费组,便于下次消费组分配任务。
  6. 重复步骤2 - 6,直至消费结束。

负载均衡消费原理

消费组会根据活跃消费者和主题分区的数量动态调整每个消费者的消费任务,保证消费的均衡性。同时,消费者会保存每个主题分区的消费进度,保证故障恢复后可继续消费数据,避免重复消费。

例一:主题分区发生变化

例如,某个日志主题有两个消费者,消费者 A 负责消费1,2号分区,消费者 B 负责消费3,4号分区,通过分裂操作新增主题分区5后,消费组会自动将5号分区分配给消费者 B 进行消费,如下图所示:
1561034489523

例二:消费者发生变化

例如,某个日志主题有两个消费者,消费者 A 负责消费1,2,3号分区,消费者 B 负责消费4,5,6号分区,为保证消费速度持平生成速度,新增一个消费者 C,消费组会重新进行均衡分配,将3,4号分区分配给新消费者 C 进行消费,如下图所示:
1561035193214

顺序消费原理

当消费组设置为顺序消费时,消费组会保证分区间按时间顺序消费。例如,某个日志主题有3个分区,当3号分区发生分裂变成两个新分区后,消费组会先消费完3号分区的数据,然后再并行消费由3号分区分裂的两个新分区,如下图所示:
1561036291236