【奈学教育】| 公开课RocketMq学习笔记四 、RocketMq基本了解、高可用及高扩展解决方案剖析

一、RocketMq功能特性
1、支持事物型消息
2、支持延时消息
3、支持消息重发
4、支持consumer端tag过滤
5、支持消息回放
【奈学教育】| 公开课RocketMq学习笔记四 、RocketMq基本了解、高可用及高扩展解决方案剖析

二、RocketMq架构
1、Broker主从部署,自身信息注册在NameServer中
2、Client从NameServer中获取Broker信息
3、NameServer节点相互独立,无数据交互

【奈学教育】| 公开课RocketMq学习笔记四 、RocketMq基本了解、高可用及高扩展解决方案剖析

三、特性分析
1、可靠性分析
1)同步刷盘:性能低,可靠性高
2)异步刷盘:性能高,可靠性低
【奈学教育】| 公开课RocketMq学习笔记四 、RocketMq基本了解、高可用及高扩展解决方案剖析

2、可靠性分析
1)异步复制:多Master、多Slave模式-异步复制
2)同步双写:多Master、多Slave模式-同步双写

四、服务注册与发现
1、Broker 注册自身信息 => 服务注册
2、Procucer/Consumer 寻找Broker信息 => 服务发现
3、NameServer设计
【奈学教育】| 公开课RocketMq学习笔记四 、RocketMq基本了解、高可用及高扩展解决方案剖析

五、数据存储原理
1、CommitLog:存储消息主体
2、ConsumerQueue:消息消费队列
3、IndexFile:消息索引文件

【奈学教育】| 公开课RocketMq学习笔记四 、RocketMq基本了解、高可用及高扩展解决方案剖析

4、优化
1)CommitLog文件切分,默认1G
2) MMap提升文件访问性能
3)SSD

5、生产方式
1)同步(sync)
2) 异步(async)
3) 单向(oneway)

6、消费消息类型
1)PUSH :消息队列主动地将消息推送给消费者
消息实时性高,但没有考虑客户端的消费能力
2)PULL:由消费者客户端主动向消息队列去拉消息
消息实时性低,可能造成大量无效请求
3) RocketMq采用拉去模式 【LongPoll()使用一种长轮询机制】,来平衡上面push/pull模型的各自缺点

Consumer发送拉去消息
Broker hold住请求,直到有新消息再返回
请求超时,Consumer再次发起请求
请求超时时间默认30m

  1. 消费方式

集群消费:集群内部竞争消费,但条消息只消费一次,各节点均匀消费Topic的消息
广播消息:各集群消费全量的消息,单条消息在每个集群都会被消费一次

六、负载均衡
【奈学教育】| 公开课RocketMq学习笔记四 、RocketMq基本了解、高可用及高扩展解决方案剖析
1、Producer 端负载均衡
1)定时获取Queue信息
2)负载均衡算法:随机递增取模
3)容错机制:故障延迟

2)Consumer端负载均衡
1)客户端心跳上报数据
2)定时Rebalance20s
获取队列信息、获取消费者信息、排序平均分配

【奈学教育】| 公开课RocketMq学习笔记四 、RocketMq基本了解、高可用及高扩展解决方案剖析

客户端负载均衡
1)获取队列信息
2)获取消费者信息
3)排序平均分配
4)与上次结果比对
【奈学教育】| 公开课RocketMq学习笔记四 、RocketMq基本了解、高可用及高扩展解决方案剖析