RocketMQ 集群运维

共 20 题
#

1. Broker 主从同步中 SYNC_MASTER/ASYNC_MASTER、同步双写与异步复制的数据安全边界

A 复制模式与刷盘策略无关,无需组合考虑
B ASYNC_MASTER 模式下主节点宕机一定不丢数据
C SYNC_MASTER 需要 Slave 确认写入后才返回给生产者 ✓ 正确答案
D SYNC_MASTER 吞吐一定高于 ASYNC_MASTER
#

2. RocketMQ 架构组件中 NameServer、Broker(Master/Slave)、Producer/Consumer 的职责与部署形态

A NameServer 是无状态的路由中心,负责 Broker 注册与路由发现 ✓ 正确答案
B NameServer 参与消息存储,故障会导致数据丢失
C Broker 只负责转发,不存储消息
D Producer 直接写消息到任意 Broker,无需路由
#

3. 消息可靠性中发送重试、刷盘策略(SYNC_FLUSH/ASYNC_FLUSH)、消费重试与死信队列(DLQ)机制

A SYNC_FLUSH 性能总是高于 ASYNC_FLUSH
B 消费多次重试仍失败的消息会进入死信队列(DLQ) ✓ 正确答案
C 发送失败后 RocketMQ 不会自动重试
D 死信队列中的消息无需处理
#

4. NameServer 运维中无状态设计、Broker 注册与路由发现、故障影响与脑裂防护

A Broker 向 NameServer 注册后无需心跳
B NameServer 之间共享数据,一台故障全部失效
C NameServer 是无状态的,NameServer 故障不影响已建立的消息收发 ✓ 正确答案
D NameServer 参与消息存储
#

5. 事务消息中半消息、事务回查与本地事务表机制以及未决事务如何监控与处理

A 事务回查只用于同步,不兜底
B 半消息直接投递给消费者
C 半消息对消费者不可见,本地事务提交后再 commit 使消息可见 ✓ 正确答案
D 本地事务表与回查无关
#

6. 存储结构中 commitlog/consumequeue/index 文件、文件保留策略与容量规划

A 文件保留只按大小,不按时间
B consumequeue 直接存储消息内容
C commitlog 是随机写,性能较低
D 所有消息顺序写入全局 commitlog,consumequeue 记录逻辑偏移 ✓ 正确答案
#

7. 常见故障排障中刷盘慢、page cache 压力、Broker 假死、路由不一致的定位

A Broker 假死指进程存活但无响应,需结合 GC 日志与线程 dump 定位 ✓ 正确答案
B 刷盘慢与磁盘 IO 无关,只需调大 JVM
C page cache 压力不影响读写性能
D 路由不一致只与客户端有关,与 NameServer 无关
#

8. 延迟/定时消息中延迟级别、时间轮实现与运维限制(延迟上限、存储成本)

A 延迟消息通过固定延迟级别实现,消费时间到后投递 ✓ 正确答案
B 延迟级别可以任意设置任意秒数,不设上限
C 延迟消息在 Broker 中暂存不占用额外存储
D 时间轮调度复杂度与延迟级别数量成正比
#

9. 消息堆积治理中消费 lag 监控、消费端扩容、队列再平衡与消费限流

A lag 只反映生产速率,与消费无关
B 增加消费者实例不会改变队列分配
C 集群消费模式下增加消费者实例,RocketMQ 会在组内自动再平衡队列 ✓ 正确答案
D 队列数无法扩容
#

10. 监控与告警中 Broker 吞吐、堆积量、发送失败率、主从同步延迟的指标建设

A 磁盘使用率无需监控
B 发送失败率与数据安全无关
C 堆积量只反映单条消息,无需监控
D 主从同步延迟反映 Master 与 Slave 的 offset 差,是数据安全的关键指标 ✓ 正确答案
#

11. 集群扩缩容中 Broker 增减、Topic 队列扩缩、流量迁移与优雅下线

A 优雅下线直接 kill 进程即可
B 增加队列数不影响任何消费行为
C 下线 Broker 无需迁移数据
D Broker 下线前需确认无消费依赖并保证主从 OK,避免丢消息 ✓ 正确答案
#

12. 顺序消息中全局/分区顺序(MessageQueueSelector)的实现与顺序消费故障处理

A 全局顺序与分区顺序实现完全相同
B 顺序消息消费失败会自动跳过继续下一条
C MessageQueueSelector 将同一 key 的消息路由到同一队列,消费端单线程按序消费 ✓ 正确答案
D 顺序消费不受失败影响
#

13. 集群消费与广播消费中两种消费模式的语义差异、适用场景与运维上的坑(广播模式下的堆积与重置)?

A 广播消费模式下实例间会分摊消息
B 集群消费一条消息只被组内一个实例消费,广播消费每个实例都消费 ✓ 正确答案
C 广播模式消费进度按组统一管理
D 集群消费每个实例都消费同一条消息
#

14. 消息过滤中 Tag 过滤与 SQL92 属性过滤的实现位置与性能差异以及如何使用属性过滤避免 Tag 爆炸?

A Tag 爆炸不影响性能与管理
B SQL92 过滤比 Tag 过滤性能更高
C Tag 过滤支持任意复杂表达式
D Tag 过滤在 Broker 分发时进行,性能高;SQL92 过滤基于属性表达式,更灵活但开销大 ✓ 正确答案
#

15. 消费幂等中消息重投与重复消费的必然性以及去重表/业务状态机等幂等方案的实现要点?

A 业务状态机无法用于幂等
B 去重表方案无需考虑原子性
C RocketMQ 是 at-least-once 语义,重复消费不可避免,消费端需保证幂等 ✓ 正确答案
D 幂等只需保证每次消费都执行
#

16. 4.x 到 5.x 迁移中 Broker 职责拆分、gRPC 协议与 Proxy 层引入后的部署差异与兼容性?

A 5.x 引入 Proxy 层与 gRPC 协议,同时兼容旧版 Remoting 协议 ✓ 正确答案
B 5.x 客户端无法访问 4.x Broker
C 5.x 完全移除 Broker 存储职责
D 5.x 必须使用 Proxy,无直连方式
#

17. 与 Kafka 的对比与迁移中消费/存储模型差异、迁移工具与双跑验证

A 双跑只验证消息数,无需校验内容
B 两者存储模型完全相同
C 迁移无需对账,直接切换即可
D Kafka 以分区为单位存储,RocketMQ 以全局 commitlog 存储,模型差异导致迁移需处理对齐 ✓ 正确答案
#

18. 多副本与容灾中 Dledger(Raft)模式、跨机房复制与主从切换

A Dledger 不支持跨机房部署
B Dledger 仍需人工指定主从
C Dledger 只需 leader 确认即可返回
D Dledger 通过 Raft 协议实现多副本,leader 故障时自动选举新 leader ✓ 正确答案
#

19. 安全与运维工具中 ACL、消息轨迹(trace)、消息查询与回放的使用

A 消息回放与对账无关
B ACL 只能控制存储,不能控制读写
C 消息查询无法按 key 进行
D 消息轨迹(trace)收集发送、存储、消费各环节时间戳,用于排查消息去向 ✓ 正确答案
#

20. 性能与 JVM 调优中堆外内存、page cache 与刷盘策略的关系以及 Broker JVM 参数设置的要点?

A 刷盘策略与内存无关
B 堆越大 page cache 越多,性能越好
C JVM 堆不宜过大,需留出足够内存给 page cache,否则影响读写性能 ✓ 正确答案
D 堆外内存无需考虑