rocketmq知识脑图
2020-06-22 11:46:01 5 举报
AI智能生成
rocketmq面试脑图
作者其他创作
大纲/内容
重复消费产生原因
生产者生产消息,mq确认消息未送达
消费这消费消息,消费成功消息费送达
消费者挂掉,reblance
消息清理
清理 凌晨四点 deleteWhen 或到达磁盘清理阈值
文件保留72h
nameserver
无状态
消费者
pullInterval 设置拉去时间间隔
broker 和 nameserver
broker 与所有的nameserver 长连接
生产者和nameserver
生产者和broker
- 心跳 30s heartbeatBrokerInterval; broker每隔10秒钟(此时间无法更改),扫描所有还存活的连接,若某个连接2分钟内(当前时间与最后更新时间差值超过2分钟,此时间无法更改)没有发送心跳数据,则关闭连接。
消费者和nameserver
单个消费者和一台nameserver保持长连接,定时查询topic配置信息,如果该nameserver挂掉,消费者会自动连接下一个nameserver,直到有可用连接为止,并能自动重连。
默认情况下,消费者每隔30秒从nameserver获取所有topic的最新队列情况,这意味着某个broker如果宕机,客户端最多要30秒才能感知。该时间由DefaultMQPushConsumer的pollNameServerInteval参数决定,可手动配置。
消费者和broker
单个消费者和该消费者关联的所有broker保持长连接。
心跳默认情况下,消费者每隔30秒向所有broker发送心跳,该时间由DefaultMQPushConsumer的heartbeatBrokerInterval参数决定,可手动配置。broker每隔10秒钟(此时间无法更改),扫描所有还存活的连接,若某个连接2分钟内(当前时间与最后更新时间差值超过2分钟,此时间无法更改)没有发送心跳数据,则关闭连接,并向该消费者分组的所有消费者发出通知,分组内消费者重新分配队列继续消费
消费者挂掉;心跳超时导致broker主动关闭连接; 旦连接断开,broker会立即感知到,并向该消费者分组的所有消费者发出通知,分组内消费者重新分配队列继续消费
Rocketmq
消息分类
同步消息: send
异步消息: SendCallback
单项消息: sendOneWAY
延时消息:message.setDelayLevel()
批量消息:<4M
Topic 和 tag
Topic
通过不同topic 对不同业务进行分类
Tag
区分某一个Topic
消息过滤
ROcketmq Console
消费方式
广播(MessageModel.BROADCASTING)
消息存储
存储介质
文件系统:高性能
顺序写, 零拷贝,跳过用户态
刷盘机制
同步刷盘: 消息刷盘成功后返回生产者
异步刷盘: 消息内存中返回producer
Mysql:高可靠
高可用
nameserver: 无状态
broker: 上报状态
主从复制
同步复制
异步复制
负载均衡
producer
consumer
集群模式(消费者均摊消息) 分摊每一条quee
广播模式: 不会负载均衡
消息重试
死信队列
有效期也是3天
收藏
收藏
0 条评论
下一页