RocketMQ整个中间件可以分两块,一块是NameServer,保存注册上来的Broker地址信息,另一块是Broker,保存队列消息,直接与发送端或消费者通信。
NameServer是一个AP模型的架构。
关键代码?
Broker是一个CP模型的架构。
关键代码?
主要涉及3个物理文件
commit_log,单个文件1G大小,顺序写入,保持实际消息内容
consume_queue,保存消息ID和队列消息存储的offset地址
index_file,辅助队列消息轨迹搜索,文件内容?
RocketMQ作为消息中间件,主要提供两种消息发送,普通消息或事务消息。普通消息在应用上又可以细分为批量消息、顺序消息等。
同步消息发送
事务消息
半事务消息发送
本地事务消息回查
消息提交或回滚
消息消费
推模式
拉模式
如何控制消息消费的频率
高可用架构
延迟消息的实现
时间轮算法
如何保证消息不丢失
- 同步消息或事务发送
- Broker同步刷盘
- 消息消费手动ack
如果NameServer都宕机了,消息还能正常发送吗?
消息堆积怎么办?
待续