00:00
好,接下来呢,我们来看一下消息队列。其实啊,目前在企业当中非常常见的消息队列主要有像卡不卡,Active MQ MQ以及呢rocket MQ。那这么多MQ,我们在生产环境当中到底应该如何选择呢?那比如说在大数据场景下,通常情况下我们会采用卡夫卡作为消息队列。那像这个在Java开发场景当中,我们通常采用的是像active MQ啊,以及MQMQ。那说海哥你这一次课呢,讲的是卡不卡,那我想获取其他诶相关的资料怎么办呢?诶非常简单,大家呢,可以关注上硅谷交易公众号,回复Java就可以免费获取相关资料,打一波广告啊,那其实这里呢,大家也能有这种举一反三的能力,想获取安卓啊,Python前端。以及呢,像这个运维哎,都可以回复对应的关键字,获取对应的相关资料啊,都是免费的啊,当然了,你想获取大数据相关资料也是可以的,只不过呢,诶,那官网上呢,相对来说会比线下班的学生的这个资料啊,要晚两到三个月啊左右啊,也是主要呢,考虑到堡线下班啊对应学生的这个权益哈。
01:16
行,那下面我们往下看传统的消息队列,它在企业当中有哪些应用场景呢?哎,主要有这么几个应用场景啊,啊,像这个缓存萧峰解耦和异步通讯,那这里这个萧峰啊,可不是武侠小说里面那个萧峰啊,这里面呢是消去这个峰值啊,这个含义啊,那下面我们来看一下啊,第一个就是缓冲和消峰。那像刚过去的这个双11,大家都知道双11的时候啊,这个用户量呢,非常非常庞大,而且呢,商家呢,还愿意搞一些秒杀活动是吧?啊比如说这次双11参加的用户呢,是能达到每秒钟10亿人来进行一个秒杀。但是啊,我们后台的这个处理系统呢,其实能够处理的最大能力也就是每秒钟只能处理1000万人。
02:08
由于这个秒杀还有妊娠丸啊异常火爆,哎,被宋老师这个带货带的啊,那这怎么办呢?你说你这个系统扛不住这么海量的数据,但是我还想做这个活动。哎,其实那这种消息队列就起到了非常大的一个作用,就说你可以把这个每秒钟11的数据先缓存到消息队列里面,诶,一条条环境来。二进来。然后你这个处理系统,再按照每秒钟1000万人的处理能力,哎,我多花个几秒钟时间,是不是就把它处理完了。哎,是这样的一个处理情况啊,行,那这里呢,就是消息队列,其中一个非常典型的场景,就是这种消峰缓冲的作用。好,那再往下看。双击PPT。下面呢,是一个解偶的场景。大家来看,在我们啊,未来的企业开发当中,数据的输入源五花八门,那你像有买circle口网络接口,未来还有像网DB SQ server Oracle非常多的这个数据源。
03:11
那么我们把这个数据呢,希望传送到大数据的计算引擎和一些数据的处理引擎框架当中,那比如说类似的啊,比较常见的目的地加有high do SPA swimming drink spring。希望把这里的数据导到这儿。那么如果说没有这个像消息队列这种产品的话,那你就得买SQ对应它对应它对应每一个处理引擎都需要写对应的代码来完成,对吧?哎,他也在需要这种组合。你会感觉这个开发成本啊,非常非常高,也比较麻烦,不利于管理。那么有了这个消息队列之后,你就不用这样写了,你怎么写的,我直接就把这个我的数据源写到消息队列里面。哎,我只管往这里写就行了,那么我这个目的地,也就是说从这里面拉取数据的时候,只需要从这个消息队列里面取数。
04:02
就OK了,这都是现成的接口,直接拉就行。那就大量的这个减少了这种开发成本,哎,起到了一个解耦的作用,比如说不关心你市场,这有点类似什么呢?类似于这是一个大型的超市,那超市里面有很多进货的渠道,比如说这里面有五粮液啊,有茅台,有海狗人参丸。那么这个这些相当于是用户用户啊,不需要从厂家直接去购买相关的东西,人家也不对你进行一个零售对吧?哎,他只把这些产品啊放到对应的这个大型超市里面,然后你从超市里面去买就可以。啊,所以这个消息对列就起到了这种解耦的一个作用啊,啊,那再往下看还有什么作用呢。双击。下面这个叫异步通讯,那比如说宋宋老师啊,来到一个啊,某著名网站对吧?啊,成人网站进行了一个注册信息。那他在里面把他这个用户名啊,然后这个手机号啊,输入进去之后进行注册,注册之后啊,如果注册成功,需要给你来一个啊,发送短信告诉钟老师说,哎,你已经注册成功了。
05:09
那如果他这个代码呢,是必须得等到发送短信完成之后再会。诶,回调到这个网站页面,告诉这个用户说,诶你已经注册成功了。那么这样是不是要等待很长时间,而且大家思考啊,如果说这里面有N多个用户,都需要等待发送短信成功之后,再告诉这个用户你已经注册成功了。那这个周期是不是就很长啊,而且发送短信这个事儿是不是也不是特别重要,因为最重要的是不是只要在这个数据库里面有了这个用户的信息,这个事儿是不是就已经成了,下次的时候我就可以从这数据库里面,诶读出来这个用户相关的啊信息,进行一个登录。可以。那你看上面是同步的发送啊发送,那下面呢是异步的发送。一部怎么发送呢?他这个像宋老师来这网站之后进行注册。
06:01
写入数据库。然后呢,然后他把发送短信这个事儿,哎,交给他一个小弟,让他来去完成,那这个小弟呢,就是MQ。哎,把这事儿往这个里面一放,然后他就立即告诉宋老师干什么事,说你已经注册成功了,因为本来这个核心的事儿已经办完了吗?发送短信只不过是一些不是特别重要的事儿。好,那再来,诶又来一个用户进行注册,然后呢,再把发送短信的事儿来记录到消息队列,然后只要写入数据成功就可以。告诉用户,你已经注册成功了。发不发送短信其实无关紧要,那这个发送短信的活儿可以让谁来干呢?哎,放到先息队列,由这个模块慢慢的来进行发送,哪怕是发送失败了,那也没什么太大的影响。是吧,哎,那是下面呢,这就是异步通讯,那么稍微总结一下同步发送的这种方式啊。它呢,就是你可以理解为十颗。
07:01
我必须把所有的事都做完,然后对吧,一步一步的做完,然后你再告诉我说,哎,哥们,我已经注册完了。那么下面异步处理他是什么意思呢?他是把核心的事儿处理完毕之后,其他一些不太重要的事儿,你慢慢你自己发吧。哪怕是失败了没关系,不影响我核心任务的一个完成,哎,所以说这就是啊,异步发送,通常情况下在企业里面,哎,采用这种异步发送的啊,这种方式呢,要多一些啊,要多一些啊行,这呢就是消息队列相关的应用场景啊。
我来说两句