RocketMQ
2023-11-01 22:36:50 0 举报
AI智能生成
RocketMQ 消息队列设计要点源码解读
作者其他创作
大纲/内容
概念
定义
特性
多种消息类型
普通消息
顺序消息
定时/延时消息
事务
事务消息
消息堆积
回溯消费
消息轨迹
高可靠
高可靠
消息刷盘
同步刷盘
异步刷盘
消息复制
主-从同步复制
主-从异步复制
Leader 选举:Raft
At least Once 语意
容错
流控
消息重投
消费重试
死信队列
架构
NameServer:Topic 路由注册中心
Producer:消息发布者
BrokerServer:消息存储
Consumer:消息消费者
设计要点
消息存储
存储设计
文件组织
消息及元数据:CommitLog
消息存储格式
消费队列:ConsumeQueue
消费索引存储格式
索引:Index
Index 存储格式
运行时配置:Config
topics.json:topic配置属性
subscriptionGroup.json:消息消费组的配置信息
consumerOffset.json:集群消费模式下的消息消费进度
consumerFilter.json:主题消息过滤信息
delayOffset.json:延时消息队列拉取进度
异常退出标志:Abort
刷盘点:Checkpoint
Checkpoint 存储格式
内存映射
PageCache
预读取:文件顺序读取速度接近内存
组提交:pdflush内核线程异步刷盘
Zero-Copy(CPU)
普通文件读写
消除用户态 CPU copy:mmap
sendfile
彻底消除中间 context 切换
彻底消除CPU Copy
MappedFile 生命周期
初始化
初始化堆外内存池
内存预热
内存锁定
提交、刷盘
销毁
shutdown:基于引用计数
MappedFile 申请线程模型
刷盘机制
同步刷盘线程模型
异步刷盘线程模型
过期文件删除机制
恢复机制
正常退出恢复
异常退出恢复
CommitLog 写入
Message 数据格式
ConsumeQueue/Index 异步更新
ConsumeQueue 内存数据格式
Index 内存数据格式
延迟/定时机制
延迟级别设计
消息重投
Topic 路由机制
数据结构
topicQueueTable
brokerAddrTable
brokerLiveTable
clusterAddrTable
消息发送
路由查找
负载均衡
消息发送
事务消息:TCC + 补偿(超时、失败)
弹性设计
限流
熔断
降级
故障避让
消费消费
路由查找
订阅信息存储数据格式
消费进度存储数据格式
负载均衡
负载均衡算法
消息拉取
消息消费
并发控制
ACK
弹性设计
限流
熔断
降级
故障避让
主从重定向
集群
主从同步:基于 Master 压力自动切换
主从切换:Raft
0 条评论
下一页