RocketMQ消息发送及消费的基本原理
这是一个比较宏观的部署架构图,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消息发送及消费的基本原理相关推荐
- rocketmq 消息 自定义_RocketMQ的消息发送及消费
RocketMQ消息支持的模式: 消息支持的模式分为三种:NormalProducer(普通同步),消息异步发送,OneWay. 消息同步发送: 普通消息的发送和接收在前面已经演示过了,在前面的案例中 ...
- RocketMQ消息发送之pull和push
RocketMQ学习(五)--RocketMQ消息发送之pull和push import org.apache.rocketmq.client.exception.MQClientException; ...
- RocketMQ消息发送常见错误与解决方案
本文将结合自己使用RocketMQ的经验,对消息发送常见的问题进行分享,基本会遵循出现问题,分析问题.解决问题. 1.No route info of this topic 无法找到路由信息,其完整的 ...
- RocketMQ学习(四)——RocketMQ消息发送
RocketMQ 网络架构图 RocketMQ分布式消息队列的网络部署架构图如下图所示 于上图中几个角色的说明: (1) NameServer: RocketMQ集群的命名服务器(也可以说是注册中心) ...
- RabbitMQ如何保证消息发送、消费成功
好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受. 目录 1.发送确认机制设置 2.消息丢失.非信任或失败 3.消息重复消费 4.消费成功通知 5.总结 消息因为其:削 ...
- 《SpringBoot2.0 实战》系列-整合kafka实现消息发送、消费
之前写过一篇关于ActiveMq的博文,有兴趣的小伙伴可以点击查看.但是ActiveMq总体性能表现一般,如果对消息队列性能要求较高,业务量较大,那我们需要重新考量.本文就介绍一款性能高的消息队列- ...
- mq发送消息到两个服务器问题,RocketMQ消息发送常见错误与解决方案
本文将结合本身使用RocketMQ的经验,对消息发送常见的问题进行分享,基本会遵循出现问题,分析问题.解决问题.web 一.No route info of this topic 没法找到路由信息,其 ...
- kafka:消息发送以及消费的过程
摘要 kafka的存储消息,生产者发送消息,消费者消费消息.这些看起来简单,但实际细想,会有很多问题需要解决:消息是单个单个发送还是批量发送?broker的主题里一有消息就立即推送给消费者吗?生产者的 ...
- KAFKA 集成 SpringBoot2 消息发送和消费消息(基础篇)
文章目录 1. 技术选型 2. 导入依赖 3. kafka配置 4. 生产者(同步) 5. 生产者(异步) 6. 消费者 1. 技术选型 软件/框架 版本 jdk 1.8.0_202 springbo ...
最新文章
- %matplotlib inline的含义
- 编译 | 5G时代的游戏世界:一年后的AR与VR将会发生的几个变化
- 一文理解CatBoost!
- 最新3D GAN可生成三维几何数据了!模型速度提升7倍,英伟达斯坦福出品
- python【蓝桥杯vip练习题库】ADV-306输出三个整数的最大数
- CRUD-员工列表 大体流程
- JAVA基础知识(2)
- 南大cssci期刊目录_重磅!最新版CSSCI来源期刊目录(20192020)及增减变化!【南大核心】...
- Flash网站流量统计的方法
- 0,1,2 代表标准输入、标准输出、标准错误
- android 百度地图开发 怎么减小包的大小,最新的百度地图Android开发包中,如何隐藏右下角的放大缩小控件...
- 容器混合云发展引争议,专家亚马逊云科技中国峰会共探讨
- python数据可视化-matplotlib之散点图sactter函数详解
- 2011-7-3北京李庄儿童医院看病记
- matlab 双均线,双均线策略
- 农林牧渔行业S2B2C系统网站提升品牌知名度,提升盈利水平
- java语言,MP4视频文件合并功能
- linux向日葵无法启动, 提示错误 connect is error
- 阿里云天池大数据:【入门】精灵宝可梦数据集分析
- 多目标优化系列(四)RM-MEDA