 Apache RocketMQ 从入门到实战作为一款高吞吐,抗万亿消息堆积的云原生消息平台,目前已 经被国内 75% 以上互联网、金融等公司所采用,逐渐成为企业 IT 架构的核心基础设施。 丁威老师作为资深架构师,在分布式架构、存储方面功底深厚,目前在企业内部负责着 日均千亿级消息流转的 RocketMQ 集群。本书不仅由浅入深的介绍了 RocketMQ 的架 构与实现,而且包含了多年线上超大规模集群开发运维经验的总结,通过本书不仅能够掌握 分布式 RocketMQ ACL 使用指南 141 1.16 RocketMQ 消息轨迹-设计篇 151 1.17 消息发送常见问题与解决方案 155 本文来自『中间件兴趣圈』公众号,仅作技术交流,未授权任何商业行为。 开篇:我的另一种参与 RocketMQ 开源社区的方式 < 6 开篇:我的另一种参与 RocketMQ 开源 社区的方式 很荣幸在 2019 年获得了 RocketMQ 开源社区的授予我优秀布道师荣誉称号。 级项目,我内心是无比激动,因为终于可以一睹一款高性能的消息中间件的实现原理。 通过阅读了 RocketMQ 官方,以下几个特别的点更是吸引了我的注意,让我下定决 心深入研究一番。 本文来自『中间件兴趣圈』公众号,仅作技术交流,未授权任何商业行为。 7 > 开篇:我的另一种参与 RocketMQ 开源社区的方式  RocketMQ 为什么性能高效,到底运用了什么“厉害”的技术?  RocketMQ 如何实现刷盘(可以类0 码力 | 165 页 | 12.53 MB | 1 年前3 Apache RocketMQ 从入门到实战作为一款高吞吐,抗万亿消息堆积的云原生消息平台,目前已 经被国内 75% 以上互联网、金融等公司所采用,逐渐成为企业 IT 架构的核心基础设施。 丁威老师作为资深架构师,在分布式架构、存储方面功底深厚,目前在企业内部负责着 日均千亿级消息流转的 RocketMQ 集群。本书不仅由浅入深的介绍了 RocketMQ 的架 构与实现,而且包含了多年线上超大规模集群开发运维经验的总结,通过本书不仅能够掌握 分布式 RocketMQ ACL 使用指南 141 1.16 RocketMQ 消息轨迹-设计篇 151 1.17 消息发送常见问题与解决方案 155 本文来自『中间件兴趣圈』公众号,仅作技术交流,未授权任何商业行为。 开篇:我的另一种参与 RocketMQ 开源社区的方式 < 6 开篇:我的另一种参与 RocketMQ 开源 社区的方式 很荣幸在 2019 年获得了 RocketMQ 开源社区的授予我优秀布道师荣誉称号。 级项目,我内心是无比激动,因为终于可以一睹一款高性能的消息中间件的实现原理。 通过阅读了 RocketMQ 官方,以下几个特别的点更是吸引了我的注意,让我下定决 心深入研究一番。 本文来自『中间件兴趣圈』公众号,仅作技术交流,未授权任何商业行为。 7 > 开篇:我的另一种参与 RocketMQ 开源社区的方式  RocketMQ 为什么性能高效,到底运用了什么“厉害”的技术?  RocketMQ 如何实现刷盘(可以类0 码力 | 165 页 | 12.53 MB | 1 年前3
 Apache RocketMQ on Amazon Web Services18 VolumeType VolumeType gp2 要挂载到 RocketMQ 节点(gp2 或 io1)的 Amazon EBS(数据) 卷的卷类型。 步骤三:授权并创建堆栈 1. 参数设置完成后,点击下一步设置 tag(可选)。 2. 再点击下一步检查对应参数。 3. 在最后的审核⻚面中,勾选最下方的【我确认,AMAZON CloudFormation SwitchyOmega 插件并选择刚刚创建的 RocketMQ profile,如下图 Page 16 of 18 8. 完成了上面这步之后,浏览器就会将所有的流量通过本地的 40011 端⼝ proxy 到 Bastion Host 机器。 9. 在浏览器中输⼊部署好的任何一个 Nameserver 的私有 ip 地址加上 8080 端⼝ (http://100 码力 | 18 页 | 1.55 MB | 1 年前3 Apache RocketMQ on Amazon Web Services18 VolumeType VolumeType gp2 要挂载到 RocketMQ 节点(gp2 或 io1)的 Amazon EBS(数据) 卷的卷类型。 步骤三:授权并创建堆栈 1. 参数设置完成后,点击下一步设置 tag(可选)。 2. 再点击下一步检查对应参数。 3. 在最后的审核⻚面中,勾选最下方的【我确认,AMAZON CloudFormation SwitchyOmega 插件并选择刚刚创建的 RocketMQ profile,如下图 Page 16 of 18 8. 完成了上面这步之后,浏览器就会将所有的流量通过本地的 40011 端⼝ proxy 到 Bastion Host 机器。 9. 在浏览器中输⼊部署好的任何一个 Nameserver 的私有 ip 地址加上 8080 端⼝ (http://100 码力 | 18 页 | 1.55 MB | 1 年前3
 快速部署高可用的Apache RocketMQ 集群 - Amazon S3为单位)。 18 VolumeType VolumeType gp2 要挂载到 RocketMQ 节点( gp2 或 io1)的 Amazon EBS (数据)卷的卷类型。 步骤三:授权并创建堆栈 1. 参数设置完成后,点击下⼀步设置 tag(可选)。 2. 再点击下⼀步检查对应参数。 3. 在最后的审核⻚⾯中,勾选最下⽅的【我确认,Amazon CloudFormation SwitchyOmega 插件并选择刚刚创建的 RocketMQ profile,如下图 Page 19 of 21 8. 完成了上面这步之后,浏览器就会将所有的流量通过本地的 40011 端口 proxy 到 Bastion Host 机器。 9. 在浏览器中输入部署好的任何一个 Nameserver 的私有 ip 地址加上 8080 端 口(http://100 码力 | 21 页 | 2.57 MB | 1 年前3 快速部署高可用的Apache RocketMQ 集群 - Amazon S3为单位)。 18 VolumeType VolumeType gp2 要挂载到 RocketMQ 节点( gp2 或 io1)的 Amazon EBS (数据)卷的卷类型。 步骤三:授权并创建堆栈 1. 参数设置完成后,点击下⼀步设置 tag(可选)。 2. 再点击下⼀步检查对应参数。 3. 在最后的审核⻚⾯中,勾选最下⽅的【我确认,Amazon CloudFormation SwitchyOmega 插件并选择刚刚创建的 RocketMQ profile,如下图 Page 19 of 21 8. 完成了上面这步之后,浏览器就会将所有的流量通过本地的 40011 端口 proxy 到 Bastion Host 机器。 9. 在浏览器中输入部署好的任何一个 Nameserver 的私有 ip 地址加上 8080 端 口(http://100 码力 | 21 页 | 2.57 MB | 1 年前3
 消息中间件RocketMQ原理解析 - 斩秋Broker 根 据 producer 请 求 的 RequestCode.SEND_MESSAGE 选 择 对 应 的 处 理 器 SendMessageProcessor 根据请求消息内容构建消息内部结构 MessageExtBrokerInner 调 DefaultMessageStore 加消息写入 commitlog 2.2 分布式事物消息落地 2.2.1 消息落地 1. 获取 ProcessQueue 判读是否 drop 的, drop 为 true 返回 2. 给 ProcessQueue 设置拉消息时间戳 3. 流量控制,正在消费队列中消息(未被消费的)超过阀值,稍后在执行拉消息 4. 流量控制,正在消费队列中消息的跨度超过阀值(默认 2000),稍后在消费 5. 根据 topic 获取订阅关系 6. 构建拉消息回调对象 PullBack, 从 DefaultMQPullConsumer. fetchMessageQueuesInBalance(topic) 获取消费的队 列 业务自己获取消费队列,自己到 broker 拉取消息,以及自己更新消费进度 因为内部实现跟 push 方式类似就不在啰嗦,用法也请求看示例代码去 七:shutdown DefaultMQPushConsumerImpl 关闭消费端 关闭消费线程0 码力 | 57 页 | 2.39 MB | 1 年前3 消息中间件RocketMQ原理解析 - 斩秋Broker 根 据 producer 请 求 的 RequestCode.SEND_MESSAGE 选 择 对 应 的 处 理 器 SendMessageProcessor 根据请求消息内容构建消息内部结构 MessageExtBrokerInner 调 DefaultMessageStore 加消息写入 commitlog 2.2 分布式事物消息落地 2.2.1 消息落地 1. 获取 ProcessQueue 判读是否 drop 的, drop 为 true 返回 2. 给 ProcessQueue 设置拉消息时间戳 3. 流量控制,正在消费队列中消息(未被消费的)超过阀值,稍后在执行拉消息 4. 流量控制,正在消费队列中消息的跨度超过阀值(默认 2000),稍后在消费 5. 根据 topic 获取订阅关系 6. 构建拉消息回调对象 PullBack, 从 DefaultMQPullConsumer. fetchMessageQueuesInBalance(topic) 获取消费的队 列 业务自己获取消费队列,自己到 broker 拉取消息,以及自己更新消费进度 因为内部实现跟 push 方式类似就不在啰嗦,用法也请求看示例代码去 七:shutdown DefaultMQPushConsumerImpl 关闭消费端 关闭消费线程0 码力 | 57 页 | 2.39 MB | 1 年前3
 RocketMQ v3.2.4 开发指南维护,开源社区非常活跃。 https://github.com/killme2008/Metamorphosis 二、Metaq 2.x 亍 2012 年 10 月份上线,在淘宝内部被广泛使用。 三、RocketMQ 3.x 基亍公司内部开源共建原则, RocketMQ 项目只维护核心功能,丏去除了所有其他运行时依赖,核心功能最 简化。每个 BU 的个性化需求都在 RocketMQ 项目乀上迕行深度定制。RocketMQ 过滤程序做过滤,过滤完成后迒回给 Consumer。 总结: 项目开源主页:https://github.com/alibaba/RocketMQ 29 1. 使用 CPU 资源来换叏网卡流量资源 2. FilterServer 不 Broker 部署在同一台机器,数据通过本地回环通信,丌走网卡 3. 一台 Broker 部署多个 FilterServer,充分利用 CPU 资源,因为单个 地址,某些机器会发生无法识别客户端 IP 地址情况,需要应用在代码中强制指定 instanceName DEFAULT 客户端实例名称,客户端创建的多个 Producer、 Consumer 实际是共用一个内部实例(这个实例包含 网络连接、线程资源等) clientCallbackExecutorThreads 4 通信层异步回调线程数 pollNameServerInteval 300000 码力 | 52 页 | 1.61 MB | 1 年前3 RocketMQ v3.2.4 开发指南维护,开源社区非常活跃。 https://github.com/killme2008/Metamorphosis 二、Metaq 2.x 亍 2012 年 10 月份上线,在淘宝内部被广泛使用。 三、RocketMQ 3.x 基亍公司内部开源共建原则, RocketMQ 项目只维护核心功能,丏去除了所有其他运行时依赖,核心功能最 简化。每个 BU 的个性化需求都在 RocketMQ 项目乀上迕行深度定制。RocketMQ 过滤程序做过滤,过滤完成后迒回给 Consumer。 总结: 项目开源主页:https://github.com/alibaba/RocketMQ 29 1. 使用 CPU 资源来换叏网卡流量资源 2. FilterServer 不 Broker 部署在同一台机器,数据通过本地回环通信,丌走网卡 3. 一台 Broker 部署多个 FilterServer,充分利用 CPU 资源,因为单个 地址,某些机器会发生无法识别客户端 IP 地址情况,需要应用在代码中强制指定 instanceName DEFAULT 客户端实例名称,客户端创建的多个 Producer、 Consumer 实际是共用一个内部实例(这个实例包含 网络连接、线程资源等) clientCallbackExecutorThreads 4 通信层异步回调线程数 pollNameServerInteval 300000 码力 | 52 页 | 1.61 MB | 1 年前3
 基于Apache APISIX 与RocketMQ 构建云原生一体化架构业务场景复杂、集成要求尽可能简单 • 运维及流量调拨要求高 极简架构 高性能 金融级高可靠 打造业务消息领域首选 零依赖 可扩展 低延迟 高吞吐 强同步刷盘 ACK 机制 普通消息 顺序消息 延迟消息 事务消息 重试消息 死信消息 设计思想: 1.消息不丢、高可靠是架构的基础 2.时延优先,兼顾吞吐 3.收敛业务共性问题,提供丰富的业务消息类型 4.注重可运维性、弹性扩缩、流量调拨能力建设 RocketMQ 任务计算过程中,会将同一个业务类型的数据发到同一个队列 • Binlog 等数据同步过程中,需要保证严格顺序 RAFT 存储支持:自动主从切换,强一致性保证 逻辑队列:秒级无损弹性扩缩,无数据复制,流量精准调度 消息与流融合索引支持 核心问题 • 消息体小且存储结构面向单 条消息,导致提升吞吐困难 • 在进行状态存储时,无 KV 语义支撑 挑战 • Commitlog 格式存储,0 码力 | 22 页 | 2.26 MB | 1 年前3 基于Apache APISIX 与RocketMQ 构建云原生一体化架构业务场景复杂、集成要求尽可能简单 • 运维及流量调拨要求高 极简架构 高性能 金融级高可靠 打造业务消息领域首选 零依赖 可扩展 低延迟 高吞吐 强同步刷盘 ACK 机制 普通消息 顺序消息 延迟消息 事务消息 重试消息 死信消息 设计思想: 1.消息不丢、高可靠是架构的基础 2.时延优先,兼顾吞吐 3.收敛业务共性问题,提供丰富的业务消息类型 4.注重可运维性、弹性扩缩、流量调拨能力建设 RocketMQ 任务计算过程中,会将同一个业务类型的数据发到同一个队列 • Binlog 等数据同步过程中,需要保证严格顺序 RAFT 存储支持:自动主从切换,强一致性保证 逻辑队列:秒级无损弹性扩缩,无数据复制,流量精准调度 消息与流融合索引支持 核心问题 • 消息体小且存储结构面向单 条消息,导致提升吞吐困难 • 在进行状态存储时,无 KV 语义支撑 挑战 • Commitlog 格式存储,0 码力 | 22 页 | 2.26 MB | 1 年前3
 万亿级数据洪峰下的消息引擎Apache RocketMQ订阅消息峰值:数千万条/秒 堆积消息峰值:千亿条 消息中间件核心链路 1.4万亿 万亿洪峰下有哪些问题 机器假死 IO Util,Load飙高 磁盘响应慢 消息大量堆积 网卡故障,甚至流量跑满 磁盘损坏 零点之战:发布消息SLA要求100% 慢请求开始大量增加 分布式系统雪崩 容量不足,单机热点 问题的本质: 可用性无限接近100% 可靠性无限接近100% 可用性 >0 码力 | 35 页 | 993.29 KB | 1 年前3 万亿级数据洪峰下的消息引擎Apache RocketMQ订阅消息峰值:数千万条/秒 堆积消息峰值:千亿条 消息中间件核心链路 1.4万亿 万亿洪峰下有哪些问题 机器假死 IO Util,Load飙高 磁盘响应慢 消息大量堆积 网卡故障,甚至流量跑满 磁盘损坏 零点之战:发布消息SLA要求100% 慢请求开始大量增加 分布式系统雪崩 容量不足,单机热点 问题的本质: 可用性无限接近100% 可靠性无限接近100% 可用性 >0 码力 | 35 页 | 993.29 KB | 1 年前3
 万亿级数据洪峰下的消息引擎 Apache RocketMQ订阅消息峰值:数千万条/秒 堆积消息峰值:千亿条 消息中间件核心链路 1.4万亿 万亿洪峰下有哪些问题 机器假死 IO Util,Load飙高 磁盘响应慢 消息大量堆积 网卡故障,甚至流量跑满 磁盘损坏 零点之战:发布消息SLA要求100% 慢请求开始大量增加 分布式系统雪崩 容量不足,单机热点 问题的本质: 可用性无限接近100% 可靠性无限接近100% 可用性 >0 码力 | 35 页 | 5.82 MB | 1 年前3 万亿级数据洪峰下的消息引擎 Apache RocketMQ订阅消息峰值:数千万条/秒 堆积消息峰值:千亿条 消息中间件核心链路 1.4万亿 万亿洪峰下有哪些问题 机器假死 IO Util,Load飙高 磁盘响应慢 消息大量堆积 网卡故障,甚至流量跑满 磁盘损坏 零点之战:发布消息SLA要求100% 慢请求开始大量增加 分布式系统雪崩 容量不足,单机热点 问题的本质: 可用性无限接近100% 可靠性无限接近100% 可用性 >0 码力 | 35 页 | 5.82 MB | 1 年前3
 Apache RocketMQ 介绍Iaas平台首选的消息服务,其背后的支持力度不言而喻。 ActiveMQ最初主要的开发者在LogicBlaze,现在主要开发红帽,是JMS规范的参考实现,也是Apach 旗下的老牌消息服务引擎。JMS虽说是一个API级别的协议,但其内部还是定义了一些实现约束,不 缺少多语言支撑。ActiveMQ的生态堪称丰富多彩,在该Apache顶级项目下,拥有不少子项目,包括 HornetMQ演变而来的Artemis,基于Scala号称下一代AMQ的Apollo等。0 码力 | 5 页 | 375.48 KB | 1 年前3 Apache RocketMQ 介绍Iaas平台首选的消息服务,其背后的支持力度不言而喻。 ActiveMQ最初主要的开发者在LogicBlaze,现在主要开发红帽,是JMS规范的参考实现,也是Apach 旗下的老牌消息服务引擎。JMS虽说是一个API级别的协议,但其内部还是定义了一些实现约束,不 缺少多语言支撑。ActiveMQ的生态堪称丰富多彩,在该Apache顶级项目下,拥有不少子项目,包括 HornetMQ演变而来的Artemis,基于Scala号称下一代AMQ的Apollo等。0 码力 | 5 页 | 375.48 KB | 1 年前3
共 9 条
- 1













