00:00
好,那我们看一下这个消息队列,因为它无论是分布式的,还是基于发布订阅模式的,这个我们不管,我们先统一看一下消息队列能干什么用,对吧?啊,其实就是我刚才举的那个例子,咱们之间的一个通信,通过班主任这个例子。其实是一样的啊,在生产环境上也一样,那首先呢,在那个整个的通信,因为它是一个消息队列,传递消息的,而且是队列队列。这个数据结构有什么特点?先进多对吧,啊,一般的有这种顺序保证,一般的啊,会有这种顺序保证,他呢,他整个的,因为你要通信啊,那如果说没有这个消息队列的时候,两个人通信是不是要直连。A连B对吧,就类似于我们说的你起一个什么NC,服务端开了,是不是也要开一个客户端,而且两个同时保持在线的时候才能通现对吧,假如说你服务端开了,客户端没开,我在服务端这边发消息。
01:00
然后客户端能收到吗?收不到对吧?啊收不到是这个意思,那这个就是我们所说的一个同步处理和异步处理的一个过程啊,那第一个同步处理呢,就A系统要跟B系统进行通信的时候,假如说我们要注册。注册消息,你去填写消息,然后他就写入数据库对吧,写入数据库之后呢,调用发送短信的一个接口。是不是通知你注册成功了啊,恭喜你,然后告告诉你一个什么新的密码,你要记住对吧,等等这些东西,然后呢,他直连的啊,他直连的他要等待这个消息的一个什么。发送啊,等待发送等待,也就是说整个的一套啊。跟线程一条线走下来一样,是把它整个串起来的。把它串起来了,那大家能感觉到这种它并不。高效是不是啊,因为串起来了,那我们就可以用异步处理。用异步处理的这种方式,OK,那你看你填写中的消息,填写完了之后,他可以把发送短信的一个请求呢。写到消息队列里边啊,然后接着,因为你有可能当前这个消息系统这块比较忙,是不是啊比较忙那就等着,但是呢,给用户要干事啊。
02:11
反馈一个响应啊,因为你用户接收不到短信,你不一定认为是系统啊繁忙,有可能你觉得你信号不好呢。对吧,有可能接收不到吧,啊没必要非得说接收不到,非得把这个短信发送出去之后才给什么用户去反馈,诶你注册成功了啊,你注册成功了,那这里面涉及到两个概念,一个叫同步,一个叫异步,其实大家也比较理解。理解这两个事情嘛,理解对吧,就是相当于假如说你要去,嗯,怎么说呢,修一块手表吧,修一块手表那同步的这怎么修的。手表给他对吧,在那坐着。对吧,就跟就跟理发一样,对吧,你必须是同步的了。
03:00
你不能像电影里边说把头放那,然后里边就办个事,然后回来把头取一下,对吧,这就不靠谱了,对吧?但是修手表不一样,就是理发,然后理发是同步的,对吧?你必须在那等着对吧?这个事儿你必须等着,但是我修手表都不一定。因为销售量有时候比较慢,是不是?啊,有的时候比较慢,那你等着也不靠谱,你有其他的事情,你有其他的事情,那你就可以。该干其他事干其他事对吧,约定个时间说大概这个表呢,两天后你在下午五点的时候来取一下对吧,然后你从去了,诶修好了,直接把表就拿走了啊,其他的事也不耽误对吧,这就同步跟异步,那这个异步呢,就是说在。刚才我们所说的是我们生产生活环境当中的了啊,其实那个人呢,在帮你干这个事儿啊,另外一个人帮你干这个事儿,但是如果对于整个的一个。互联网系统当中啊,这种通讯当中,那就要用到我们一个消息序列来做这个事。啊,你先把消息放在这里边缓存着,然后呢我去取啊,然后呢我去取好,那大家感觉到这种有什么好处啊。
04:09
咱分析一下有什么好处,对解偶之前我就提到这个点,对吧?啊做到了一个解偶,因为我当前假如说这个修手表的这个店呢,他不一定非得送过去,假如说它是一个比较高端的一个店,你只要把表放在那。他自己有人要取对吧,取完之后呢,他给你拿过来啊,给你拿过来这样的一个东西啊,那结果他不需要两个人同时在线嘛,啊不需要两个人同时在线,那除了这个还有呢。那我更多的系统里边的时候,可能更多的时候我就是AB2个客户端都在线啊,我两个人就要通信。那还有什么好处呢?他可以对你其实你们俩说的一样的,一个叫一个说的是缓解服务端的一个压力,一个是说发的快收的慢。
05:07
如果说发的快收的慢,其实也就是我们所说的,你这个服务器里边可能收不了是不是。服务器容易崩,那我提前给他缓下来啊,做一个中间的缓冲,其实这个缓冲呢,呃,缓加另外一个名词叫区风。就是你正常的发消息到高峰期不是一个。高峰嘛,对吧,那这块呢,那到这个点的时候,可能是那个服务器扛不住的那个点。是不是有可能啊,因为你你这个每秒的一个QPS太高了,QPS那你这块说不了。你先不直连啊,不直接去连服务器,先把它放在哪了。消息队列里边,那你接下来总有一个会怎么做?你总有一刻,你这个不是高峰,你不能一直处于这个防控期段,你的整个的系统从每天从早到晚,从凌晨零点开始到。
06:05
少点对吧,一直都这样,那不可能吧,对吧?啊那对那那你如果说你这种情况只能加机器了。对吧,如果说真的一直处于这种高峰期,不是说消息队列能解决的对吧,因为你放在消息队列里边,总要有服务器去处理吧,但是你一直处于比它高,那消息队列最后也也会承报啊,消息队列它也有自己的一个大小的,对吧,就类似于我们之前所说的China这个东西作为缓冲的,它也有个大小的啊,你要在一定时间内,你要给我拿走,对吧?啊,同样道理,这是第二个削风啊,削风啊,结尾削风,这个其实就是它最主要的一个作用啊,最主要的一个作用,这两个,这两个内容啊,这两个内容,OK,这是我们所说的MQ呢,整个的一个。应用的一个场景,然后我们看一下使用这个消息类的一个好处,其实刚才我们说的一个点,第一个叫接。交接好两边的处理过程呢,你不需要保证两个消息互传的时候啊,同时在线啊,你中间有一个消息类,那我有消息来了,他往这里边扔,然后我什么时候想取了,我自己来取一下吧,啊自己来取一下做了一个结入第二个叫可恢复性。
07:16
来看一下,呃,它指的什么意思呢?是系统的一部分组件失效的时候。不会影响到一个整个消息统。就是其实跟结果是不是一样的,因为你有结果的前提,你不需要AB2个通信的系统同时在线,假如说你在通讯过程当中,B挂网,我有消息队列,是不是先写到消息队列里面,等我B系统起来之后,我B系统自己去拿这个消息,对吧?讲的这个事啊,可恢复性啊,可恢复性第三个缓冲。缓冲,你得解决两边速度不一致的问题,对吧,更多的主要的解决是哪边的问题。生产大鱼。消费啊,生产大于消费,更多的是处理这种问题。因为如果说。
08:04
你用户这边你用户比较少,一天呢也没有三五个人访问,然后你服务器呢,是一个1000台的集群。对吧,这个其实要不要小一对这样也无所谓了。对吧,啊也无所谓了,因为你直连绝对能处理过来了啊,这个也处理过了,所以呢,更多的解决的是生产速度和消费速度不一致啊,而且更多的呢,是生产大于消费。对吧,中间呢,做一个缓冲啊,做一个缓冲好,那接下来就。灵活性或者说异步异步通信啊,其实整个MQ的一个IP方面,那我们大家灵活性和峰值处理能力,这不是刚刚才我们所讲的,它可以做到什么削峰嘛,对吧?啊或者消峰也可以对吧,峰值的一个处理能力吧,啊对于峰值不需要非得去加机器吧,啊不需要非得去加机器这样的一个内容,那还有一个就是灵活性,那这个讲的什么事呢?因为很多现在有很多的一个消息列啊,它是分布式的。
09:03
那这个就有一个好处,就是开它可以动态的增减机器。假如说618双11这种。对吧,那中间的消息列,或者说服务器我随时加上去,对吧,加上去假如说这个时间段过了,那接下来一段时间,应该它这个地方量不会很大的,对吧,你刚剁完手的,你不能接着一跺脚是不是对吧?啊所以呢,这个时候就比较小一点,那这个机器一直跑,就像我们刚才所说的,你一天只有五个人访问你的平台,你用1000台机器去处理这个五个人的消息。这也太浪费了吧,那我们可以动态的让他干什么?下线啊下线你不能说为了双11这一天,我平时都是1万台机器在这等着,这也不合适吧啊,所以呢,这种消一个电脑还具有一个灵活性啊,具有灵活性啊,可以动态的上下线,因为有个很多的消息队列呢,还是分布式的,最后这个一步啊,其实我们也讲过了,主要就是AB系统,就是解偶吧,还是讲一个解耦啊,主要的你看这两块,主要就是我们所讲的解耦和学风这两块来说,对吧?啊最大的好处就是这两块一个内容啊,这两个内容,那这个是我们讲的整体的消息队列的一个好处。
10:13
那既然这是消息地震的好处,那糖法有没有呢?肯定有吧,因为卡夫卡是一个什么消息队列,对吧,啊,卡夫卡是一个消息队列。
我来说两句