网站首页 > 博客文章 正文
为什么说ROcketMQ更适用于业务型的消息中间件,因为它能够保证消息不丢失且带有事务消息。
先来看一张RocketMQ集群部署结构
其中Name Server主要是提供路由信息,这里暂时忽略,大致流程为:
Producer(生产者生产消息) --> Broker(存储消息) --> Consumer(消费消息)
接下来我们通过这分析者三个节点来具体说明:
Producer(生产者生产消息)
- 默认情况下可以通过同步的方式发送消息,然后检查发送状态,如果是OK,就一定发送到了Broker,否则会触发默认的2次重试,这里可能成功也可能没成功,可以代码处理
- 采用事务消息TransactionMQProducer方式发送消息,不能保证一定发送到Broker(事务回滚);但如果发送Consumer时返回Ack失败的话,会保存在CommitLog中,不能算完全丢失
- RocketMQ支持日志的索引,如果一条消息发送之后超时,可以通过查询日志的API来检查是否在Broker存储成功
Broker(存储消息)
- 消息支持持久化到CommitLog中,即使宕机重启,也可以保证消息不会丢失
- Broker支持同步或异步刷盘策略,可以保证接收到的消息一定存储在本地文件中
- Broker集群中支持1主N从策略,支持同步双写、异步复制,其中同步双写可以保证即使Master磁盘崩溃,消息不会丢失(在从节点有相同的备份)
Consumer(消费消息)
- Consumer自身维护一个持久化的offset(对应MessageQueue里面的min offset),标记已成功消费或发回Broker消息的下标
- 如果Consumer消息消费失败,会将消息发回到Broker,然后更新自己的offset
- 如果在消息发回到Broker过程中Broker挂了,Consumer会定时重试这个操作
- 如果Broker和Consumer同时挂了,消息也不会丢失(CommitLog和持久化offset),在重启恢复后继续从offset继续消费消息
总结
总结来说就是:多次重试+持久化+offset+主从备份 来保证消息不丢失
猜你喜欢
- 2025-01-12 一次 RocketMQ 顺序消费延迟的问题定位
- 2025-01-12 线上问题之:RocketMq重复消费
- 2025-01-12 基于 RocketMQ 的分布式事务解决方案
- 2025-01-12 生产环境出现网络分区,RocketMQ集群表示毫无压力
- 2025-01-12 实战!如何从零搭建10万级 QPS 大流量、高并发优惠券系统
- 2025-01-12 RocketMQ的高性能网络通信机制竟然是如此实现?
- 2025-01-12 10 张图告诉你 RocketMQ 是怎样保存消息的
- 2025-01-12 RocketMQ系列(六)批量发送与过滤
- 2025-01-12 Canal集群快速搭建
- 2025-01-12 从放弃到入门:消息队列之RocketMQ
你 发表评论:
欢迎- 最近发表
-
- 别再用雪花算法生成ID了!试试这个吧
- Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)
- 业务系统性能问题诊断和优化分析(业务系统性能问题诊断和优化分析报告)
- 数据库中如何批量添加指定数据(数据库批量新增数据)
- Instagram架构的分片和ID的设计(ins的分类)
- VBA数据库解决方案第十四讲:如何在数据库中动态删除和建立数据表
- MySQL数据库安装教程(mysql数据库安装方法)
- SOLIDWORKS Electrical卸载与升级安装操作步骤
- 数据库分库分表解决方案汇总(数据库分库分表思路)
- 根据工作表数据生成数据库(根据excel生成数据库表结构)
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)