kafka面试中常遇到的问题与解决方案

本文深入探讨了Kafka在维护消费状态跟踪的方法,包括消息丢失问题、消费者确认机制以及Zookeeper在Kafka中的作用。此外,还讨论了Kafka的高可用机制、消息顺序消费和避免重复数据的策略。最后,提到了生产者和消费者的命令行操作,以及拉取模式的优点和避免空轮询的策略。
摘要由CSDN通过智能技术生成

讲讲kafka维护消费状态跟踪的方法

大 部 分 消 息 系 统 在broker端 的 维 护 消 息 被 消 费 的 记 录 : 一 个 消 息 被 分 发到consumer后broker就 马 上 进 行 标 记 或 者 等 待customer的 通 知 后 进 行 标 记 。 这样 也 可 以 在 消 息 在 消 费 后 立 马 就 删 除 以 减 少 空 间 占 用 。

但 是 这 样 会 不 会 有 什 么 问 题 呢 ? 如 果 一 条 消 息 发 送 出 去 之 后 就 立 即 被 标 记 为 消 费过 的 , 一 旦consumer处 理 消 息 时 失 败 了 ( 比 如 程 序 崩 溃 ) 消 息 就 丢 失 了 。

为 了解 决 这 个 问 题 , 很 多 消 息 系 统 提 供 了 另 外 一 个 个 功 能 : 当 消 息 被 发 送 出 去 之 后 仅仅 被 标 记 为 已 发 送 状 态 , 当 接 到consumer已 经 消 费 成 功 的 通 知 后 才 标 记 为 已 被消 费 的 状 态。

这 虽 然 解 决 了 消 息 丢 失 的 问 题,但 产 生 了 新 问 题,首 先 如 果consumer处 理 消 息 成 功 了 但 是 向broker发 送 响 应 时 失 败 了,这 条 消 息 将 被 消 费 两 次。第 二个 问 题 时 ,broker必 须 维 护 每 条 消 息 的 状 态 , 并 且 每 次 都 要 先 锁 住 消 息 然 后 更 改状 态 然 后 释 放 锁 。

这 样 麻 烦 又 来 了 , 且 不 说 要 维 护 大 量 的 状 态 数 据 , 比 如 如 果 消息 发 送 出 去 但 没 有 收 到 消 费 成 功 的 通 知 , 这 条 消 息 将 一 直 处 于 被 锁 定 的 状 态 ,Kafka采 用 了 不 同 的 策 略。

Topic被 分 成 了 若 干 分 区,每 个 分 区 在 同 一 时 间 只 被 一个consumer消 费 。 这 意 味 着 每 个 分 区 被 消 费 的 消 息 在 日 志 中 的 位 置 仅 仅 是 一 个简 单 的 整 数:offset。这 样 就 很 容 易 标 记 每 个 分 区 消 费 状 态 就 很 容 易 了,仅 仅 需 要一 个 整 数 而 已 。 这 样 消 费 状 态 的 跟 踪 就 很 简 单 了 。

这 带 来 了 另 外 一 个 好 处 :consumer可 以 把offset调 成 一 个 较 老 的 值 , 去 重 新 消

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值