 Apache RocketMQ 从入门到实战实战:RocketMQ 学习环境搭建指南篇 28 1.4 RocketMQ HA 核心工作机制 39 1.5 踩坑记:rocketmq-console 消费 TPS 为 0,但消息积压数却在降低是个什么 “鬼” 49 1.6 RocketMQ 一个新的消费组初次启动时从何处开始消费呢? 64 1.7 一次 RocketMQ 进程自动退出排查经验分享 78 1.8 RocketMQ 主题扩分片后遇到的坑 82 有了新的称号,那就得更加努力,朝着优秀努力,在 2019 年我又陆续发表了 20 几篇 关于 RocketMQ 相关的文章,这些文章含金量极高,不仅及时跟进了 RocketMQ4.3.0 之后的新特性:消息轨迹、ACL、主从切换等机制,更是发表了数篇实战类文章,详细指 出在生产环境下一些使用误区,更是输出了几篇生产环境真实故障与解决方案。最终于 20 19 年 RocketMQ 官方社区授予我优秀布道师荣誉称号。 RocketMQ 的路由信息,持久化 Topic 路由信息 的地方是在 Broker 中,即${ ROCKETMQ_HOME}/store/config/topics.json。 在 RocketMQ4.5.0 版本后引入了多副本机制,即一个复制组(m-s)可以演变为基 于 raft 协议的复制组,复制组内部使用 raft 协议保证 broker 节点数据的强一致性,该部署 架构在金融行业用的比较多。 二、消息订阅模型 在0 码力 | 165 页 | 12.53 MB | 1 年前3 Apache RocketMQ 从入门到实战实战:RocketMQ 学习环境搭建指南篇 28 1.4 RocketMQ HA 核心工作机制 39 1.5 踩坑记:rocketmq-console 消费 TPS 为 0,但消息积压数却在降低是个什么 “鬼” 49 1.6 RocketMQ 一个新的消费组初次启动时从何处开始消费呢? 64 1.7 一次 RocketMQ 进程自动退出排查经验分享 78 1.8 RocketMQ 主题扩分片后遇到的坑 82 有了新的称号,那就得更加努力,朝着优秀努力,在 2019 年我又陆续发表了 20 几篇 关于 RocketMQ 相关的文章,这些文章含金量极高,不仅及时跟进了 RocketMQ4.3.0 之后的新特性:消息轨迹、ACL、主从切换等机制,更是发表了数篇实战类文章,详细指 出在生产环境下一些使用误区,更是输出了几篇生产环境真实故障与解决方案。最终于 20 19 年 RocketMQ 官方社区授予我优秀布道师荣誉称号。 RocketMQ 的路由信息,持久化 Topic 路由信息 的地方是在 Broker 中,即${ ROCKETMQ_HOME}/store/config/topics.json。 在 RocketMQ4.5.0 版本后引入了多副本机制,即一个复制组(m-s)可以演变为基 于 raft 协议的复制组,复制组内部使用 raft 协议保证 broker 节点数据的强一致性,该部署 架构在金融行业用的比较多。 二、消息订阅模型 在0 码力 | 165 页 | 12.53 MB | 1 年前3
 RocketMQ v3.2.4 开发指南...................................................................................... 9 4.15 消息重试 .................................................................................................. .............................................................................. 25 7.12 消息消费失败,定时重试 .................................................................................................. 在吐 Consumer 投递成功消息后,消息仍然需要保留。幵丏重新消费一般是挄照时间维度,例如由亍 Consumer 系统故障, 恢复后需要重新消费 1 小时前的数据,那举 Broker 要提供一种机制,可以挄照时间维度来回退消费迕度。 RocketMQ 支持挄照时间回溯消费,时间维度精确到毫秒,可以吐前回溯,也可以吐后回溯。 4.12 消息堆积 消息中间件的主要功能是异步解耦,迓有个0 码力 | 52 页 | 1.61 MB | 1 年前3 RocketMQ v3.2.4 开发指南...................................................................................... 9 4.15 消息重试 .................................................................................................. .............................................................................. 25 7.12 消息消费失败,定时重试 .................................................................................................. 在吐 Consumer 投递成功消息后,消息仍然需要保留。幵丏重新消费一般是挄照时间维度,例如由亍 Consumer 系统故障, 恢复后需要重新消费 1 小时前的数据,那举 Broker 要提供一种机制,可以挄照时间维度来回退消费迕度。 RocketMQ 支持挄照时间回溯消费,时间维度精确到毫秒,可以吐前回溯,也可以吐后回溯。 4.12 消息堆积 消息中间件的主要功能是异步解耦,迓有个0 码力 | 52 页 | 1.61 MB | 1 年前3
 消息中间件RocketMQ原理解析 - 斩秋group)定时发送到, brokerAddrTable 集合中列出的 broker 上去 Producer 发送消息只发送到 master 的 broker 机器,在通过 broker 的主从复制机制拷贝到 broker 的 slave 上去 二:Producer 如何发送消息 Producer 轮询某 topic 下的所有队列的方式来实现发送方的负载均衡 queue 的轮询 如果入参 lastBrokerName 不为空,代表上次选择的 queue 发送失败,这次选 择应该避开同一个 queue 3) Producer 发消息系统重试: 发送失败后,重试几次 retryTimesWhenSendFailed = 2 发送消息超时 sendMsgTimeout = 3000 Producer 通过 selectOneMessageQueue --queueId //代表发送消息的在指定 broker 上指定 topic 下的队列编号 向指定 broker 的指定 topic 的指定 queue 发送消息 发送失败(1)重试次数不到两次(2)发送此条消息花费时间还没有到 3000(毫秒), 换 个队列继续发送。 2.1 producer 发送普通消息 2.2 顺序消息发送 Rocketmq0 码力 | 57 页 | 2.39 MB | 1 年前3 消息中间件RocketMQ原理解析 - 斩秋group)定时发送到, brokerAddrTable 集合中列出的 broker 上去 Producer 发送消息只发送到 master 的 broker 机器,在通过 broker 的主从复制机制拷贝到 broker 的 slave 上去 二:Producer 如何发送消息 Producer 轮询某 topic 下的所有队列的方式来实现发送方的负载均衡 queue 的轮询 如果入参 lastBrokerName 不为空,代表上次选择的 queue 发送失败,这次选 择应该避开同一个 queue 3) Producer 发消息系统重试: 发送失败后,重试几次 retryTimesWhenSendFailed = 2 发送消息超时 sendMsgTimeout = 3000 Producer 通过 selectOneMessageQueue --queueId //代表发送消息的在指定 broker 上指定 topic 下的队列编号 向指定 broker 的指定 topic 的指定 queue 发送消息 发送失败(1)重试次数不到两次(2)发送此条消息花费时间还没有到 3000(毫秒), 换 个队列继续发送。 2.1 producer 发送普通消息 2.2 顺序消息发送 Rocketmq0 码力 | 57 页 | 2.39 MB | 1 年前3
 基于Apache APISIX 与RocketMQ 构建云原生一体化架构业务场景复杂、集成要求尽可能简单 • 运维及流量调拨要求高 极简架构 高性能 金融级高可靠 打造业务消息领域首选 零依赖 可扩展 低延迟 高吞吐 强同步刷盘 ACK 机制 普通消息 顺序消息 延迟消息 事务消息 重试消息 死信消息 设计思想: 1.消息不丢、高可靠是架构的基础 2.时延优先,兼顾吞吐 3.收敛业务共性问题,提供丰富的业务消息类型 4.注重可运维性、弹性扩缩、流量调拨能力建设 分区迁移时,会导致网络风暴,耗时极长 问题重点 • 在主节点宕机时,备节点要有自动切换为主的能力 • 容量调整时,不能产生数据迁移,且要在秒级完成 固定分区使用场景 • 任务计算过程中,会将同一个业务类型的数据发到同一个队列 • Binlog 等数据同步过程中,需要保证严格顺序 RAFT 存储支持:自动主从切换,强一致性保证 逻辑队列:秒级无损弹性扩缩,无数据复制,流量精准调度 消息与流融合索引支持0 码力 | 22 页 | 2.26 MB | 1 年前3 基于Apache APISIX 与RocketMQ 构建云原生一体化架构业务场景复杂、集成要求尽可能简单 • 运维及流量调拨要求高 极简架构 高性能 金融级高可靠 打造业务消息领域首选 零依赖 可扩展 低延迟 高吞吐 强同步刷盘 ACK 机制 普通消息 顺序消息 延迟消息 事务消息 重试消息 死信消息 设计思想: 1.消息不丢、高可靠是架构的基础 2.时延优先,兼顾吞吐 3.收敛业务共性问题,提供丰富的业务消息类型 4.注重可运维性、弹性扩缩、流量调拨能力建设 分区迁移时,会导致网络风暴,耗时极长 问题重点 • 在主节点宕机时,备节点要有自动切换为主的能力 • 容量调整时,不能产生数据迁移,且要在秒级完成 固定分区使用场景 • 任务计算过程中,会将同一个业务类型的数据发到同一个队列 • Binlog 等数据同步过程中,需要保证严格顺序 RAFT 存储支持:自动主从切换,强一致性保证 逻辑队列:秒级无损弹性扩缩,无数据复制,流量精准调度 消息与流融合索引支持0 码力 | 22 页 | 2.26 MB | 1 年前3
 王强-Apache RocketMQ事务消息分布式事务解决⽅方案 TCC 特点: 1. 特殊的两阶段提交 2. Try阶段检查/锁定资源 没有真正提交 3. 增加了了⼀一个状态处理理,开发变复杂 4. CC需要幂等,能够⽀支持重试 5. 如果CC重试不不成功/超时,需要⼿手⼯工⼲干预 Apache RocketMQ 消息事务 Send a message first or execute local transaction first message 先执⾏行行本地事务还是先发送消息? 交易易型分布式事务的 RocketMQ使⽤用场景 分布式事务解决⽅方案 半消息 远程事务 特点: 1. 稳定,⽀支持⾼高并发 2. 回查机制可靠易易⽤用 3. 不不引⼊入额外的依赖 注意:回查⽅方法需要幂等 Broker 实现细节 Producer with PID TransactionListener executeLocalTransaction()0 码力 | 34 页 | 6.17 MB | 1 年前3 王强-Apache RocketMQ事务消息分布式事务解决⽅方案 TCC 特点: 1. 特殊的两阶段提交 2. Try阶段检查/锁定资源 没有真正提交 3. 增加了了⼀一个状态处理理,开发变复杂 4. CC需要幂等,能够⽀支持重试 5. 如果CC重试不不成功/超时,需要⼿手⼯工⼲干预 Apache RocketMQ 消息事务 Send a message first or execute local transaction first message 先执⾏行行本地事务还是先发送消息? 交易易型分布式事务的 RocketMQ使⽤用场景 分布式事务解决⽅方案 半消息 远程事务 特点: 1. 稳定,⽀支持⾼高并发 2. 回查机制可靠易易⽤用 3. 不不引⼊入额外的依赖 注意:回查⽅方法需要幂等 Broker 实现细节 Producer with PID TransactionListener executeLocalTransaction()0 码力 | 34 页 | 6.17 MB | 1 年前3
 Apache RocketMQ 介绍ameServer存有全量的路由信息,提 对等的读写服务,支持快速扩缩容。 Broker负责消息存储,以Topic为纬度支持轻量级的队列,单机可以支撑上万队列规模,支持消息推 模型,具备多副本容错机制(2副本或3副本)、强大的削峰填谷以及上亿级消息堆积能力,同时可严 保证消息的有序性。除此之外,Broker还提供了同城异地容灾能力,丰富的Metrics统计以及告警机 。这些都是传统消息系统无法比拟的。 Producer通过多种负载均衡模式发送到Broker集群,发送 延时,支持快速失败。 Consumer也由用户部署,支持PUSH和PULL两种消费模式,支持集群消费和广播消息,提供实时的 息订阅机制,满足大多数消费场景。 特点 ● RocketMQ支持异步实时刷盘,同步刷盘,同步复制,异步复制。具有高可靠性。不会因为操作系 的崩溃而导致数据丢失。 ● RocketMQ经过一系列的实践和优化,处理速度从最初的10 来说已经是非常优秀了。 ● RocketMQ采用长轮询,消息投递延迟通常在几个毫秒左右。 ● RocketMQ单机最高支持5万个队列,且负载不会发生明显递增。 ● RocketMQ支持消费失败重试,这个特性非常适合运用在充值方面的应用。 ● RocketMQ支持严格的意义上的消息顺序。即时在一台Broker宕机后,消息发送会失败,但是不会 序。 ● RocketMQ支持定时消息 ● RocketMQ支持分布式事务消息0 码力 | 5 页 | 375.48 KB | 1 年前3 Apache RocketMQ 介绍ameServer存有全量的路由信息,提 对等的读写服务,支持快速扩缩容。 Broker负责消息存储,以Topic为纬度支持轻量级的队列,单机可以支撑上万队列规模,支持消息推 模型,具备多副本容错机制(2副本或3副本)、强大的削峰填谷以及上亿级消息堆积能力,同时可严 保证消息的有序性。除此之外,Broker还提供了同城异地容灾能力,丰富的Metrics统计以及告警机 。这些都是传统消息系统无法比拟的。 Producer通过多种负载均衡模式发送到Broker集群,发送 延时,支持快速失败。 Consumer也由用户部署,支持PUSH和PULL两种消费模式,支持集群消费和广播消息,提供实时的 息订阅机制,满足大多数消费场景。 特点 ● RocketMQ支持异步实时刷盘,同步刷盘,同步复制,异步复制。具有高可靠性。不会因为操作系 的崩溃而导致数据丢失。 ● RocketMQ经过一系列的实践和优化,处理速度从最初的10 来说已经是非常优秀了。 ● RocketMQ采用长轮询,消息投递延迟通常在几个毫秒左右。 ● RocketMQ单机最高支持5万个队列,且负载不会发生明显递增。 ● RocketMQ支持消费失败重试,这个特性非常适合运用在充值方面的应用。 ● RocketMQ支持严格的意义上的消息顺序。即时在一台Broker宕机后,消息发送会失败,但是不会 序。 ● RocketMQ支持定时消息 ● RocketMQ支持分布式事务消息0 码力 | 5 页 | 375.48 KB | 1 年前3
 万亿级数据洪峰下的消息引擎Apache RocketMQa b a - i n c . c o m ©2016 Alibaba Middleware Group n 历年双11消息数量变化 n 消息中间件核心链路 n 低延迟存储 n 容量保障 n 熔断机制 n 多副本高可用 10亿 百亿 千亿 5千亿+ 万亿+ 历年双11消息数量变化 2012双11 2013双11 2014双11 2015双11 2016双11 用户请求 交易 交易 不超过20ms 3. 每条消息发布平均响应时间 不超过3ms 1.4万亿 分布式慢请求带来的挑战 1.4万亿 消息中间件分布式慢请求解法 01 02 低延迟分布式存储系统 在线熔断机制,秒级隔离 03 容量保障,限流 1.4万亿 低延迟分布式存储系统 – RocketMQ存储 Java Heap Lock Page Cache Disk Request Request 写入数据平均响应时间不超过1ms 写入数据最大响应时间不超过20ms(Java GC暂停线程引起) 1.4万亿 双十一当天高可用要求 ~~ 100% 低延迟的分布式存储系统 在线熔断机制 完善的容量评估 SLA=99.999% 1.4万亿 在线熔断机制 ①消息服务器 ②消息服务器 ③消息服务器 ④消息服务器 应用 规则 1. 最多只能隔离 30%的机器。 2. 响应时间过长, 开始隔离1分钟 30 码力 | 35 页 | 993.29 KB | 1 年前3 万亿级数据洪峰下的消息引擎Apache RocketMQa b a - i n c . c o m ©2016 Alibaba Middleware Group n 历年双11消息数量变化 n 消息中间件核心链路 n 低延迟存储 n 容量保障 n 熔断机制 n 多副本高可用 10亿 百亿 千亿 5千亿+ 万亿+ 历年双11消息数量变化 2012双11 2013双11 2014双11 2015双11 2016双11 用户请求 交易 交易 不超过20ms 3. 每条消息发布平均响应时间 不超过3ms 1.4万亿 分布式慢请求带来的挑战 1.4万亿 消息中间件分布式慢请求解法 01 02 低延迟分布式存储系统 在线熔断机制,秒级隔离 03 容量保障,限流 1.4万亿 低延迟分布式存储系统 – RocketMQ存储 Java Heap Lock Page Cache Disk Request Request 写入数据平均响应时间不超过1ms 写入数据最大响应时间不超过20ms(Java GC暂停线程引起) 1.4万亿 双十一当天高可用要求 ~~ 100% 低延迟的分布式存储系统 在线熔断机制 完善的容量评估 SLA=99.999% 1.4万亿 在线熔断机制 ①消息服务器 ②消息服务器 ③消息服务器 ④消息服务器 应用 规则 1. 最多只能隔离 30%的机器。 2. 响应时间过长, 开始隔离1分钟 30 码力 | 35 页 | 993.29 KB | 1 年前3
 万亿级数据洪峰下的消息引擎 Apache RocketMQa b a - i n c . c o m ©2016 Alibaba Middleware Group n 历年双11消息数量变化 n 消息中间件核心链路 n 低延迟存储 n 容量保障 n 熔断机制 n 多副本高可用 10亿 百亿 千亿 5千亿+ 万亿+ 历年双11消息数量变化 2012双11 2013双11 2014双11 2015双11 2016双11 用户请求 交易 交易 不超过20ms 3. 每条消息发布平均响应时间 不超过3ms 1.4万亿 分布式慢请求带来的挑战 1.4万亿 消息中间件分布式慢请求解法 01 02 低延迟分布式存储系统 在线熔断机制,秒级隔离 03 容量保障,限流 1.4万亿 低延迟分布式存储系统 – RocketMQ存储 Java Heap Lock Page Cache Disk Request Request 写入数据平均响应时间不超过1ms 写入数据最大响应时间不超过20ms(Java GC暂停线程引起) 1.4万亿 双十一当天高可用要求 ~~ 100% 低延迟的分布式存储系统 在线熔断机制 完善的容量评估 SLA=99.999% 1.4万亿 在线熔断机制 ①消息服务器 ②消息服务器 ③消息服务器 ④消息服务器 应用 规则 1. 最多只能隔离 30%的机器。 2. 响应时间过长, 开始隔离1分钟 30 码力 | 35 页 | 5.82 MB | 1 年前3 万亿级数据洪峰下的消息引擎 Apache RocketMQa b a - i n c . c o m ©2016 Alibaba Middleware Group n 历年双11消息数量变化 n 消息中间件核心链路 n 低延迟存储 n 容量保障 n 熔断机制 n 多副本高可用 10亿 百亿 千亿 5千亿+ 万亿+ 历年双11消息数量变化 2012双11 2013双11 2014双11 2015双11 2016双11 用户请求 交易 交易 不超过20ms 3. 每条消息发布平均响应时间 不超过3ms 1.4万亿 分布式慢请求带来的挑战 1.4万亿 消息中间件分布式慢请求解法 01 02 低延迟分布式存储系统 在线熔断机制,秒级隔离 03 容量保障,限流 1.4万亿 低延迟分布式存储系统 – RocketMQ存储 Java Heap Lock Page Cache Disk Request Request 写入数据平均响应时间不超过1ms 写入数据最大响应时间不超过20ms(Java GC暂停线程引起) 1.4万亿 双十一当天高可用要求 ~~ 100% 低延迟的分布式存储系统 在线熔断机制 完善的容量评估 SLA=99.999% 1.4万亿 在线熔断机制 ①消息服务器 ②消息服务器 ③消息服务器 ④消息服务器 应用 规则 1. 最多只能隔离 30%的机器。 2. 响应时间过长, 开始隔离1分钟 30 码力 | 35 页 | 5.82 MB | 1 年前3
 rocketmq 服务部署参考consumer实例的数量,值过小不利于consumer负 均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=192 参考consumer实例的数量,值过小不利于consumer负 均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=192 参考consumer实例的数量,值过小不利于consumer负 均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=1920 码力 | 11 页 | 284.35 KB | 1 年前3 rocketmq 服务部署参考consumer实例的数量,值过小不利于consumer负 均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=192 参考consumer实例的数量,值过小不利于consumer负 均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=192 参考consumer实例的数量,值过小不利于consumer负 均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=1920 码力 | 11 页 | 284.35 KB | 1 年前3
 Apache RocketMQ on Amazon Web Services实例,每个 Broker 实例会在 三个 Broker Instance 之间形成一个基于 Raft 的高可用 dledger 集群,如果其中一个 Broker 实例因故障无法提供服务,Raft 协议会自动在另外两个 Instance 中选择一个作 为 Master 继续提供服务从而达到高可用的效果,下图是部署完的一个架构实例图 Page 4 of 18 • (*) 有错误可以查看这个日志 4 /home/ec2-user/rocketmq-deploy/rocketMQ-config/ Apache RocketMQ Broker 程 序的配置文件,由部署脚本 自动⽣成 Page 14 of 18 5 /home/ec2-user/rocketmq-deploy/rmqstore Apache RocketMQ 的本地文 件存放目录 ec2-user@ec2-54-223- 36-247.cn-north-1.compute.amazonaws.com.cn 2. 设置好 ssh Tunnel 之后需要在浏览器中设置 proxy,浏览器有很多自动选择 Proxy 的插件,本文使用 SwitchyOmega 作为例⼦。 3. 安装 SwitchyOmega 浏览器插件,Edge 浏览器请访问这个链接,Firefox 浏览器 访问这个链接,Chrome0 码力 | 18 页 | 1.55 MB | 1 年前3 Apache RocketMQ on Amazon Web Services实例,每个 Broker 实例会在 三个 Broker Instance 之间形成一个基于 Raft 的高可用 dledger 集群,如果其中一个 Broker 实例因故障无法提供服务,Raft 协议会自动在另外两个 Instance 中选择一个作 为 Master 继续提供服务从而达到高可用的效果,下图是部署完的一个架构实例图 Page 4 of 18 • (*) 有错误可以查看这个日志 4 /home/ec2-user/rocketmq-deploy/rocketMQ-config/ Apache RocketMQ Broker 程 序的配置文件,由部署脚本 自动⽣成 Page 14 of 18 5 /home/ec2-user/rocketmq-deploy/rmqstore Apache RocketMQ 的本地文 件存放目录 ec2-user@ec2-54-223- 36-247.cn-north-1.compute.amazonaws.com.cn 2. 设置好 ssh Tunnel 之后需要在浏览器中设置 proxy,浏览器有很多自动选择 Proxy 的插件,本文使用 SwitchyOmega 作为例⼦。 3. 安装 SwitchyOmega 浏览器插件,Edge 浏览器请访问这个链接,Firefox 浏览器 访问这个链接,Chrome0 码力 | 18 页 | 1.55 MB | 1 年前3
共 11 条
- 1
- 2













