乐趣区

关于2022招聘季:面试官RocketMQ是什么它有什么特性与使用场景

哈喽!大家好,我是小奇,一位酷爱分享的程序员
小奇打算以轻松风趣的对话形式来分享一些技术,如果你感觉通过小奇的文章学到了货色,那就给小奇一个赞吧
文章继续更新,能够微信搜寻【小奇 JAVA 面试】第一工夫浏览,回复【材料】更有我为大家筹备的福利哟!回复【我的项目】有我为大家筹备的一些我的项目源码。

一、前言

作为一名 Java 程序员,RocketMQ 底层的一些原理是咱们 不用学会 就能够搬砖工作的一种技能点,然而小奇为什么还要讲一下呢?难道就是为了节约大家 1 分钟 的宝贵时间,一个人 1 分钟,50 万人就是 1 年,5000 万人就是100 年,赚了,小奇以一己之力胜利搞挂一个人(血赚)。

当然不是,并且小奇的文章也没有那么多人看,最多也就节约个 吧。

学习 RocketMQ 底层原理是因为 面试官要问啊!,所以咱们就要学,什么?不实用的你不学?那街坊小奇可要使劲学啦,到时候面试官只有小奇不要你。

至于你问为什么面试官要问 RocketMQ 底层原理呢,这个。。。我把这次机会留给你,下次你面试的时候面试官问:“讲一下 RocketMQ 底层原理”。你:“面试官你好,请问为什么你要问 RocketMQ 底层原理呢,你给我台电脑,我 五分钟 给你搭建好 图书管理系统 他不香吗,咱们键盘上见真章”。这时面试官就会通知你答案,你就能够把答案打在评论区,让小奇以及泛滥小伙伴一起晓得一下到底为什么要问?

二、面试

在一个晴朗的周日,我来到了一个生疏的园区(别问为什么是周日,问就是 997,不过为了填饱肚子的打工人,只能明知山有虎、偏差虎山行),坐在生疏的会议室,期待 HR 小姐姐去叫面试官,此时我的情绪和各位小伙伴一样五味杂陈,放心面试官问的会不会很难?问到我的常识盲区我该怎么办?一会自我介绍的时候要不要吹一下我和小奇的关系?

一位英俊潇洒,眼神犀利的面试官走了进来,看到他那犀利、好像能看穿所有的眼神,我在想要不然一会就不要 20k 了,要 8k 得了,这个面试官一看就不好糊弄啊,然而我想起来我来之前刚看了小奇的趣学编程系列,我曾经齐全学会了小奇的精华,我登时就来了底气,决定一会要 30k,不给就学小奇赖着不走(哈哈)

面试官:小奇是吧,带简历了吗?

我:没带,当初彩印两块一张,我简历五张,每次面试都要花费十块,我敌人说了还没工作就先让你掏钱的工作不要去。

面试官:。。。那你靠什么来驯服我,让我录用你

我:气质?

(此时面试官并没有叫保安,而是从门后拿出了恭候我多时的棍子,我霎时怂了)

我只好从我的双肩包中拿出了我上午从其余公司面试官手中 要回的简历,上午的情景是这样的。

上午的面试官:明天的面试就到这吧,回去等告诉吧!

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

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

我:半拉月了。。。

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

三、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 吧(此时面试官又拿起了他筹备好的棍子)

面试官:你要是不来就给我举荐一下,让他人来我这面试一下

我:你先好好学习一下 RocketMQ 吧,明天幸好只是我来了,如果是小奇的忠诚读者来了,你将会被虐的很惨的。(我将我的博客地址留给了面试官,转身留下了帅气的背影,而面试官落寞无神的呆呆的坐在那里,好像一个亿离他而去。。。)

四、总结

这里对于 RocketMQ 还没有整顿结束,文章前面继续更新,倡议珍藏。

文章中波及到的命令大家肯定要像我一样每个都敲几遍,只有在敲的过程中能力发现自己对命令是否真正的把握了。

如果感觉我的文章还不错的话就点个赞吧,另外能够微信搜寻【小奇 JAVA 面试】浏览更多的好文章,获取我为大家筹备的材料。回复【我的项目】更有开源我的项目继续更新分享给大家。

退出移动版