开发者社区> 问答> 正文

kafka里的消费者故障,岀现活锁问题如何解决?

kafka里的消费者故障,岀现活锁问题如何解决?

展开
收起
7大帅 2021-12-09 21:11:17 1455 1
1 条回答
写回答
取消 提交回答
  • 岀现“活锁”的情况,是它持续的发送心跳,但是没有处理。为了预防消费者在这种 情况下一直持有分区,我们使用max.poll.interval.ms活跃检测机制。在此基础 上,如果你调用的poll的频率大于最大间隔,则客户端将主动地离开组,以便其 他消费者接管该分区。发生这种情况时,你会看到offset提交失败。这是一种安 全机制,保障只有活动成员能够提交offsets所以要留在组中,你必须持续调用 polL

    消费者提供两个配置设置来控制poll循环: max.poll.interval.ms:増大poll的间隔,可以为消费者提供更多的时间去处理返回 的消息(调用pollQong)返回的消息,通常返回的消息都是一批)。缺点是此值越 大将会延迟组重新平衡。

    max.poll.records:此设置限制每次调用poll返回的消息数,这样可以更容易的预 测 W poll间隔要处理的最大值。通过调整此值,可以减少poll间隔,减少重新 平衡分组的

    对于消息处理时间不可预测地的情况,这些选项是不够的。处理这种情况的推荐 方法是将消息处理移到另一个进程中,让消费者继续调用poll。但是必须注意确 保已提交的offset不超过实际位置。另外,你必须禁用自动提交,并只有在进程完 成处理后才为记录手动提交偏移量(取决于你)。还要注意,你需要pause暂停 分区,不会从poll接收到新消息,让进程处理完之前返回的消息(如果你的处理 能力比拉取消息的慢,那创建新进程将导致你机器内存溢岀)。

    2021-12-09 21:45:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
消息队列kafka介绍 立即下载