Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?

这篇具有很好参考价值的文章主要介绍了Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kafka怎么做到避免消息重复消费的? 消费者组是什么?

消费者

1、订阅Topic(主题)
2、从订阅的Topic消费(pull)消息,
3、将消费消息的offset(偏移量)保存在Kafka内置的一Topic名字是_consumer_offsets的主题中,在Kafka的logs文件下能看到这👟文件,存放的是消息的偏移量数据
Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?,kafka,kafka,分布式,消费者组,重复消费,横向扩展

消费者组

Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?,kafka,kafka,分布式,消费者组,重复消费,横向扩展

1、订阅同一个Topic的消费者可以加入到一个consumer Group(消费者组)
2、消费者组中的consumer共享一个group_idconfigs,put(“group.id”,”XXX”);只要消费者的group_id一样,就属于同一个消费者组
3、消费者组保证每个topic下一个partition的消息只能被一个消费者组下一个消费者消费,避免消息的重复消费
如上图,当前只有一个消费者组订阅这个Topic,消费者组里只有一个消费者,那么当前Topic中所有分区的消息都由这个消费者消费
4、当消费者端业务逻辑比较复杂,消费消息比较慢,这个时候我们可以向消费者组中多加几个消费者(横向扩展)来提升消费速度。无非就是消费者端一套代码再在几台新的服务器部署一套,加入到同一个group_id下,同时从主题消费消息
横向扩展后,Kafka会对消息的分区与消费者的对应关系重新调整,这就是rebalance(再平衡机制)
Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?,kafka,kafka,分布式,消费者组,重复消费,横向扩展
如上图,消费者组扩展一个消费者后,消费者1、2分别消费两个分区的消息
我们可以看到,一个分区对应一个消费者,但是一个消费者可以对应多个分区

如果上面结构还不够,两个消费者消费速度依然跟不上,那么我们还可以继续添加消费者,添加到4个消费者,此时主题分区与消费者的关系再次发生变化,需要再平衡,此时一个消费者消费一个分区消息,达到并行消费的效果
Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?,kafka,kafka,分布式,消费者组,重复消费,横向扩展

上面步骤我们看到了消息的分区可以横向扩展,消息的消费者也可以横向扩展,向消费者组添加消费者是横向扩展消费能力的主要方式,而消费者组是消费者的关键,消费者组来保证,主题下的消息不管由多少个分区,每条消息只会被一个消费者消费,就不会引起重复消费的情况

一般最佳情况是:消费者数 = 分区数,一个分区对应一个消费者,
消费者也不是越多越好,消费者数受限于分区数, 过多消费者会导致有的消费者没有分配分区导致空闲,如下图
Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?,kafka,kafka,分布式,消费者组,重复消费,横向扩展
所以对于高并发的场合,我们通常会给一个主题设置很多个分区,分区数多利于消费者横向扩张


上面是一个消费者组的情况,实际上对于一个Topic可以有不同的消费者组,如下图
Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?,kafka,kafka,分布式,消费者组,重复消费,横向扩展文章来源地址https://www.toymoban.com/news/detail-612195.html

  • 每个消费者组是相互独立的
  • 每个消费者组都可以拿到主题的全部数据

到了这里,关于Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kafka 入门到起飞系列

    2024年02月15日
    浏览(39)
  • Kafka消息传递保障——事务与幂等

    消息传递保障对于分布式系统的可靠性至关重要。在分布式系统中消息传递保障是确保系统可靠性的核心问题之一。系统需要确保消息能够按照预期的方式进行传递,以满足业务需求。 Kafka是一种分布式的消息队列系统,作为消息中间件常用于实现基于发布/订阅模型的消息传

    2024年02月12日
    浏览(37)
  • Kafka 入门到起飞 - 核心概念(术语解释)

    在kafka之旅,我们会大量讨论Kafka中的术语,那么就让我们先来了解一下这些核心概念 消息(Message): kafka的数据单元称为消息,相当于DB里的 一行数据 或 一条记录 消息由 字节数组 组成 批次: 生产者组一批数据再向kafka推送,批次大小可以通过参数配置 把消息分成批次传输

    2024年02月17日
    浏览(59)
  • Kafka入门到起飞系列 - 副本机制,什么是副本因子呢?

    我们一直在讲一个主题会有多个分区,这多个分区可以分布在一台服务器上,也可以分布在多台服务器上,还可以增加分区(Kafka目前只支持分区),这是Kafka提供的一种横向扩展的手段 比如我们创建了一个主题,给主题分配50个分区(这个数不大,_consumer_offset主题默认就5

    2024年02月15日
    浏览(38)
  • Kafka 入门到起飞系列 - 消费者组管理、位移管理

    消费者组 - Consumer Group 上文我们已经讲过消费者组了,我们知道消费组的存在可以保证一个主题下一个分区的消息只会被组内一个消费者消费,从而避免了消息的重复消费 消费者组是Kafka 提供的可扩展且具有容错性的消费者机制 消费组有一个或多个消费者,消费者可以是一

    2024年02月15日
    浏览(45)
  • 【Kafka】消息重复场景及解决

    根本原因 生产发送的消息没有收到正确的broke响应,导致生产者重试。 生产者发出一条消息,broke落盘以后因为网络等种种原因发送端得到一个发送失败的响应或者网络中断,然后生产者收到一个可恢复的Exception重试消息导致消息重复。 过程 过程如下: new KafkaProducer()后创建

    2024年02月21日
    浏览(41)
  • kafka如何避免消息重复消费

    Kafka 避免消息重复消费通常依赖于以下策略和机制: Kafka使用Consumer Group ID来跟踪每个消费者所读取的消息。确保每个消费者都具有唯一的Group ID。如果多个消费者属于同一个Group ID,那么它们将共享消息,但每个分区的消息只能由一个消费者处理。 Kafka会记录每个消费者组消

    2024年01月15日
    浏览(43)
  • kafka如何保证消息不被重复消费

    (1)kafka有个offset的概念,当每个消息被写进去后,都有一个offset,代表他的序号,然后consumer消费该数据之后,隔一段时间,会把自己消费过的消息的offset提交一下,代表我已经消费过了。下次我要是重启,就会继续从上次消费到的offset来继续消费。但是当我们直接kill进程

    2024年02月11日
    浏览(51)
  • 防止消息丢失与消息重复——Kafka可靠性分析及优化实践

    上手第一关,手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么,以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 Kafka存取原理与实现分析,打破面试难关 在上一章内容中,我们解析了Kafka在读写层面上的原理,介绍了很多Kafka在读出与写入时的

    2024年02月08日
    浏览(44)
  • 一碰就头疼的 Kafka 消息重复问题,立马解决!

    一、前言 数据重复这个问题其实也是挺正常,全链路都有可能会导致数据重复。 通常,消息消费时候都会设置一定重试次数来避免网络波动造成的影响,同时带来副作用是可能出现消息重复。 整理下消息重复的几个场景: 生产端: 遇到异常,基本解决措施都是 重试 。 场

    2024年01月23日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包