00:00
好,同学们,我们再战几个回合。好,那么接下来呢,进入到了我们的最后一章。消息中间件的高级特性和大厂常考重点,那实事求是的说哈,同学们。呃,基本上哈,现在呢,就是。越来越考的呢,就是一些大厂的一些工程经验哈,那么。随着业务的复杂和大场考题难度的加深。那么同学们啊,基本上。大家都会发现官网上的这些呢,都已经慢慢的不够了,因为实际工作当中啊哈,可能甚至需要你去改底层的源码,设计出符合自己公司业务的MQ,不过大家放心哈,轮到你做这个事,我至少认为是五年以后。OK,那么你现在呢,至少咱们就说少想远方,模糊的做好眼前清楚的,我们呢,先来看看哈,那么他的这些高级特性呢,包括官网上的很多呢,主要是用在这样这么些地方哈。
01:01
一个是特性,一个是如何使用当前这个,另外一个就是对于开发者,那么尤其这个特性哈,比方说我们学过的gdbc master,还有呢,可Han DB复制的共享的文件就是来自于这儿,那么带复制消息的存储,你看消费。端的这个特性。目的端的特性,然后呢,等等一系列消息分发策略,消息的特性,还有一些各个版本的新特性,怎么诞生的,可以这么讲哈。接下来将要讲的这些高级特性和大产的这些面试题息息相关。我发现啊。这些能够问得出这些大厂的这些高级面试,比方说阿里。P7P8,他们这些有五到八年,五到十年工作经验的这一批考官是最难应付的,非常厉害,那真的人家是学历资历能力,而且基本上呢,也是问的题目呢,非常有水平,可以这么讲。
02:02
几乎他们是会。参考官网,来看看这个产品有哪些特性去设计他们的业务,那么现在呢,我们呢,来看看你们的学长以及平时杨哥收集自己的用MQ的一些工作经验。常见。的一些高频的重难点。哎。那么呢,这几个题目呢,也是一环套一环哈,当然没有全部包含哈,我们先因为本节课呢,是什么啊。是MQ。那么我把MQ最主要的呢先拿出来,那如果还有一些呢,我们在面试题第三季的时候呢,我再给大家录制一些更高的,那么现在,但是这些不说,这些不高哈,这些呢也够你喝一壶的了。来吧,同学们先来看看第一个引入消息队列之后,该如何保证其高可用性。那同学们结合我们前面讲的。那么至少19花。
03:02
事物签收以及我们刚刚讲解过的per加。带复制的level DB存储的主通集群,那么都是这种高可用性的一些体现,那么你要打出这些维度,起码哈,你要改,人家面试官觉得你不是用单机版的MQ,你用的呢,是集群靠谱的。好,那么这个呢,由于我们前面已经详细的讲过过,那么下面先来看我们的第一个题目。一投地。好,那么这个问题是怎么来的,以及怎么产生的呢?来吧。首先我们先来看看官网上对于这个特性它的描写和描述来。不投币的背景哈,那么首先哈,我们就是没讲,我先问大家第一个问题,默认情况下,你们觉得这个生产者发送消息。消费者接受消息回答我是同步的还是异步的?思考一下好,哎哟,有些同学这道题目都答错,那是不是该打屁股啊?这不废话吗?大部分XMQ它的消息默认的是不是都是异步投送啊?我们是不是讲过三个特征啊?
04:13
煎熬一波啊。肖芳,OK,那不服气,来看一下嘛。好消息来说的话呢,对于MQ而言,发送消息在大多数默认的情况下都是什么异步模式啊,这么说听懂了吧?那么杨哥他默认就已经是异步的模式了,干嘛还要来这么一个什么意思啊?首先我们来看一下。这是官网的背景是吧,那么MQ支持投动消息的话,到这个里面呢,同步和异步两种模式都支持,那么这种模式呢,使得呢,有巨大的性能提升,在某些延迟率的一些情况下面,那么它是这样的哈。由于实际生产中哈,我们就这么想啊,同学们假设这是一个消息队列。
05:02
那么现在哈,你就把它当做一个游泳池啊,那么一个游泳池它分为一个什么。入水考,那么这个时候它又分为一个什么东东?出水口。这哎。这么说同学们能能理解,那么从杨哥这个画的这个管子而言的话,就变成什么。这边是不是生产的。入水口这边是消费者,出水口生产的是不是水流量要比这个大,那么也就是说对于某一些情况,对于一个慢消费者,那比如说啊同学们就以我们现在同学们提问,杨哥你好,我今天去面试了,我有十个问题要问问你,你帮我看一下,我去大哥你一次性一句话扔过来十个问题,那你说你问的快还是我答的快。你一个题目,我可能是不是需要反复的推敲,然后呢,来给你准备备课,来给你讲,那么这个时候干嘛,我们呢,就这么干。对于我们这样的一个慢的消费者,使用同步发送的话,就可能会出现什么生产者堵塞,那么这个时候我们把慢消费者就适用于这样的异步发送,那么言下之意就是在加强配置使用一下,那么这个东东。
06:13
它是这样的,那么请同学们先老规矩做一下阅读理解。好,他的意思是这样哈,MQ呢,支持同同同步异步两种。那么这个模式的选择都会发送的延迟呢,就会有巨大的影响,那么我们的更进一步的压榨它的这个投递性能呢,那么我们使用异步投递就可以显著提高发送端的性能。那么MQ呢,默认是使用异步发送的,这个是大多数情况哈,就是你不设也是这样,但是有有两种情况它会同步,那么就是。使用同步发送的方式,直接说明我就是要用同步,我不用异步,因为都可以改嘛,或者在没有使用事物的前提下发送什么持久化的消息,那么这个时候是干嘛呢?如果你没有使用事物,并且发送了持久,就是非事物,但是却要有持久,本身你就没有用事物,你就没有办法确保,那么这个时候你还要是一个持久化消息,这个时候呢,每一次的发送。
07:12
都会是同步的,且会阻塞product到broker之间,要它返回一个确认的消息,表示消息已经被安全持久化到磁盘,比方说同步到你的这个可看DB。那么确认机制啊,提供了消息的安全保证,但必然会带来阻塞客户听懂,那么所以说在很多高性能的应用,就是允许在失败的情况下有少量的数据丢失,那么开玩笑的说句,假设你做一个砸金蛋,可能就是抢红包,100个人来抢这个红包,可能只能有95个人抢到,允许有少量的数据,就是大家在微信抢红包的时候,是不是出现过这种情况?干嘛呢,一点开这个红包就被人抢完了,可是你那个点你也算是一个发送,我要去抢啊,也是个消息,那么不好意思啊,干嘛我们就不管你了,那么我们允许少量的数据丢失,我们可以用一步来持久化,呃,那个来一步来发送持久化的消息,那么好。
08:13
它可以最大化的在生产侧的发送效率,通常在发送消息量比较密集的情况下,我们就可以使用异步发送,你想嘛,比较密集就是哎呀大哥,我们不能在这卡着等你,你又处理的比较慢,丢给你我们就不管了,听到我们可以很大的提升,那么不过这样也会带来问题干嘛?首先。你怎么就确认就一定丢给我,就确认我收到呢。这是第一点,第二个我们呢,要消耗比较多的broker的性能,那么积压在这儿是不是就多了,你丢过来100个问题后才处理了一个,那么那99个是不是积压在这儿,将会产产生消息的积压,你倒是投的快了,听懂了吧,但是我本身就是个慢消费。好,那么此外它不能有效的确保消息的发送成功,好,我们在设置,待会儿我们会说这个设置啊,这是官网上推荐的一个,是否使用一不投递用处的情况下,我们要忍忍消息的丢失啊,还有不能有效地确保消息的发送成功,你倒是投的快了,但是第一个。
09:15
投的快,消息积压,第二个不能确保消息的发送成功,那么待会儿他马上就会追问。如果你要保证生产端。投的快。怎么开启第二个怎么确保?一就要反过来问你怎么确保消息发送成功,那么我们追加来提问,好,那么请看面试题。他是这么干的,那么假设你要这么干,它有三种方法可以开启生产侧的这个使用什么异步投送。A size。Send,那么第一种干嘛,就是在我们的比方说在这哈,呃,那么现在哈,我们把它改回这些,这个TCP这样的一些,我们不用这个异步了哈,那么。TCP,那么192.168.111.136冒号61616。
10:06
OK,那么这个时候的话呢,我们集群的话呢,这个呢。干嘛呢,就做个零二好吧,那么这两行呢,拷过去,那么对于我们消费者也这么回事,因为集群太慢了哈,我们这个的话呢,我就把它改回来简单版的好,那么接下来同学们,我们杨哥这个机器现在做的case越来越多,我怕拖慢了哈,我们恢复成简单,那么在这我们说过屁股后面是不是可以加K等于V这样的参数啊,那么一样。根据官网,那么它的配置呢,有这三种我们抓下来,那么比方说这个时候你就可以,你这么第一种我要开始岂能一步投递,那么第一种那么干什么呢?我们呢。给这个值,像这样TCP,那么你看接面S点是否使用一步投递主动开启,错,这是第一种开启方法,这么说同学们能理解,就是在这儿,你这个。干嘛?
11:00
有点类似于这个尿这个。Activity connection factory的时候,一开始我们就开启这个,这是第一种开启方法,那么第二种干嘛呢?在connection factory这用set use证一个。开启,第三种也是在connection这用set这么难来开启,那么换句话说的话呢,也就是说上面这个第一种是挂参数,第二种是在这一块的connection factory这开启,第三种是在这开启,注意谁才有active MQ connection factory听懂,那么所以说一定要用这个。那么在这儿如果你有connection的话,要干什么呀?是不是要做对connection,你看他说两个对象可以用嘛,一个是connection function,一个是active MQ的connection,那么我们在这这个connection是不是没有用这个activemq,这就要多一步强制类型转换,所以说我们在这干嘛呢?用这个点set use投异步投递,那么在这错如果是一个要求投的比较快,且允许消息可以丢失的情况下,容许少量啊,那么那边是个慢消费,这样的一个情况下,你们就开启这个性能会有提升,好那么这个是我们相关的一个配置,那么这个呢,很简单,就开启这么一个参数,但是这个参数啊。
12:25
是set use。一步投递,那为什么要开启中间这些前因后果,那么你要跟面试官能够说一下,那么答案就是在这儿,那么接下来,那么这道题呢,还有它的一道子题,那么好,那么干脆我先把这个先给大家录一下。
我来说两句