栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

07.RocketMQ之消息的消费

07.RocketMQ之消息的消费

一、pull拉取和push推动

消费者组对于消息消费的方式:集群、广播

  1. pull拉取消费:Consumer主动从Broker拉取消息,实时性较弱。便于控制消息拉取
  2. push推送消费:Broker收到数据主动推送给消费者。实时性较高。发布-订阅模式,Queue中有消费者注册的监听器,一旦有新消息就会回调执行。这些都是基于消费者与Broker的长链接,需要消耗系统资源。
  3. 广播模式

    每条消息都会发送给消费者。
  4. 集群模式
    消费者平均分摊消息,每条消息只会被发送到消费者组内的某个消费者中。
  5. Rebalance机制(再均衡)集群消费
    一个Topic下的多个Queue在同一个Consumer Group中 的多个Consumer间进行重新分配的过程。提高消息并行能力。
    1)限制:队列最多分配给一个消费者,消费者数量大于队列数量时,会有部分消费者分配不到队列。
    2)危害:
    消费暂停:增加消费者时,其他消费者暂停消费,分配之后再继续消费。
    消费重复:新增加的消费者消费队列接着之前的offset进度继续消费。默认情况下,offset是异步提交的,异步性导致提交到Broker的offset与Consumer实际消费的消息并不一致,这个不一致会导致消息消费重复问题。
    消费突刺:需要重复消费的消息过多或暂停时间过长,会导致Rebalance结束后瞬间消费很多消息。
    3)产生原因:Topic Queue数量发生变化、消费者组中消费者数量发生变化。
    例如:Broker或Consumer扩容、缩容、升级;Broker或Consumer与Name Server网络异常;
    4)产生过程:Broker中存放两个集合,当前Topic和Consumer的信息,一旦数量发生变化,立即向Consumer Group中的每个实例发出Rebalance通知。存放三个map、一个存放topic、一个存放consumer、一个存放topic与group订阅关系value为queue消费进度。
  6. Queue分配算法
    创建Consumer时通过构造器传入。
    1)平均分配策略
    avg=QueueCount / ConsumerCount的计算结果如果可以整除,则按顺序将avg个Queue逐个分配给Consumer;不能整除将多余的按照Consumer顺序逐个分配。
    2)环形平均策略
    根据消费者顺序,依次由Queue队列组成的环形图中逐个分配。
    3)一致性hash策略
    Consumer 、Queue的hash值放在hash环上,顺时针距离queue最近的consumer就是消费该queue的。会存在消费分配不均匀现象。
    4)同机房策略
    先按照同机房分、再按照平均或环形平均策略分配,如果没有同机房的,按照平均分配策略分配。
    总结:两种平均分配效率较高,涉及到的算法简单。一致性hash策略分配很大程度上存在分配不均匀情况,但很大程度上可以减少由于消费者组扩容或缩容所带来的大量的Rebalance。一致性算法应用场景:Consumer数量变化比较频繁的场景。

  7. 至少一次原则(每条消费必须要被成功消费一次)consumer消费成功会向消费进度器提交消费消息的offset,offset被成功记录到记录器中,那么这条消息为消费成功。
    消费进度器:广播模式下:consumer本身为消费进度器;集群模式下broker为消费进度器。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/342743.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号