zoukankan      html  css  js  c++  java
  • 集群消费和广播消费

    基本概念

    MQ 是基于发布订阅模型的消息系统。在 MQ 消息系统中消息的订阅方订阅关注的 Topic,以获取并消费消息。由于订阅方应用一般是分布式系统,以集群方式部署有多台机器。因此 MQ 约定以下概念。

    集群:MQ 约定使用相同 Consumer ID 的订阅者属于同一个集群,同一个集群下的订阅者消费逻辑必须完全一致(包括 Tag 的使用),这些订阅者在逻辑上可以认为是一个消费节点。

    集群消费:当使用集群消费模式时,MQ 认为任意一条消息只需要被集群内的任意一个消费者处理即可。

    广播消费:当使用广播消费模式时,MQ 会将每条消息推送给集群内所有注册过的客户端,保证消息至少被每台机器消费一次。

    场景对比

    集群消费模式:

    cl

    适用场景&注意事项

    • 消费端集群化部署,每条消息只需要被处理一次。
    • 由于消费进度在服务端维护,可靠性更高。
    • 集群消费模式下,每一条消息都只会被分发到一台机器上处理,如果需要被集群下的每一台机器都处理,请使用广播模式。
    • 集群消费模式下,不保证消息的每一次失败重投等逻辑都能路由到同一台机器上,因此处理消息时不应该做任何确定性假设。

    广播消费模式:

    bd

    适用场景&注意事项

    • 每条消息都需要被相同逻辑的多台机器处理。
    • 消费进度在客户端维护,出现重复的概率稍大于集群模式。
    • 广播模式下,MQ 保证每条消息至少被每台客户端消费一次,但是并不会对消费失败的消息进行失败重投,因此业务方需要关注消费失败的情况。
    • 广播模式下,第一次启动时默认从最新消息消费,客户端的消费进度是被持久化在客户端本地的隐藏文件中,因此不建议删除该隐藏文件,否则会丢失部分消息。
    • 广播模式下,每条消息都会被大量的客户端重复处理,因此推荐尽可能使用集群模式。
    • 目前仅 Java 客户端支持广播模式。
    • 广播模式下服务端不维护消费进度,所以服务端不提供堆积查询和报警功能。

    使用集群模式模拟广播:

    cd-bd

    适用场景&注意事项

    • 每条消息都需要被多台机器处理,每台机器的逻辑可以相同也可以不一样。
    • 消费进度在服务端维护,可靠性高于广播模式。

    出处:https://blog.csdn.net/dancheren/article/details/71323936

  • 相关阅读:
    linux安装memcache及memcache扩展
    jsop
    用户权限集中管理方案
    linux系统优化配置
    APICloud
    laravel中使用mgirations创建和迁移数据库
    无限分类
    laravel中的验证及利用uploadify上传图片
    Laravel框架数据库CURD操作、连贯操作使用方法
    php 将二维数组批量插入到数据库中
  • 原文地址:https://www.cnblogs.com/guanbin-529/p/14221841.html
Copyright © 2011-2022 走看看