呃,我来看一下啊,它的呀, 再,再往后,你看跑这了,这样再往后退吧。 好,大家看,从这可以看出来啊,你看他现在支持的支持的这个, 呃销售软件是什么?它只支持两种,一个 rabbitan q, 一个是卡不卡,它就支持这两种啊,不支持其他的,但是我们 supercar 阿里巴巴呃,它呢,又增加了一个,它还支持什么?支持它的 rocom q, 所以我们对于 supercar 阿里巴巴啊,像你可以使用三种 mq 啊, rebeling q, 卡不卡和 recome q 当然对于呃阿里来说啊,他肯定要推荐他自己的专业啊。是,所以我们在这呢就要要要要说一下啊,当然呃这些专业我们都没有学过的啊,后期啊,像我们这个 rebelq, 我相信大家应该都没啥问题。 那么卡不卡和 room q, 我们后续的课程里面会给大家来讲,因为我们没有学过啊,所以呃这个 room q 呢,给大家呃,来说一下啊,怎么怎么样安装怎么样安装?嗯,我克隆一个,我就用这个 g d k 八的啊。 呃,我这个就叫 rookty mq, 先把机器克隆了啊。 color, 那就是来完成两下呗。啊,一个是修改 主机名是吧啊,一个是修改它的 ip, 我们用的静态 ip 嘛,主机名在 a t c 下边儿的 host name 啊,我们这个就叫 rocked m q a d c seat config, night work gun scripts if config 是吧?然后 ip ip 用多少呢?呃,咱们这样啊,我之前像这里边是有的。 you come q, 我们用幺幺五就行了,用幺幺五,当然这个我在那个里边已经放过了啊,就那个。呃 呃, driver's etc 下边的 house 啊,这个文件里边已经放过了,我就不再往里边放了啊,你知道幺幺五是吧,就可以了,那也就是说我可以直接使用这个名称了啊。 幺幺五。 好,大家看,我原来这里边是有这个 rock m q 的啊,当然我现在可以把它删掉,其实这倒无所谓,把这删掉是吧,然后我这边就直接用, 直接用这个主机名的 好。呃,那这样的话啊,呃。我们是吧幺二五,我这个呃主机已经科隆完毕了。科隆完毕以后啊,我们下边要安装。呃,安装肯定我们得从官网来下载啊。 rocket i'm q, 这是啊,我们这是呃 recome q。 它已经呃捐赠给了阿帕奇了啊,所以它现在是阿帕奇的顶级项 是吧?呃,我们现在最高最新版本是什么?五点零的对吧?那我们可以选择啊,建立中文是吧? 然后呢?文档有五点零和四点 x, 当然我们应该用哪个版本啊?这不是我们啊,最高啊,我五点零,我就用最新版本五点零。那我们前面给大家说过啊, get up 是吧? 我们打开它,它里边有一个兼容性是吧?它组建的兼容性啊, 这个不好打开了。呃,这样我给大家说了啊,呃,这个兼容性的,我们可以看到他现在支持的版本,就我们现在这个 spra 阿里巴巴对应的这个版本应该是四点六点四这个版本,而不是五,所以我们要下载的话,我们 应该下载就是四,应该下载四,但是我们用五这个版本也是可以的,也能用啊。这个我已经试过了,是没有问题的啊。他现在支持支持的最高版本是四点 四点六点四还是四点九点四了?估计四点九点四是吧。啊,一会我们就可以看到啊,所以我们现在呢就下载这个版本了,当然这是原码,这是我们啊,二 g g 的,我们现在要下载它,这个我已经下好了啊,在在这好像 room q 是吧?这已经下好了啊,那么下边我们要做的就是把它上传 上传到 o p t twos 最新版 五点一点三吧五点一点三这个版本是吧?上传啊,成功了,那现在我们进到 o p t 下边的,呃,这个,这个,这个,这个 tooth 是吧,现在是不是又有它了?那现在,呃,给它解压一下,当然我我们在解压之前啊,先给大家说一下,就是它对这个对对系统是有要求的啊,我们看 window 快速开始,大家看啊,你这个系统要求是什么?六十四位操作系统,然后推荐使用 linux, unix 和呃, mark 是吧?我们现在用的是 linux, 然后呢,他要求 gdk 是六十四位一点八啊,进行以上。 另外还有一点就是它里边要求我们要有要配上加了 home, 你注意要求你的系统里边还要配上加了 home 这个环境变量,所以我们现在看一下我这个有没有加了 home 啊? echo 我看一下 多了加吧哄你看,我这边是有的啊。答案你要是没有的话,那你就得配一下我这有啊。呃,一般你 gdk 安装它是默认安装在哪了, 安装在哪?安装在 u s r 呃,下边有个加吧,你看看一般默是装到它它里边了,是吧,那 那么如果你也是在这,当然你不在这,你可以找到你自己具体在哪,然后找到以后,我们现在来编辑一下这个文件 a t c 下边儿的 profile, 大家看在最后, 你给它加上这么几行,是吧?这不是加了 home 吗?就指定你刚才啊,你加加了的安装目录是吧?啊? j r e home 是吧? club pass, 然后我们的 pass 给它加进去,把这家 home 给它加进去就 ok 了。那么这这个内容加过以后,我们最后再给它什么 south 一下,是吧? 就是让它生效啊,让这文件你刚改过的文件让它生效就可以了啊,这就 ok 了,这就 ok 了。那么有了加号码这个环境,我们有了以后,下边就可以解压了,因为它是 zip 啊,所以我们要用 on zip, 当然我 answer 是需要安装的啊,我的已经装过了,你要没有装你就压 install, 你给它安装一下,这个我就不再说了啊, 然后杠 d, 我指定给它夹到 o p t 下边的 a p p s。 好,大家看现在是不是有了,这名字太长了啊,我们给它重命名一下,我就叫 rocked i'm q。 好,我 cd looks up to。 现在进来了,那么进来以后啊,这边有个闭目录,这儿有个闭目录,它里边儿放的就是我们的 啊,这命令,这命令啊,那么因为我们没有没有给大家讲过,我们现在没有学习过。呃,这个 room q 啊,我简单给大家说一下,对于这个 room q 启动啊,需要注意,我们需要启动它的一个叫 name server 的, 需要启动个 name server, 这个 name server 呢?呃,它相当于是在 m q 里边有个服务器,然后呢,这它里边是有有,有什么 东西啊?你看 broker, 有 broker, 就我们需要可以启动多个 broker, 这些 broker 都是注册到它里边的,你可以简单这样理解,所以我们先要启动这个服务器,那么这个 broker 就相当于是它里边的客户端,是吧,你需要在它里边儿上进行注册的。那 那么这里边呢?我们看啊,我们用到的,我们用到的命令,实验室就用这个啊, run broker 和 run server 用这两个命令来启动。我们刚才说的啊,这个,这个 broker 和我们的 name server, 但这两个命令里边啊,我们可以看一下 哎,呃, run sover 大家可以看一下啊, 我刚才是不是一下敲了个啥东西,我重新再进一下啊, 手掐了个啥东西吗?刚才又又保存了一下,你看这看里边有错没有啊?先这样运行吧,往下看啊,看哪呢?看这, 你看它里边啊,就是内部它使用那些内存有点太大了,你看都是四 g 两 g 是吧,我们这给它稍改小点,要不然启启动不了啊,四 g 的我给它改成呃,二五六啊,照 啊,两 g 的给他改成小一半,嗯,幺二八找是吧?然后呢?然后这呃 二二二五六照, 二五六照是吧? ok, 这就改过了啊,然后呢?我们再看一下啊,还有那个 run broker, run broker 它里边呢 啊,它里边在哪?在这, 你还有点八 g 更大了是吧?啊,我们这个也是二五六兆, 二五六兆给它改成二五六兆, ok 啊,这样的话啊,我们现在就呃配置文件这儿我们就呃写,这其实也不是改的配置文件啊,就我们把这个命令那改一下啊,好啦,改过以后, 呃,我们现在就能启动了。这个启动之前我先让大家看一下啊,我当前用户主目录 是吧,就是入他目录下,现在里边就一个这文件,这他自带的是吧?就这文件其他什么也没有好,那么一会一启动它里面就会有东西了啊,当然启动的话,那启动在哪呢?大家看这这下边,你看,我们就按照官方文档就行了, 这个 rock mq 啊,官方文档写的很详细,而且也都是中文的哈。呃,我们直接用它就行了啊的首先启动 name server, 然后再启动我们的啊 broker 加 proxy 是吧啊,当然这五点零里边加了一个 proxy 啊,实际上在四里边 是没有这个东西呢。哎,它也是快速开始 name server, 它就直接启用 broker 就行了,所以我们就直接看一下 五 先启动 name server, 我们就拷贝他就行了啊,大家看就拷贝他是吧。启动 name sever, 你看直接回车, ok, 你看是不是已经启动了 name server study 对吧。启动以后啊,我们现在可以看一下,看个日志, 大家能看到这句话, the name of our boot success, 那说明什么?已经启动成功了,现在已经启动,现在它在什么?它在扫描啊,扫描我们可用的 broker, 现在没有嘛 啊 color c 先把这个日志啊给它结束,我们现在再看一下,你看现在里边是不是有了 locks, 刚才我们查看的这个,你看查看的这个 是什么?是不是当前用户瞩目录下 logs 就查看了这个,明白吧?好,这个启动以后我们下边呢再来启动谁呢?启动 broker 加 proxy 也是拷贝汤 currency, 大家看是吧。 name server 启动了,然后 proxy 这儿是不是也启动了啊? ok, 然后再查看一下啊,我们再查看一下位置, 而我们只要看到这句话, the broker 啊,什么什么什么 put success, 就说明启动成功了,你看这现在两个都启动成功了,当然这个启动成功以后我们再看啊 broker 只要一启动成功了,我们现在 你看在它里边是不是又多了一个叫 store, 除了一个 logs 以外,这儿还有个 store, 这 store 干嘛的? i'm q 啊?哦, i'm q 里边它将来就是用于存放我们的消息的,是吧?这是 store 里边原来就是存消息, ok 吧? ok, 好答案,这个成功了没有?你看官方还给出来测试啊,我们可以测试发送,但是我们大家需要注意啊,你看他先写了这样一句话, 这什么就我们在发送消息的时候啊?你其实不管你是啊,生产者还是消费者,实际上都需要 name server 的地址,当然我们现在 name server 地址是谁?就是他,他的更好啊,用本机的是吧?呃,九八七六 就是他,这就是他的地址,我都需要这个地址,这个地址呢?呃,实际上,呃,就是通过这个变量读取这个变量 来获取的,那你现在就得先定义这个变量。哎,我现在先定义这个变量好了,现在有了,有了以后, 然后这儿并下边有个叫 to tooth tooth 里边儿它可以启动我们的 producer 生产者,也可以启动我们的消费者。那么启动生产者他要给我们生产啊,一大堆消息啊,我们大家可以看啊,走, 呃呀,我我我们得又又从它里边出来了,我们得进到 o p t 下边儿的 a p p s, 然后这个,这个,这个 是吧?我们在它下边啊,得执行好了,大家看这剩下的消息再等啊,好,完毕了,他剩下的消息啊, 生产完毕了,那么一大堆啊,啊,很多具体这些消息啊,里边什么内容我们现在就不再给大家,我们就不研究它了啊,你看到能看到啊?这生产者生产消息我们看到了,然后这消费就消费, 你看就在消费,那么到这啊,他已经消费完毕了,紧接着他是处于什么阻塞状态,就等待着你再给我发消息,只要你再发消息,我这边就能消费 它。是这样的,所以我们这儿现在我们不给它发消息了啊, ctrl c 啊,给它结束,结束这个就可以了啊,那能看到这些说明什么?说明我们的消息啊?生产者,呃,我或者我们的消息系统已经成功了,当然怎么样?关闭,再往下关 闭,关闭,关闭,关闭,在这呢,它这边有个并下边有个名字叫 i'm q shut down, 是吧? broker, 我们就可以给它关闭,关闭的时候先关闭 broker, 因为你的 broker 有可能会有有,有很多,是吧?你得先关闭它,关闭了它以后再就是先关闭客户端,再关闭服务端,再关闭 namesover。 好,大家看,没了吧,是不是这两个进程就都没有了? ok 了,那么这样的话啊,我们的 mq 啊,呃,就这儿是吧? 啊,我们 mq 它的安装启动就说完了。
粉丝704获赞1.1万

