Apache RocketMQ 从入门到实战
版本后引入了多副本机制,即一个复制组(m-s)可以演变为基 于 raft 协议的复制组,复制组内部使用 raft 协议保证 broker 节点数据的强一致性,该部署 架构在金融行业用的比较多。 二、消息订阅模型 在 RocketMQ 的消息消费模式采用的是发布与订阅模式。 topic:一类消息的集合,消息发送者将一类消息发送到一个主题中,例如订单模块将 订单发送到 order_topic 中,而用户登录时,将登录事件发送到 rocketmq_offsets。 4. 消费模型 RocketMQ 提供了并发消费、顺序消费两种消费模型。 并发消费:对一个队列中消息,每一个消费者内部都会创建一个线程池,对队列中的消 息多线程处理,即偏移量大的消息比偏移量小的消息有可能先消费。 顺序消费:在某一项场景,例如 MySQL binlog 场景,需要消息按顺序进行消费。在 RocketMQ 中提供了基于队列的顺序消费模型,即尽管一个消费组中的消费者会创建一个 费者会创建一个 多线程,但针对同一个 Queue,会加锁。 温馨提示:并发消费模型中,消息消费失败默认会重试 16 次,每一次的间隔时间不一 样;而顺序消费,如果一条消息消费失败,则会一直消费,直到消费成功。故在顺序消费的 本文来自『中间件兴趣圈』公众号,仅作技术交流,未授权任何商业行为。 1.1 RocketMQ 核心概念扫盲篇 < 16 使用过程中,应用程序需要区分系统异常、业务异常,如果是不符合业务规则导致的异常,0 码力 | 165 页 | 12.53 MB | 1 年前3RocketMQ v3.2.4 开发指南
CORBA Notification 规范中,无此消费方式。 在 JMS 规范中,JMS point-to-point model 不乀类似,但是 RocketMQ 的集群消费功能大等亍 PTP 模型。 因为 RocketMQ 单个 Consumer Group 内的消费者类似亍 PTP,但是一个 Topic/Queue 可以被多个 Consumer Group 消费。 顺序消息 TOPIC_A TOPIC_B Producer Producer Consumer Consumer Consumer 图表 5-1 RocketMQ 是什么 是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。 Producer、Consumer、队列都可以分布式。 Producer 吐一些队列轮流収送消息,队列集合称为 Topic,Consumer 建立长连接,丏定时吐 Master、Slave 収送心跳。Consumer 既可以从 Master 订阅消息,也可以从 Slave 订阅消息,订阅规则由 Broker 配置决定。 5.3 RocketMQ 逻辑部署结构 Broker集群 Producer Group A P1 P2 P3 Producer Group B P1 P2 P3 Consumer Group B C1 C20 码力 | 52 页 | 1.61 MB | 1 年前3消息中间件RocketMQ原理解析 - 斩秋
DefaultMessageStore 加消息写入 commitlog 2.2 分布式事物消息落地 2.2.1 消息落地 commitLog 针对事物消息的处理,消息的第 20 位开始的八位记录是的消息在逻辑队列 中的 queueoffset, 但是针对事物消息为 preparedType 和 rollbackType 的存储的是事物状态 表的索引偏移量 2.2.2 分发事物消息: 分发消息位置信息到 方式:rocketmq 已经提供了很全面的实现, consumer 通过长轮询拉取消息后回调 MessageListener 接口实现完成消费, 应用系统只要 MessageListener 完成业务逻辑即可 2. Pull 方式:完全由业务系统去控制,定时拉取消息,指定队列消费等等, 当然这里需要 业务系统去根据自己的业务需求去实现 下面介绍默认以 push 方式为主, 因为绝大多数是由 二:消息存储 Rocketmq 的消息的存储是由 consume queue 和 commitLog 配合完成的 1) consume queue 消息的逻辑队列,相当于字典的目录用来指定消息在消息的真正的物理 文件 commitLog 上的位置, 每个 topic 下的每个 queue 都有一个对应的 consumequeue 文件。 文件地址:${user0 码力 | 57 页 | 2.39 MB | 1 年前3基于Apache APISIX 与RocketMQ 构建云原生一体化架构
Overlay/Underlay NVMe 普通云盘 ESSD 云盘 SA TA 独占/混部/独立交付…… • 集群节点异常成为常态 • 依赖服务随时可能在进行迁移或重启 • 对弹性的要求开始从物理资源变为逻辑资源 • IaaS 的多样性对应用交付部署提出了更高要求 • 可运维性、可观测性带来了更大挑战 • 多租环境带来了更高的网络及安全隔离要求 • 无限资源 vs 有限成本 • 冗长的请求链路,膨胀的技术栈 可观测性能力云原生化,OpenTelemetry 标准化 • Kubernetes 一键式部署扩容交付 W r i t e h e r e S o m e t h i n g Ab o u t 全新 POP 消费模型 服务端负载均衡 消除 Consumer 与 Queue 的 Binding 关 系,一个 Queue 可以由多个消费者消费 无 rebalance ,降低消费延迟概率 集群中某些消费端假死不影响整体消费进度 容量调整时,不能产生数据迁移,且要在秒级完成 固定分区使用场景 • 任务计算过程中,会将同一个业务类型的数据发到同一个队列 • Binlog 等数据同步过程中,需要保证严格顺序 RAFT 存储支持:自动主从切换,强一致性保证 逻辑队列:秒级无损弹性扩缩,无数据复制,流量精准调度 消息与流融合索引支持 核心问题 • 消息体小且存储结构面向单 条消息,导致提升吞吐困难 • 在进行状态存储时,无 KV 语义支撑 挑战0 码力 | 22 页 | 2.26 MB | 1 年前3王强-Apache RocketMQ事务消息
storage separating architecture� 典型应⽤用场景 ⾦金金融交易易 电⼦子商务 智能制造 分布式事务 异步解耦 IoT/IIoT 决策分析 实时计算 概念模型 Broker A Producer A Topic A Broker B Topic B ConsumerGroupA ConsumerGroupB Consumer 1 Consumer Producer B Consumer 1 Consumer 2 MessageQueue1 MessageQueue2 MessageQueue1 MessageQueue2 部署模型 组件细节 Broker Netty RemotingServer Netty Remoting Client NameServer All Info In Memory except KV0 码力 | 34 页 | 6.17 MB | 1 年前3Apache RocketMQ on Amazon Web Services
Network Configuration 网络配置 1 Availability Zones AvailabilityZones 必填项 ⼦网可用区的列表。 您指定的 逻辑顺序会被保留。此部署使用 Page 8 of 18 2 个或 3 个可用区。完 成选择 后,请确保“可用区数量”参数 与 您此处的选择是一致的。 2 Number0 码力 | 18 页 | 1.55 MB | 1 年前3快速部署高可用的Apache RocketMQ 集群 - Amazon S3
Network Configuration 网络配置 1 Availability Zones AvailabilityZones 必填项 ⼦⽹可⽤区的列表。 您指定的 逻辑顺序会被保留。此部署使⽤ 2 个或 3 个可⽤区。完 成选择 后,请确保“可⽤区数量”参数 与您此处的选择是⼀致的。 2 Number of Availability Zones0 码力 | 21 页 | 2.57 MB | 1 年前3Apache RocketMQ 介绍
现和路由功能,每个NameServer存有全量的路由信息,提 对等的读写服务,支持快速扩缩容。 Broker负责消息存储,以Topic为纬度支持轻量级的队列,单机可以支撑上万队列规模,支持消息推 模型,具备多副本容错机制(2副本或3副本)、强大的削峰填谷以及上亿级消息堆积能力,同时可严 保证消息的有序性。除此之外,Broker还提供了同城异地容灾能力,丰富的Metrics统计以及告警机 。这些都是传统消息系统无法比拟的。0 码力 | 5 页 | 375.48 KB | 1 年前3
共 8 条
- 1