RocketMQ底层原理
2021-02-22 10:23:27 30 举报
AI智能生成
RocketMQ底层原理
作者其他创作
大纲/内容
Producer底层原理
MessageQueue是什么<br>
MessageQueue如何分散在Broker上<br>
写入消息时如何选择MessageQueue<br>
Broker故障时的容错处理机制<br>
Broker数据存储机制<br>
为什么Broker数据存储机制是最重要的
CommitLog数据存储机制<br>
ConsumerQueue消息Offset存储机制<br>
CommitLog写入性能优化<br>
文件顺序追加写入<br>
基于os cache写入<br>
os后台线程异步刷盘<br>
异步刷盘策略<br>
高吞吐+丢失数据<br>
同步刷盘策略<br>
低吞吐+不丢失数据
Broker高可用主从架构
基于Dledger管理CommitLog<br>
一组Broker启动时选举Leader<br>
Dledger基于Raft协议选举
Raft协议的随机休眠机制<br>
Leader可以写入,follower不能写入<br>
leader写入之后进行数据同步<br>
uncommited消息同步给follower<br>
过半follower返回ack即可返回<br>
Dledger在本地执行commit<br>
Dledger将commit消息发送给follower<br>
Leader崩溃之后<br>
剩余follower重新选举leader
Leader自动热切换<br>
Leader自动完成数据恢复<br>
新leader继续执行写入
Consumer底层原理<br>
一条消息如何分配给不同的消费组<br>
消费组内部如何分配消息:集群模式 vs 广播模式<br>
MessageQueue如何分配给多台机器消费<br>
如何拉取消息:Pull模式 vs Push 模式<br>
Broker如何读取消息返回给消费者<br>
基于ConsumerQueue读取消息offset<br>
从CommitLog中读取消息数据<br>
消费者处理消息
回调我们注册的监听函数来处理<br>
提交消息处理进度<br>
Broker存储ConsumerQueue Offset<br>
消费组内的重平衡<br>
消费组内机器宕机
消费组进行机器的扩容
Broker读写分离架构原理<br>
ConsumerQueue基于os cache实现读取优化<br>
CommitLog基于os cache + 磁盘一起读取<br>
CommitLog基于os cache实现写入优化<br>
CommitLog什么时候从os cache读取?什么时候从磁盘里读<br>
Master Broker什么时候指示从Slave Broker读取<br>
0 条评论
下一页