消费模式及rebalance机制

2024-03-30 16:04
文章标签 模式 机制 rebalance 消费

本文主要是介绍消费模式及rebalance机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

消费模式:广播模式和集群模式

   广播模式:相同的consumer group的每个consumer实例都会接收同一个topic的全量消息。即每条消息都会被发送到 consumer group中的每一个consumer。消费进度保存着在consumer端,该模式下consumer group中的每一个consumer都会消费所有消息,且每个consumer之间的进度不需要保持一致。

  集群模式:相同consumer group的每个consumer实例平均分摊同一个topic的消息。即每条消息只能发送到某个consumer中。消费进度保存在broker中,consumer group 中的所有consumer共同消费同一个topic中的所有消息,一条消息只被消费一次,且进度共享。

rebalance机制(rebalance机制的前提是集群模式):

 在均衡,将一个topic下的多个queue在同一个consumer group中的多个consumer间进行重新分配。用于提升消息的并行消费进度。例如,增加一个consumer提高消息并行能力。

 限制:一个队列最多分配给一个consumer,因此当consumer的数量多于queue的数量时,多余的consumer是分配不到任何队列的。

rebalance危害:

  消费暂停:在新增一个consumer后,触发rebalance发生。此时原consumer就需要暂停对队列的消费,等着这些队列分配给新的consumer后,这些暂停队列才能被继续消费。

  消费重复:rebalance后consumer在消费分配给自己的队列时,必须接着之间的原来rebalance前消费该队列的consumer提交到broker的消费进度offset进行消费。但默认情况是offset提交到broker是异步提交,导致提交到broker的进度可能与实际进度不同,导致消息重复消费。

  消息突刺:rebalance可能导致重复消费,如果重复消费的消息过多,或者因为rebalance暂停时间过长从而导致积压信息过多时,可能导致rebalance结束的一瞬间需要消费很多消息。

offset管理(消费进度offset)

  1、offset本地管理模式     :当消费模式为广播模式,offset采用本地模式存储,每个消费者管理自己的消费进度,各个消费者之间不存在消费进度的交集。offset相关数据以json的形式持久化到consumer本地磁盘中。

  2、offset远程管理模式     :消费者模式为集群模式,offset使用远程管理,所有consumer共享queue消费进度。offset以json形式持久化到broker磁盘文件中。                                                       broker启动时会加载这个文件,并写入一个双层map。外层map的key为topic与订阅了该topic的queue,value为内层map。内存map的key为queueId,value为offset。当发生rebalance时,新的consumer会从map中获取到相应的数据继续消费。

这篇关于消费模式及rebalance机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/861935

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

【Tools】大模型中的自注意力机制

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 自注意力机制(Self-Attention)是一种在Transformer等大模型中经常使用的注意力机制。该机制通过对输入序列中的每个元素计算与其他元素之间的相似性,

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试