大家好,我是百里,这节课我们就开始安装 rocket mq, 在安装 rocket mq 之前,我们需要先准备几个软件包,第一个就是 rocket mq 自己,第二个就是 j d k, 因为 rocket m q 依赖于 j d k 的环境,还有就是 menwin 和 dashboard, 因为 rocket m q 没有图形化管理界面,所以呢我们需要使用 menu 来进行编译,搭西 boot, 然后通过搭西 boot 来观察和管理 rocket m q, 那么这些软件大家可以自行在对应的官网进行下载,或者在评论区留言获取本片笔记及相关的资料包。那么接下来呢,我们就安装 gdk, 那么呢我们先通过连接工具呢,回到我们的这一个根目录,然后我们创建一个 a p p 文件夹,我们刚刚提到的四个软件包呢,后续我们都放到这个 a p p 的目录下进行统一管理,那么我们先进入 app 目录,并且创建一个 gdk 文件夹,然后我们再进入到 gdk 目录下,这个时候呢我们就将这一个软件包,然后上载到我们对应的这一个 gdk 的目录下, 那么可能有些小伙伴使用的是一些其他的工具呢,就可能比我这个更加方便,那么都是同样的呢,就是我们需要将我们的这一个压缩包呢上载到服务器上,那么这个时候呢,我们观察一下这个文件的一个后缀是不是,那么呢他就使用一个天雅的这一个命令来进行一个解压, 那么解压之后呢,我们就可以得到一个 g d k 的文件夹,对不对?是不是我们这个时候呢就有一个 g d k 的文件夹,那么这个时候呢我们就进入这一个 g d k 的目录,通过了 p w d 的这一个命令呢,获取到 g d k 的一个完整目录,那么这个时候呢,我们就修改一下这一个环境变量,然后呢配置我们的 g d k 环境, 那么呢我使用的是一个全局变量,那我们将这一个配置的话就放在这一个末尾,那么这个呢我们就不再一个一个的去敲了,那我们就将笔记中的这一个完整的配置呢进行拿过来, 这个时候呢我们就退出,那么这个时候我们使用这一个 java conversion 呢,它是不会生效的,大家发现没,他现在还是一点八点零六五,那么呢我们下载的 j d k 是不是一点八零幺七幺,因为呢我们现在呢还需要通过一个 缩死命令来将我们的这一个环境变量进行生效,那么呢我们使用的缩死这个命令之后呢,我们再查看它的版本呢 就已经配置成功了,那么这些命令呢,在我的笔记里面呢都已经有完整的描述了,来看没有环境变量,那么修改还有刷新,然后呢再查看版本,那么呢大家可以根据这一个命令呢完整的来进行一个 配置,那么接下来呢我们就安装一个 rocket mq, 那么 rocket mq 同样的我们回到 a p p 的一个目录下,然后我们创建一个 locky m q 它所对应的一个目录,并且呢我们来到这个目录下,然后现在是没有东西的,那么呢我们在这一个上载文件的这一边呢,也是可以使 使用到我们刚刚的这一个命令,然后呢来到这个文件夹下之后,我们就将 rookie 的 m q 的这一个包呢就也传到这一个目录下, 那么这个时候呢,我们是不是就有一个 located me to 的包了,那么呢我们同样的看一下它的一个结尾,也就是文件名,那么它是一个 vip, 那么呢我们需要换一个解压命令, 那么同样的解压了之后呢,我们就进入到这一个 locate m q 的一个文件夹下,然后同样的使用 p w d, 那么呢就可以获取到它的一个完整目录,那么同样的我们也修改它的一个黄金变量, 那么呢我们还是追加在结尾,同样的我们呢也 不再一个个的去写,那么呢我们将这个笔记里面的这个配置呢就直接拿过来, 那么我们将这个复制过来,那么我们这个 rookie 的 home 呢,其实就是为了方便我们后续去启动我们的一个 broker 啊做的一个提前配置,那么呢我们也需要将这一个 rookie 的面 qq 它的一个配置到我们的 pass 里面来, 然后我们配置在这个前面,并且呢我们同时呢也配一个 name server 的一个参数, 那么其实呢它就是我们上节课讲到的,我们 brook 在启动的时候呢,它就会去注向我们的人们身份去注册嘛,那么这个呢是后续使用到的,那么呢这里我们也先加上,并且呢我们在使用我们的一个 sos 命令来将我们的一个黄金面料配置生效, 那么到了这一步呢,我们整一个 looking 的 mq 的安装呢就已经结束了, 但是呢我们现在还不能够直接去启动我们的一个 name server 和 broker, 因为呢我们还需要修改一下它一个相关的启动配置, 那么呢这两个启动配置的修改呢?我们就下节课继续,这节课呢我们就到此结束。

