万亿级数据洪峰下的消息引擎Apache RocketMQa l i b a 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 用户请求 万亿洪峰下有哪些问题 机器假死 IO Util,Load飙高 磁盘响应慢 消息大量堆积 网卡故障,甚至流量跑满 磁盘损坏 零点之战:发布消息SLA要求100% 慢请求开始大量增加 分布式系统雪崩 容量不足,单机热点 问题的本质: 可用性无限接近100% 可靠性无限接近100% 可用性 > 可靠性 1.4万亿 双十一当天高可用要求 ~~ 100% ???????????? = ???? 每条消息发布平均响应时间 不超过3ms 1.4万亿 分布式慢请求带来的挑战 1.4万亿 消息中间件分布式慢请求解法 01 02 低延迟分布式存储系统 在线熔断机制,秒级隔离 03 容量保障,限流 1.4万亿 低延迟分布式存储系统 – RocketMQ存储 Java Heap Lock Page Cache Disk Request Request Request Request0 码力 | 35 页 | 993.29 KB | 1 年前3
万亿级数据洪峰下的消息引擎 Apache RocketMQa l i b a 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 用户请求 万亿洪峰下有哪些问题 机器假死 IO Util,Load飙高 磁盘响应慢 消息大量堆积 网卡故障,甚至流量跑满 磁盘损坏 零点之战:发布消息SLA要求100% 慢请求开始大量增加 分布式系统雪崩 容量不足,单机热点 问题的本质: 可用性无限接近100% 可靠性无限接近100% 可用性 > 可靠性 1.4万亿 双十一当天高可用要求 ~~ 100% ???????????? = ???? 每条消息发布平均响应时间 不超过3ms 1.4万亿 分布式慢请求带来的挑战 1.4万亿 消息中间件分布式慢请求解法 01 02 低延迟分布式存储系统 在线熔断机制,秒级隔离 03 容量保障,限流 1.4万亿 低延迟分布式存储系统 – RocketMQ存储 Java Heap Lock Page Cache Disk Request Request Request Request0 码力 | 35 页 | 5.82 MB | 1 年前3
基于Apache APISIX 与RocketMQ 构建云原生一体化架构云原生时代的 RocketMQ 03 借力 APISIX 构建云原生接入体系 CONTENT Apache RocketMQ 简介 01 业务消息领域挑战 • 核心链路,稳定性要求高、时延敏感 • 容量峰值具有随机性,弹性要求高 • 业务场景复杂、集成要求尽可能简单 • 运维及流量调拨要求高 极简架构 高性能 金融级高可靠 打造业务消息领域首选 零依赖 可扩展 低延迟 高吞吐 强同步刷盘 你集群是正常的,但我消费就是出问题了,怎么办!? 无损弹性扩缩 固定分区面临的挑战 • 无切换架构中,主节点宕机,备节点不可写,分区数量减少 • 容量不足,Kafka 分区迁移时,会导致网络风暴,耗时极长 问题重点 • 在主节点宕机时,备节点要有自动切换为主的能力 • 容量调整时,不能产生数据迁移,且要在秒级完成 固定分区使用场景 • 任务计算过程中,会将同一个业务类型的数据发到同一个队列 • Binlog0 码力 | 22 页 | 2.26 MB | 1 年前3
RocketMQ v3.2.4 开发指南命中时,要丌可避免的访问磁盘,会产生大量读 IO,读 IO 的吞吏量直接决定了 消息堆积后的访问能力。 评估消息堆积能力主要有以下四点: (1). 消息能堆积多少条,多少字节?即消息的堆积容量。 (2). 消息堆积后,収消息的吞吏量大小,是否会叐堆积影响? 项目开源主页:https://github.com/alibaba/RocketMQ 9 (3). 消息堆积后,正常消费的 com/alibaba/RocketMQ 24 如图所示,5 个队列可以部署在一台机器上,也可以分别部署在 5 台丌同的机器上,収送消息通过轮询队列的方式 収送,每个队列接收平均的消息量。通过增加机器,可以水平扩展队列容量。 另外也可以自定丿方式选择収往哪个队列。 7.9 订阅消息负载均衡 TOPIC_A Consumer1 Consumer2 7-6 订阅消息 Rebalance 如图所示,如果有 消息堆积问题解决办法 前面提到衡量消息中间件堆积能力的几个挃标,现将 RocketMQ 的堆积能力整理如下 表格 7-1RocketMQ 性能堆积挃标 堆积性能挃标 1 消息的堆积容量 依赖磁盘大小 2 发消息的吞吐量大小受影响程度 无 SLAVE 情冴,会叐一定影响 有 SLAVE 情冴,丌叐影响 3 正常消费的 Consumer 是否会受影响 无 SLAVE0 码力 | 52 页 | 1.61 MB | 1 年前3
Apache RocketMQ 从入门到实战之间的间隔,getMessage 通常用于消息消 费时,即这个间隔可以理解为目前未处理的消息总大小。 代码@2:获取 RocketMQ 消息存储在 PageCache 中的总大小,如果当 RocketMQ 容量超过该阔值,将会将被置换出内存,如果要访问不在 PageCache 中的消 息,则需要从磁盘读取。 StoreUtil.TOTAL_PHYSICAL_MEMORY_SIZE 返回当前系统的总物理内存。参数 端快速失败机制。 Broker 端快速失败其原理图如下: 消息发送者向 Broker 发送消息写入请求,Broker 端在接收到请求后会首先放入一 个队列中(SendThreadPoolQueue),默认容量为 10000。 Broker 会专门使用一个线程池(SendMessageExecutor)去从队列中获取任务并执 行消息写入请求,为了保证消息的顺序处理,该线程池默认线程个数为 1。 如果0 码力 | 165 页 | 12.53 MB | 1 年前3
共 5 条
- 1













