RocketMQ原理解读

RocketMQ整个中间件可以分两块,一块是NameServer,保存注册上来的Broker地址信息,另一块是Broker,保存队列消息,直接与发送端或消费者通信。

NameServer是一个AP模型的架构。
关键代码?

Broker是一个CP模型的架构。

关键代码?

主要涉及3个物理文件
commit_log,单个文件1G大小,顺序写入,保持实际消息内容
consume_queue,保存消息ID和队列消息存储的offset地址
index_file,辅助队列消息轨迹搜索,文件内容?

RocketMQ作为消息中间件,主要提供两种消息发送,普通消息或事务消息。普通消息在应用上又可以细分为批量消息、顺序消息等。

同步消息发送

事务消息

半事务消息发送
本地事务消息回查
消息提交或回滚

消息消费

推模式
拉模式

如何控制消息消费的频率

高可用架构

延迟消息的实现

时间轮算法

如何保证消息不丢失

  1. 同步消息或事务发送
  2. Broker同步刷盘
  3. 消息消费手动ack

如果NameServer都宕机了,消息还能正常发送吗?

消息堆积怎么办?

待续