最近用到的最新版的 local m q, 五点三点三,然后在安装的过程中会有那个端口冲突,因为是最新的嘛,然后它的一些配置参数可能跟网上搜到的不一样,官网也没写那么细, 大家看一下这个配置文件,在 com 下面有个 i m q, 然后杠 prox, 然后修改这里面的端口就行了。还有一个就是我们如果说客户端然后去发送 mq 的 时候,你要配置它的公网 ip, 除非说你的硬件和 mq 如果说在同一台机器上面,你是可以 不用去配置,因为当时测试的时候我是在自己的本机测试,然后我的 mq 是 在云上面,所以说你要配置公网 ip, 不然的话也可能说发送的时候你老是发送失败,也就是要修个那个 block 跟 configure, 大家看一下,这样的话大家就少踩坑啊。


ok mq 啊,根本没有实现真正的推模式,包括像卡夫卡拿口子也都一样,一般来说啊,像消息中间键或者配置中心啊的数据获取呢,有两种方式,一种是推,一种是拉。所谓推的模式呢,比如说客户端和服务端之间建立一个长连接,当服务端数据发生变化,立即通过这个已经建立好的长连接将数据推送过来。 拉的模式呢,就是客户端通过不断轮巡的方式检查数据是否发生变化,如果有变化,那就把数据给拉回来。推的优点呢,其实就是实时性好,一旦数据变化呢,客户端可以立刻的感知到,但是缺点就是服务端需要维护大量的 pcp 的链接,这会占用大量的内存和 cpu 的资源,并且如果有大量的消息推过来,可能也会对客户端造成一定的压力。 拉的模式的优点是实现起来很简单,而且呢我们自己可以控制拉的速度,但是弊端呢,也显而易见,轮循呢,一定存在着延时性的,并且呢轮循的方式对客户端也会造成一定的压力。而很多中间键啊推和拉之间呢,选择了一种推拉结合的模式,也就是所谓的长轮循,就是说客户端会向服务端发起 长轮巡请求,如果有数据变更就直接返回,如果没有,也不会立即的断开连接,而是等待一会,等待的过程当中,如果有数据的变化,那么就把数据返回回来,如果过了一段时间还是没有数据的更新,那么就在断开连接过一段时间之后,再重新发起一个长轮巡的请求,这样呢,可以把推和拉的优点给结合了一下,相对来讲这个方案更受欢迎一些。 所以很多中间键呢,我直接运用长轮循的方案,要么就是用长轮循来实现推轮循来实现拉。你比如说在绕给大 m q 的 pro 与筷子 hold service 当中呢,是用长轮循继续拉,实现了推的模式,如果大家感兴趣的话,可以去看一下原码。

