00:01
好,下面呢,我们来看一下MQ都有些什么用用途啊,有什么用?呃,大家从网上可以查到很多关于MQ的用途啊,啊,它的这种叙述,呃,那么用途很多啊,但是我们总结起来,重要的其实就这三点,第一个。叫限流修风。什么意思呢?来,先看描述啊,MQ可以将系统的超量请求暂存其中。什么叫超量请求?大家看教我们用户对吧,用户提交请求。我我提我我要访问这个这个系统A是吧,提交请求,每秒5000个请求。但是这个系统A啊,他对这个这写的MQ啊,其实我们也可以把它当成一个下游系统,那么它对假设就是Mq吧,那么MQ的处理能力呢。啊,其实就是每秒2000。
01:00
那意味着什么?你这每秒5000,我这儿只能处理每秒2000,那就多出来的3000叫什么?就叫超量全球。那就叫超量。对超量请求啊暂存其中,以便系统后期可以慢慢进行处理,从而避免请求的丢失或者系统的压垮。那是说我们刚才说了,对于这个系统A来说啊,你这多了3000个请求。它会导致我们系统A,它的结局有两种,一个直接把它压垮了。压死了。系统崩溃了。但一般我们不会这样,为什么一般啊,我们的系统它都有什么东西啊,一般系统我们都都都会具有这个限流的这种功能,所以你你流量很大。你这个流量很大的时候,我系统A会限流,做自我保护,限流就是说我这只只处理2000个,只接受2000个,那多出来3000怎么办?
02:05
对不起。我把它扔掉,我不扔掉它,我就挂了。所以这是什么啊,这就是我们普通系统啊,它采用的方式。那我们不能丢啊。所以这时候我们就可以在。我们的系统之前啊,我们添加一个MQ。把请求N5000 5000请求我都给存到哪?存到MQ里边。然后呢,我系统A呢,诶我就从MQ里边每秒读取2000。那你多开这3000呢,在它里边存着呢。只要你MQ足够的。是不是我每秒会多3000个请求?放在它里边,每秒多3000个请求放到它里边,只要你做够大,那么这些数据都是不会丢失的,我系统A都能慢慢的进行处理。所以这样解决了问题了,我们系统A也不会崩溃,然后呢,也。
03:03
数据有没有丢失是吧,这叫限流消峰。然后就是第二个啊,异不解偶啊,异步解耦,我们需要好好给大家说一下啊。这就是说的上游系统,下游系统,上游系统对下颚系统它的调用。如果是同步调用。将会大大降低系统的渗透量与变化度。且系统的耦合度太高,什么意思?是上游系统,这是下游系统是吧,那。Get。我上游系统调用下游系统,我发出一个调用请求,然后下游系统对这个请求进行处理,这边进行处理啊,我没有处理完毕的时候。上善恶系统处于什么,处于这个。阻塞状态,当然你你如果不阻塞也可以,你这样可以一步啊。
04:02
反正我这儿是没有结束,我不会给你响应。这边肯定有个用户。对吧,这边有用。然后上系统交给他了。把钱就交给他了,你这边一直在运算。即使你上药系统这产生的异步调用,你这这个上药系统啊,没有阻塞,仍然在做其他事情,可是对我用户来说,我们没有获取到我这个请求的响应,对吧,然后呢,他运算运算运算运算结束了,返回给他了。然后他才会把。响应返回他。对不对。这样的话啊,这说了这种叫什么,这种叫同步调用,这种同步调用会大大降低系统的存储量和变化度。就你这个用户提交这个请求啊,他没法实现并发,就我这提交这请求没有获得响应,就我用户只能在干等。
05:01
对于用户来说,它实际上是阻塞状态,要干等的,对不对。而且下颌系统和下颌系统耦合度很高。而异步调用则会解决这些问题。所以两层之间若要实现由同步到异步的转换,一般的做法是什么?在两层之间增加一个MQ。这是我们。给大家说啊,我们在生产环境下,这是用的最多的,我们一般上游系统和下游系统中间啊,都会增加一个MQ。可以进行异步,可以实行结偶。是吧,降低了耦合度,这个是我们啊实践啊生产实践中用的最多的一种解决方案,也是最简单的一种解决方案。所以这就为什么说MQ非常重要啊,就在这儿。那么。呃,那么那么这个这个有点太抽象啊,我们举个举个例子吧,我们举个例子啊。
06:02
举个什么例子呢?比如说我们。这个这个。电商系统的,我们就以电商系统为例啊,电商系统是这样的,我简单画个图啊。那么假设啊,这是。这是我们的订单系统。啊,然后这是我们的库存,库存系统。啊,这订单啊,订订订单,这是库存,这库存系统,然后这儿啊,这是我们的用户。对吧,这用户啊,用户提交请求。就是用户下单对吧,用户下单大家想一下啊,你在淘宝对吧,你在这个京东啊,拼多多买买买买东西的时候你要先下单,这一下单以后。这订单系统会给你生成订单,同时他也会干嘛。
07:01
是不是需要需要通过这个库存系统来修改,比如说呃,我们这儿啊。我画到这。这是我们的数据库,是不是需要修改数据库里边的库存呢?对不对,修改库存,库存修改成功了。给他一个响应,然后他给他一个响应。诶,然后用户就获得到这个响应啊,你下单成功了对不对。这里边儿看似没有问题啊,但实际上这边存在很大的问题,哪的问题。大家想一下啊,就我用户。下单成功这个事儿。和。你订单系统修改库存之间有没有必然的联系?有没有必然的联系?有哥们说当然有必然的联系啊,你库存修改如果失败了,那你下单就不成功啊。
08:02
你注意啊,你这种思想就错了,这种思想那就是完全不会编程的思想。你不会写代码。大家想一下啊,你在设计这个库存系统的时候。他对于库存的修改修订如果失败了,你会怎么样?就让他失败吗?肯定不会呀。如果失败了,我们这个肯定会从从事啊。就是我们库存系统啊,是一定会保证我们对库存的修改它的成功的。Three。这里边儿大家要知道一个前提,就是我库存系统,只要你请求过来了,我库存系统将来修改库存。是一定会成功的。这是个前提。那在这个前提下,大家想一下。那我。Six。
09:01
我用户下单成功和你修改库存有关系吗?其实没关系,和谁有关系,和订单系统给你生成订单号有关系,只要订单号生成了。你的下单就成功了。那么我也可以给你下一个。就可以给你想象。所以。会演变成什么呢?演变成这种情况。就我们用户啊下单,那么订单系统在这会生成一个订单,只要生成订单了,那么马上给用户回复。I下单成功了。剩余的工作你系统后台你做就行了,那怎么做?这是什么?我就这样画了啊,这就是我们的。Q。我订单系统把数据写到MQ。然后你安排客户慢慢处理就行了,你慢慢修改订单是吧,修改订单这个事儿和用户没关系。
10:05
那你后边的我就不不需要了解这些这些细节,所以我把数据写到这个MQ里面。然后你订单系统慢慢处理就可以了。对吧,变成系统慢慢处理。从这里边读,所以这是什么?这是我们消息的生产者,这是消息的消费者。对不对,那这样的话就实现了我们订单系统和我们的库存系统,它的一个什么接耦合。然后它之间的运行的由由这个同步是变成了异步。就通过MQ。使这两个系统运行实现了异步同步找义务。对不对,那OK,这是咱们举个例子啊。好,再看下一个啊,下一个这个分布式系统啊,这是数据收集分布系统啊,会产生海量级。
11:02
数据流,大家看这是不是有数据流啊。海量级的数据流,例如啊业务日志啊,这个这个监控数据啊,用户行为等等。像我们在这些淘宝啊是吧,京东啊,这些电商平台上,你做的任何一个操作,你在哪点了鼠标了。啊,你浏览了什么地方了,包括你点鼠标的位置啊,鼠标移动到哪,这些用户行为啊,它都会记录下来,都会存下来。你的用户画像怎么来的,就就这样来的呀,这是其中一部分呢。这是你用户发现的其中一部分。针对这些数据流进行实时或批量。采集汇总,然后对这些数据流进行这个这个大数据分析。这是当前互联网平台的必备技术,通过MQ可以完成此类数据搜集。
12:01
而是最好的选择。当然有哥们说了,那你说这这数据我我存到MQ,我不能存存到数据库吗?可以啊。但这样说了,这是最好的选择。这是最好的,他不是唯一的,是最好的。知道吧,当然这像这种一般啊,我们要和大数据相呃相连接的话啊,要大数据系统的话,一般这个中元件里面我们选择卡不卡的可能会多一些。呃,选择卡不卡的会多一些,当然了。我们look q。也是一个很好的选择。为什么呢?因为热Q和卡普卡之间啊,他们的。关系非常的密切,那这个我们一会在MQ概述里边给大家来讲解。好,这是我们简单的先看了一下啊,我们的。MQ它的用途。
我来说两句