这是一个比较宏观的部署架构图,rocketmq天然支持高可用,它可以支持多主多从的部署架构,这也是和kafka最大的区别之一

原因是RocketMQ中并没有master选举功能,所以通过配置多个master节点来保证rocketMQ的高可用。和所有的集群角色定位一样,master节点负责接受事务请求、slave节点只负责接收读请求,并且接收master同步过来的数据和slave保持一直。当master挂了以后,如果当前rocketmq是一主多从, 就意味着无法接受发送端的消息,但是消费者仍然能够继续消费。

所以配置多个主节点后,可以保证当其中一个master节点挂了,另外一个master节点仍然能够对外提供消息发送服务。

当存在多个主节点时,一条消息只会发送到其中一个主节点,rocketmq对于多个master节点的消息发送,会做负载均衡,使得消息可以平衡的发送到多个master节点上。

一个消费者可以同时消费多个master节点上的消息,在下面这个架构图中,两个master节点恰好可以平均分发到两个消费者上,如果此时只有一个消费者,那么这个消费者会消费两个master节点的数据。

由于每个master可以配置多个slave,所以如果其中一个master挂了,消息仍然可以被消费者从slave节点消费到。可以完美的实现rocketmq消息的高可用

接下来,站在topic的角度来看看消息是如何分发和处理的,假设有两个master节点的集群,创建了一个TestTopic,并且对这个topic创建了两个队列,也就是分区。

消费者定义了两个分组,分组的概念也是和kafka一样,通过分组可以实现消息的广播。

集群支持

RocketMQ天生对集群的支持非常友好

1)单Master

优点:除了配置简单没什么优点

缺点:不可靠,该机器重启或宕机,将导致整个服务不可用

2)多Master

优点:配置简单,性能最高

缺点:可能会有少量消息丢失(配置相关),单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性

3)多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用异步复制方式,主备有短暂消息延迟,毫秒级

优点:性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预

缺点:Master宕机或磁盘损坏时会有少量消息丢失

4)多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用同步双写方式,主备都写成功,向应用返回成功

优点:服务可用性与数据可用性非常高

缺点:性能比异步集群略低,当前版本主宕备不能自动切换为主

需要注意的是,在RocketMQ里面,1台机器只能要么是Master,要么是Slave。这个在初始的机器配置里面,就定死了。不会像kafka那样存在master动态选举的功能。其中Master的broker id = 0,Slave 的broker id > 0。

有点类似于mysql的主从概念,master挂了以后,slave仍然可以提供读服务,但是由于有多主的存在,当一个master挂了以后,可以写到其他的master上。

RocketMQ消息发送及消费的基本原理相关推荐

  1. rocketmq 消息 自定义_RocketMQ的消息发送及消费

    RocketMQ消息支持的模式: 消息支持的模式分为三种:NormalProducer(普通同步),消息异步发送,OneWay. 消息同步发送: 普通消息的发送和接收在前面已经演示过了,在前面的案例中 ...

  2. RocketMQ消息发送之pull和push

    RocketMQ学习(五)--RocketMQ消息发送之pull和push import org.apache.rocketmq.client.exception.MQClientException; ...

  3. RocketMQ消息发送常见错误与解决方案

    本文将结合自己使用RocketMQ的经验,对消息发送常见的问题进行分享,基本会遵循出现问题,分析问题.解决问题. 1.No route info of this topic 无法找到路由信息,其完整的 ...

  4. RocketMQ学习(四)——RocketMQ消息发送

    RocketMQ 网络架构图 RocketMQ分布式消息队列的网络部署架构图如下图所示 于上图中几个角色的说明: (1) NameServer: RocketMQ集群的命名服务器(也可以说是注册中心) ...

  5. RabbitMQ如何保证消息发送、消费成功

    好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受. 目录 1.发送确认机制设置 2.消息丢失.非信任或失败 3.消息重复消费 4.消费成功通知 5.总结 消息因为其:削 ...

  6. 《SpringBoot2.0 实战》系列-整合kafka实现消息发送、消费

    之前写过一篇关于ActiveMq的博文,有兴趣的小伙伴可以点击查看.但是ActiveMq总体性能表现一般,如果对消息队列性能要求较高,业务量较大,那我们需要重新考量.本文就介绍一款性能高的消息队列- ...

  7. mq发送消息到两个服务器问题,RocketMQ消息发送常见错误与解决方案

    本文将结合本身使用RocketMQ的经验,对消息发送常见的问题进行分享,基本会遵循出现问题,分析问题.解决问题.web 一.No route info of this topic 没法找到路由信息,其 ...

  8. kafka:消息发送以及消费的过程

    摘要 kafka的存储消息,生产者发送消息,消费者消费消息.这些看起来简单,但实际细想,会有很多问题需要解决:消息是单个单个发送还是批量发送?broker的主题里一有消息就立即推送给消费者吗?生产者的 ...

  9. KAFKA 集成 SpringBoot2 消息发送和消费消息(基础篇)

    文章目录 1. 技术选型 2. 导入依赖 3. kafka配置 4. 生产者(同步) 5. 生产者(异步) 6. 消费者 1. 技术选型 软件/框架 版本 jdk 1.8.0_202 springbo ...

最新文章

  1. %matplotlib inline的含义
  2. 编译 | 5G时代的游戏世界:一年后的AR与VR将会发生的几个变化
  3. 一文理解CatBoost!
  4. 最新3D GAN可生成三维几何数据了!模型速度提升7倍,英伟达斯坦福出品
  5. python【蓝桥杯vip练习题库】ADV-306输出三个整数的最大数
  6. CRUD-员工列表 大体流程
  7. JAVA基础知识(2)
  8. 南大cssci期刊目录_重磅!最新版CSSCI来源期刊目录(20192020)及增减变化!【南大核心】...
  9. Flash网站流量统计的方法
  10. 0,1,2 代表标准输入、标准输出、标准错误
  11. android 百度地图开发 怎么减小包的大小,最新的百度地图Android开发包中,如何隐藏右下角的放大缩小控件...
  12. 容器混合云发展引争议,专家亚马逊云科技中国峰会共探讨
  13. python数据可视化-matplotlib之散点图sactter函数详解
  14. 2011-7-3北京李庄儿童医院看病记
  15. matlab 双均线,双均线策略
  16. 农林牧渔行业S2B2C系统网站提升品牌知名度,提升盈利水平
  17. java语言,MP4视频文件合并功能
  18. linux向日葵无法启动, 提示错误 connect is error
  19. 阿里云天池大数据:【入门】精灵宝可梦数据集分析
  20. 多目标优化系列(四)RM-MEDA

热门文章

  1. datatable 多字段 排序;
  2. iOS原生WebView中JavaScript和OC交互
  3. 使用Chrome快速实现数据的抓取(四)——优点
  4. Linux文件权限查看及修改命令chmod,chown
  5. K-means的缺点(优化不仅仅是最小化误差)
  6. Berkeley DB基础教程
  7. Android学习第二天-android常用命令
  8. 高质量C /C编程指南---附录B :C /C试题和谜底
  9. 《深入浅出数据分析》为读者送上了章回小说的精彩
  10. 【Apache POI】Java 读取Excel文件