好,我们接着来看一下这个 rock and micro 它的一个核心的一个组件呃,了解它核心组件的目的也是为了梳理这个 rock and micro 它的一个工作流程,那 rock and micro, 它的核心组件包括就是 第一个就是 name sour 啊,就我们也叫命名福气,又叫名声福气,主要用于管理和维护 locom 组集成的一个原数据信息啊,那这个原数据信息包括哪些呢?比如说像这个 topic 啊,就是主题 broker 啊,这主机这个节点福气啊,嗯, ok 啊,是它的一个组件啊,它的组件物流信息啊等等。那生产者和消费者通过与这个 limo server 胶布来获取这些 相关信息,像是 topic 的信息啊, broker 的信息啊,路由信息等等,那他的呃,他管理这些原数据,这些信息啊,集成的原数据信息为了给谁用呢?主要就是给生产者、消费者来使用的 producer 啊,深山者,他就主要负责将这个消息发送到指定的这个 topic 啊,就是发送到指定的这个主题上面去。那深山者可以同步或者异步的发送消息,并且可以设置消息的属性啊,顺序以及延迟等等这些特性啊。 那这就是在生产消息的时候都可以指定无休码,就是消费者啊,消费者就是订阅一个啊,或者多个这个 topic, 并且从这个入口的 mq 集群当中拉取消息啊。 消费者,那可以集群模式或者广播模式消费消息,并且支持顺序消费啊,消息过滤啊等等功能啊 啊,这个,这个是他那个控控胸膜啊, broker 啊, broker 呢,就是实际上存储数据的一个地方啊, broker 的 micro 集群当中的消息存储以及处理的一个节点啊, 那每个 broker 负责存储一部分脱皮卡的一个信息啊,他的一个消息啊,脱皮的,并且呃处理这个生产者和消费者的一个请求。那每个 broker 啊,都有自己的角色和身份啊, 并且通过呃与这个 name server, 也就是命名服名称服务器交互来注册和获取这个路由的信息。 topic 这一块啊,它主要是一消息,我们发送消息,消息它的一个逻辑分类的一个单位啊,逻辑分类, 那生产者将这个消息发送到这个特定的主题当中,而消费者就主要订阅这个感兴趣的这个主题 消息对列啊, message q 啊,嗯,这个有点名了啊啊,嗯,就首位呼应,因为我们 roco 本身就是个 m q 啊,但这里它也有这个消息对列,或者叫工作对列这样的一个角 角色,他这个就是每个主题可以被细分为啊,多个消息对联啊,你看他这个概念啊,在卡不卡当中,每个主题他可以被细分为,是吗? 分区啊, partition, 它这里它又叫做是湘西对列,又又分为这个对列,叫对列这个概念。在 rebian code 当中,它这里面它它是那个,就是公,就是 work and cube, 就是 cube 啊,就是湘西对列, 其实都是啊,有这个作用,只不过叫法,只要理解它的概念啊,只不过叫法不一样啊,名称命名不一样。 好,这就是如何 mac 核心组件,那接下来我们讲这个核心组件,目的就是为了说明这个他这个工作流程啊,看一下,梳理一下他这个工作流, 那入海 mq 它的一个工作流程就是,首先这个生产者就是 producer 将这个消息发送到这个指定的这个 topic 啊,它, 呃,我们前面不是有 lim server 嘛,他这个训练者,他肯定首先是跟这个 lim server 进行交互,他获取目标 topic 的一个路由信息,然后选择合适的这个 broker 发送消息, 那 broker 接收到深圳者发送的消息之后,将其存储到磁盘上的这个消息对列当中啊, broker 将这个消息持久化啊,就是里程出到此盘,实际上就是一个持久化的一个动作,并且配置到配,嗯,根据配置的这个同步或者异步刷盘策略啊,将这个消息 刷写到这个词盘。第三步就是消费者 consumer 订阅感兴趣的这个 topic 啊,消费者他首先呢还是跟这个 name server 进行交互,获取订阅订阅的这个 topic 主题的这个录用信息,然后选择合适的 broker 进行 消息这个拉取,因为 topic 他的一个路由信息,他肯定会进入这个 topic, 在哪在哪个 broker 啊,所以他就直接找到这个 topic 所在这个 broker 啊,拿取消息,那消费者消消费完消息之后,可以向这个 broker 发送确认消息,也就是 p c k 啊,确认消费成功, 那 broker 更新消息的这个消费进度。 第六步就是 lamb sewer 定期向这个 producer 啊,向这个 producer 和这个呃消费者提供这个最新的路由信息,以便他们能够根据变化的集成状态啊进行更新。 好,这就是 rookmaker 大概的一个流程,所以它这里面呢?它首先是有这个 呃, number server 这么一个概念, number server 实际上也有点类似于卡不卡当中这个 zookeeper, 对不对啊?原数据的一个管理,在原数据管理这块儿,它就有点类似于卡不卡的是 zookeeper 啊,这是这节内容。

