面试官:RocketMQ是什么,它有什么特性与使用场景?,2024年最新阿里面试风波

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

我:面试官你好,如果贵公司不打算录取我的话,能不能把我的纸质简历还给我,我下午还有一家面试。

上午的面试官:我说你的简历怎么皱皱巴巴,原来你一直在循环利用啊!这个症状出现多久了?

我:半拉月了。。。

(当我把皱皱巴巴的简历交给面试官后,这场面试才得以继续进行。。。)

三、RocketMQ是什么

===========================================================================

面试官:我看你简历上写的精通RocketMQ?(哼,面试官轻蔑的一笑)

我:本来不想写精通的,但是同行们抬爱,非逼着写,但是也无可厚非,虽说没有到达炉火纯青,但是也差不多登峰造极了吧。

面试官:呵呵、那你先说一说RocketMQ是什么吧

我:RocketMQ是一个消息队列中间件,通过将消息放入队列中来实现解耦,削峰填谷等效果。

面试官:嗯,RocketMQ消息模型是什么样子的?

我:RocketMQ中主要有三部分组成,分别是消息生产端Producer、消息存储端Broker、和消息消费端Consumer。

在这里插入图片描述

面试官:嗯,RocketMQ有哪些消息发送模式呢?

1、基本模式

基本模式中我们生产者可以通过三种不同的方式发送消息,分别是同步发送、异步发送、单向发送,其中同步发送就是需要接收端响应接收到当前消息后才能再次发送消息,而单向发送是不需要等接收端响应接收到消息就可以再次发送的。

另外消费者消费消息也有两种模式,一种是消费者主动去Broker上拉取消息的拉模式,另一种是消费者等待Broker把消息推过来的推模式。

2、顺序消息发送模式

顺序模式就是保证消息发送到Broker的顺序和消费者从Broker中消费的时候顺序是有序的,那么如果只有一个Broker的话肯定是有序的,如果多个Broker就无法保证有序性,所以RocketMQ保证的是消息的局部有序,并不能保证全局有序。

在这里插入图片描述

3、广播消息发送模式

广播消息发送模式针对多个消费者来说并不是有一个消费者消费了消息,这个消息就没有了,而是每个消费者都会消费到这一条消息。就像我用大喇叭在村里广播说张寡妇王光棍的事情,我只说了一遍,但是村里的人都听到了,这就是广播模式。

如果不用广播模式,那么我找到刘婶跟她说了张寡妇和王光棍的事情,那么也只有刘婶她一个人知道(当然,刘婶知道了后面全村最晚一夜之间就全知道了)

在这里插入图片描述

4、延迟消息发送模式

延迟消息就是生产者发送消息后,消息并没有被及时的发送出去,而是等过了一段时间才发出去。

比如我上面跟刘婶说了一个八卦,我让她不外传,那她肯定做不到啊,我那只能要求她一个小时之内不允许外传,怎么也得给我预留一个小时让我逃跑啊

结果刘婶说一个小时她忍不住,最后协商她只能忍五分钟之内不说,那我也没什么好说的了,五分钟我能跑二里地了,总比没有时间强。

我还没来得及跑呢,就看到刘婶拦住了骑大梁自行车准备回家做饭的老林,老林从自行车上下来满是期待的表情问:“刘婶呀,什么事啊,这么神秘”。只见刘婶看了一眼自己手上镀金的小腕表来了一句:“再等我四分半钟,我给你说一个秘密”

我彻底服了,我们村不愧是人才村,个个都是人才。。。

在这里插入图片描述

5、批量消息发送模式

批量消息发送的意思就是将多条消息合并成一个消息,一次发送出去。这样的好处就可以减少网路IO的次数,提升了效率。

比如之前我在村里说八卦的时候,我见了刘婶

我说:“哎呀刘婶呀,你可不知道”。

刘婶:“我确实不知道呀,你啥都没说呀”。

我说:“就咱们村的张寡妇啊,可真行”。

刘婶:“张寡妇怎么了,哪里行,难道比我还。。。”。

我说:“还有咱村的王光棍,单身四十多年了,没想到还有这本事呢”。

刘婶:“啥本事啊,不是小奇你能一下说出来不,我快憋死了,快说到底啥事呀”。

我说:“就他俩在村东头苞米地里那啥”。

刘婶:“那啥呀”。

我说:“我先回去吃饭了啊,吃完饭我再回来跟你说剩下的”。

刘婶:“你这个兔崽子,你看我能让你吃饭吃安省不,吊我的胃口,你找死”。

明明可以一下说明白的事,我非要演上一部60集的电视连续剧,冯导听了都连连叫好啊。

6、过滤消息发送模式

在RocketMQ中我们可以使用Message的Tag属性来过滤信息,就是我们指定这个信息哪个消费者可以收到,那么它就可以收到,其他人收不到。

比如我发现村里的八卦了,我忍不住想让全村里的人知道,那我就在村里的微信群里发一下不就行了,但是张寡妇和王光棍也在微信群里呢,我这么一发他们不就知道是我说的嘛。

那我只好先将他们两个屏蔽了,然后把消息发出去,然后瞬间群里炸了锅,只有他两个人不知道发生了什么。

7、事务消息发送模式

事务消息是在分布式系统中保证最终一致性的两阶段提交的消息实现,他可以保证本地事务执行与消息发送两个操作的原子性。

这里保证的是生产者发送出去的消息与生产者本地存储的消息要一致,比如我们购买商品下单,我们来简单描述一下流程。

1、客户下单。

2、程序生成一条订单信息(这个时候还没有落库)

3、这个时候向快递服务发送了一条消息,让快递服务准备一下这条订单的货。

4、这个时候将生成的订单信息落到订单服务的数据库中

上面是一个正常的流程,但是如果订单信息落库的时候失败了呢。这个时候已经向快递服务发送了发快递的消息了,但是订单服务落库失败,没有这笔订单,那就是白白发了一个快递。回头对账对不上,领导宰了你的心都有了。

这个时候我们就需要进行一个事务的处理了,我们可以进行一个两阶段提交来保证事务。

在这里插入图片描述

面试官:小伙子真厉害啊,我这边没有什么要问的了,你还有什么问题要问(面试官两眼放光)

我:额。。。面试官我现在可以走了吗,我一会还有一个面试呢。

面试官:还面啥别的公司啊,就来我这吧,条件随便开

我:那就100k吧(此时面试官又拿起了他准备好的棍子)

总结

总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。

如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-PJrDNqUQ-1713559714955)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值