没有合适的资源?快使用搜索试试~ 我知道了~
RocketMQ面试中常见的问题及答案详解.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 166 浏览量
2022-07-10
10:15:27
上传
评论
收藏 32KB DOCX 举报
温馨提示
试读
14页
java开发,面向互联网集群化功能丰富,对在线业务的响应时延做了很多的优化,大多数情况下可以做到毫秒级的响应,每秒钟大概能处理几十万条消息。
资源推荐
资源详情
资源评论
1、多个 mq 如何选型?
MQ
描述
RabbitMQ
erlang 开发,对消息堆积的支持并不好,当大量消息积压的时候,会导致
RabbitMQ 的性能急剧下降。每秒钟可以处理几万到十几万条消息。
RocketMQ
java 开发,面向互联网集群化功能丰富,对在线业务的响应时延做了很多的优化,
大多数情况下可以做到毫秒级的响应,每秒钟大概能处理几十万条消息。
Kafka
Scala 开发,面向日志功能丰富,性能最高。当你的业务场景中,每秒钟消息数
量没有那么多的时候,Kafka 的时延反而会比较高。所以,Kafka 不太适合在线
业务场景。
ActiveMQ
java 开发,简单,稳定,性能不如前面三个。小型系统用也 ok,但是不推荐。
推荐用互联网主流的。
2、为什么要使用 MQ?
因为项目比较大,做了分布式系统,所有远程服务调用请求都是 同步执行 经常
出问题,所以引入了 mq
作用
描述
解耦
系统耦合度降低,没有强依赖关系
异步
不需要同步执行的远程调用可以有效提高响应时间
削峰
请求达到峰值后,后端 service 还可以保持固定消费速率消费,不会被压垮
3、RocketMQ 由哪些角色组成,每个角色作用和特点是
什么?
角色
作用
Nameserver
无状态,动态列表;这也是和 zookeeper 的重要区别之一。zookeeper 是有状
态的。
Producer
消息生产者,负责发消息到 Broker。
Broker
就是 MQ 本身,负责收发消息、持久化消息等。
Consumer
消息消费者,负责从 Broker 上拉取消息进行消费,消费完进行 ack。
4、RocketMQ 中的 Topic 和 JMS 的 queue 有什么区
别?
queue 就是来源于数据结构的 FIFO 队列。而 Topic 是个抽象的概念,每个 Topic
底层对应 N 个 queue,而数据也真实存在 queue 上的。
5、RocketMQ Broker 中的消息被消费后会立即删除
吗?
不会,每条消息都会持久化到 CommitLog 中,每个 Consumer 连接到 Broker
后会维持消费进度信息,当有消息消费后只是当前 Consumer 的消费进度
(CommitLog 的 offset)更新了。
追问:那么消息会堆积吗?什么时候清理过期消息?
4.6 版本默认 48 小时后会删除不再使用的 CommitLog 文件
� 检查这个文件最后访问时间
� 判断是否大于过期时间
� 指定时间删除,默认凌晨 4 点
源码如下:
/**
* {@link org.apache.rocketmq.store.DefaultMessageStore.CleanCommitLogService#is
TimeToDelete()}
*/
private boolean isTimeToDelete() {
// when = "04";
String when = DefaultMessageStore.this.getMessageStoreConfig().getDeleteWhen(
);
// 是 04 点,就返回 true
if (UtilAll.isItTimeToDo(when)) {
return true;
}
// 不是 04 点,返回 false
return false;
}
/**
* {@link org.apache.rocketmq.store.DefaultMessageStore.CleanCommitLogService#de
leteExpiredFiles()}
*/
private void deleteExpiredFiles() {
// isTimeToDelete()这个方法是判断是不是凌晨四点,是的话就执行删除逻辑。
if (isTimeToDelete()) {
// 默认是 72,但是 broker 配置文件默认改成了 48,所以新版本都是 48。
long fileReservedTime = 48 * 60 * 60 * 1000;
deleteCount = DefaultMessageStore.this.commitLog.deleteExpiredFile(72 * 60
* 60 * 1000, xx, xx, xx);
}
}
/**
* {@link org.apache.rocketmq.store.CommitLog#deleteExpiredFile()}
*/
public int deleteExpiredFile(xxx) {
// 这个方法的主逻辑就是遍历查找最后更改时间+过期时间,小于当前系统时间的话就删了(也
就是小于 48 小时)。
return this.mappedFileQueue.deleteExpiredFileByTime(72 * 60 * 60 * 1000, xx, xx,
xx);
}
7、RocketMQ 消费模式有几种?
消费模型由 Consumer 决定,消费维度为 Topic。
剩余13页未读,继续阅读
资源评论
小兔子平安
- 粉丝: 209
- 资源: 1940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
- python中matplotlib教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功