大家好,欢迎来到潘博课堂,我是讲师传志燕青。好,下面呢,我们来研究一个消息队列,叫 rock 的 mq。 首先呢,我们先来介绍一下 rap 的 m q, 呃,那么 m q 呢?他是一个什么消息队列啊?那,那他的全称呢?叫 macg q。 好, 那么消息队列啊,有同学应该听说过,那具体消息队列在我们的这个啊项目当中有哪些应用场景呢?我们来先啊,对他的应用场景有一个认识,然后后边我们再去介绍 reck 的 mq 他的一个情况。 首先各位有一个叫任务的异步处理。嗯,那么有人说老师这是什么是异步呢?来,我给你举一个同步的例子,你就知道了。那大家呢,在去做电商项目的时候,大家都知道啊,即使你没有 开发过电商项目,大家也清楚,如果我们去下单,对吧?那下单的时候呢,你可能就会去呃请求,比如说啊库存呢? 比如说呃和物流进行这个接口操作呀,那这个时候你想这个我们是微服务的这个架构,是吧?那你这个订单的服务,还有一个仓储的服务,还有一个什么物流的服务。那我问你,这时候如果我们下单成功, 他去调用仓储服务的接口和物流服务的接口,这时候呢,他如果是同步调用的话,那么他是一个什么效果呢? 什么是同步调用?你比如说现在呢,第一步,我们说准备创建订单,对吧?第二步他要去调用仓储服务,好,这就是仓储服。第三步,这是什么物流服务? 注意,首先同步调用他是有一定顺序的。其次,如果订单服务调用仓储服务,仓储服务还没有返回结果,我问你,第三步他会执行吗? 他是不会执行的,所以第一呢,他的特点,第一他是有一定的顺序,第二,哎,我调用仓促服务呢,那这个仓促服务呢?哎,我得等他的一个结果,对,这就是一个同步调用。 那各位,你想呀,这个问题又来了,那你说微服务之间的交互那么错综复杂,是不是啊?那么他们之间的偶和性是不是就比较强了?因为我得等你,是不是?那这时候呢?各位,如果我们要采用义务调用,他的方案是什么样呢?我们就会引入消息对联, 就是说,呃,订单服务要调仓储服务,是吧?哎,你不要直接去调仓储服务,你可以怎么弄啊?你可以发一条消息到消息队列,而这条消息呢,就是告诉仓储服务要 更新某一个库存呀,某一个什么样的这个啊状态。那么这时候啊,仓储服务呢,就开始接收到消息。 各位,你想这个时候由于有了消息队列,这个订单服务是不是和仓储服务没有直接的交互,对吧?这时候订单服务也不用等仓储服务,他的这个结果 大家理解了吗?对,所以也就是说如果订单服务要和仓储服务要和物流服务通信,他可以借助于消息队列把消息发到销域队列。然后呢,这个物流服务呢,从销域队列呢去接收到消息呢?去更新物流信息? 对,这就是一个什么异步的一个操作。首先他们之间的这个操作啊,没有顺序性,因为订单服务把消息发到了消息队列呢,这个仓储服务呢,他可能还没有接收到,那这个物流服务可能就接收到了, 对他没有顺应性。另外这个他们之间不是同步操作,哎,对吧?也就是订单服务不用等仓储服务的结果,所以这种情况下,我们说就叫做异步的这种啊场景。所以各位,我们说任务异步处理,他有什么好处呢? 是不就提高了我们系统的一个处理的一个速度,就不用按顺序执行啊?然后呢,下一步等上一步的结果,大家理解吗?当然有些场景是必须用同步的,有些场景是可以用一步的,大家这个要明白,你不能说,哎,我所有的操作都是一步 啊,对不对?那你比如说你,你写一二三啊,这三步,那第三步他就必须等到第二步的结果,那你想都不用想,肯定是同步执行,对吧?执行完第二步再执行第三步,对,好,这就是我们说 m q 的一个应用场景 啊,这个任务的一步处理。另外一种就刚才说了吗?如果说没有销域队列,那这个订单服务和仓储服务之间,他是不是就紧密呕核起来了?也就是说订单服务必须知道仓储服务的接口,对吧?然后呢才能掉他,但如果有了销域队列,他们之间是不是就结呕核了, 对吧?其实这个在我们这个微服务开发当中是非常长久的啊,也就是有了消息对待呢,让服务之间呢进行结偶合。 还有一种呢,这个呢是用主要用于大数据领域的,就是啊日志搜集啊。呃,那这个大家简单理解一下吧,就是说现在呢,我们要采集很多的这个日志啊,日志里边有很多的数据吧,最终我们要去分析,对吧? 那这时候呢,我踩了很多的这个日志呢啊,这边呢是一个这个分析的程序,都在跑着,是吧?这边是日志采集的程序,那现在呢,这个数据怎么样 给这个分析程序呢?我们就可以通过效率队列就采集的程序呢,把数据源源不断的放到效率队列,那这个分析的程序呢?可以哎,不断的从这个效率队列干嘛呀?去获取他要分析的数据,对,这是一种什么?哎,大数据领域经常用的一种日志收集的一种场景。 好,其实我说到这呢,大家应该说对 m q 有一个哎,直接的认识了啊,好,那么我们今天讲的 red 的 m q 到底是什么呢?他是啊,阿里开元的一个非常优秀的中年间产品, 那么他的这个啊,脱胎于阿里另外一个啊,这个 m q 也是一个 m q 啊,叫 max q, 那么后边这个 rap m q 呢,在阿帕奇的这个基金会呢,进行孵化,然后现在呢是一个顶级项目啊,当前呢用的人也比较多。哎, 当然啊,他也有一些战绩啊,二零一七年双十一啊,那么这个阿里呢就已经用这个若凯 m 扣啊,当时呢也取得了不错的这个成绩,让大家简单了解一下,这是他的这个官网,那大家呢,也可以看他的官网的一些信息。好, 那么我们简单理解了这个啊, rap m q, 它是一个消息队列,那他呢?哎,可以实现任务的一步处理啊,应用程序之间解偶和等啊,那么其实在市面上有好多的这个 m q, 嗯 啊,有很多同学呢,是比较关注于技术的。那你可能就听说过 rabetm q, 对吧?还个 qmq, 大数据里边都知道一个叫卡夫卡,是吧?哎哎,还有一个 redds, 就是 reddse, 也是个 mc 吗?当然 reddse 也可以实现消息队列。对,所以这些呢,都是市面上常用的这个啊, m q, 那我们项目为什么要选择 rak 的 m q 呢?那是因为有几下几个原因,注意注意听啊。第一,这个 rak m q 他支持事务消息对, 比如说老师,啥是事务消息?对,等回到我们用到的时候我们再说。先不说啊,但是我说第二个,你就知道叫延迟消息,啥意思?因为我们原来说过需求,对吧?哎,当某一个 两个服务之间要通信,是吧?哎,那这个 a 要掉币,对吧?要掉币,那我们说 a 能不能延迟一段时间再掉币呢? 再给币发消息呢?可以,那他就支持延迟消息。嗯,还有他是天然支持集群负载均衡的,那我们说他更啊, 更方便,就用在这个分布式系统开发当中,还有支持指定次数时间间隔的失败消息重发,这个很重要,在我们项目当中就会用到 啊,就是说如果说各位你想他发消息,这个没有发出去,他会从事,对吧?那接收呢?接收消息接不到,对吧?或者处理失败,他也会这个从事啊,所以这个这个特性非常好。 下边呢,有几款这个 m q 呢,进行一个对比啊,大家呢简单了解一下,可以去网上查阅一些资料啊。那当前其实大家更关注的是 reck m q, 他的一些什么啊?优点啊? 当然他也有缺点啊,你看我这里边列了几条他的缺点,比如说和卡普卡相比呢?他的这个生态圈可能不是很如卡普卡,对吧?啊?另外他呢,只支持加瓦啊,因为本来 ramcomch 就是用加外写的 是吧?还有他的这个吞吐量可能不如卡不卡哎。当然卡不卡也有缺点是吧,所以各有各的优缺点,但是我们项目要用说凯文扣呢,主要是事故消息延迟消息集群负载均衡哎,这个非常容易去实现哎。 等等到这呢,我们简单呢,先介绍一下 rap 的 mq 好。