00:00
同学们,我们再讲一讲这个镜像队列啊,为什么要讲镜像队列呢?那是因为咱们现在的。MQ集群根本就不可复用啊,什么叫不可复用呢?这个词语指的意思就是我在一号机上创建的队列,在二号机上根本就没有。也就意味着,一旦一号机宕机了,那么这个队列就消失了。它不会,因为说有三台机器就会有三个队列,不会的队列还是一个。哪台机器上创建的,那就是在哪台机器上,其他机器上根本就没有。不妨我们一起创建一下看看啊,感受一下。首先我打算连接一号机创建一个队列,你看现在队列啊,队列没有,那我们来我用。我用电脑是吧,来我用一个,我用一个程序吧,是吧。
01:01
随便来一个hello。很对,我们的一号机注意看好一号机的IP啊,是138,所以你这个位置IP1定要写上幺三。八对,一旦你连接138,创建一个hello hello的队列,那么这个hello的队列里面又发送了一条消息叫hello word,对吧?很简单的一个内容啊,那我发里面那么这个队列。是谁的队列呢?现在把答案说一下,它的队列只会是节点一的队列。对,节点一,节点二和节点三上根本就没有。我们来创建一下。好创建完了是吧,咱们一起来看一下。哈,队列已经来了。其实在这个位置已经看到了,它是哪个节点啊,你看no的节点在节点一上,那在节点二和节点三上有吗?显然是没有的,这个地方呢,有一个详细的关于详细的信息,你看持久化吗?持久化有什么策略吗?没有策略,诶哪个节点呢,节点意义上,那一旦节点一宕机了。
02:14
那你说这个消息是不是也自然就丢失了呢?是丢失了。咱们一起试试啊,咱们怎么才能让这个消息丢失呢?咱们可以将一号节点。宕机对吧,宕机那但宕一下呗,怎么宕呢,就人为演示一波宕机是吧,我们宕机的命令呢,我看一下啊,之前宕机的命令我们都用过这呢。将服务器关掉不就宕机吗?是吧?关掉。关了啊关了,关完之后马上回来,你刷新页面。连不上了同学吗?因为你连的这个138机器宕机了,那同学说那我怎么办,你可以聊连其他两个机器啊,例如其他机器叫143吧,我记得是吧啊又让咱填账户,那填吧,呃的的me。
03:10
完了,密码是123走。这个时候你会看到这个节点一是一个大红红的是吧,非常红啊,表示节点没有运行宕机的这么一个颜色就是红色绿色肯定是没问题的是吧,完他之前的队列呢。你看队列这个位置哈,还在,也在节点一上,但是状态为。当状态。就是宕机的意思,荡你看荡。这个时候你看里面连信息都不显示了,说有多少个信息啊,有多少个未确认呢,总共有多少消息啊,都是一个什么na这么一个码是吧,此时此刻其实已经宕机了。对吧,那宕机的时候,那么紧接着你再去获取这个消息,应该也是获取不出来了,咱们试试啊。
04:01
咱们去连接哪个机器呢?连接hello是吧,连接一个144,因为另外两个机器不是还在嘛,是吧,一个是143,一个是144,来我们访问一下143到底能不能拿到这个消息。获取。啊,报错了。报错的原因就是告诉你队列怎么的真的,节点一怎么的,Hello,哎,已经is down,已经down了,是不是确实消息丢失没有丢失了。就算没丢失,它也是至少获取不到对吧,所以说怎么还没丢失呢,是因为这个MQ呢,它是能够保存磁盘的,虽然说机器当了消息应该在磁盘上,那怎么办呢?我们可以起一下试试啊。起一下试试,再重新给它起起来。那起起来的命令,我们去找一下。
05:00
启动的命令应该是这个叫启动的命令是吧?把这启动的命令启一下,看看还在不在消息。起了,起完之后咱们刷新一波,现在是黄色,表示还没准备好呢,正在启动当中,好了,绿色好了再回来,队列是不是好了消息呢?哎呀,消息没了。是吧?小鸡被消费了吗?我看一眼。没有,没被消费,你看我们这面呢,再运行一下,消息能拿过来吗?显然没有,你看虽然说不报错了,但是消息没了,你看没。零呢,零没了,所以呢,这个就会造成消息确实丢失了。再集群情况下,哎,某一台机器宕机,再重新启动回来,里面的消息竟然没有了,当然画图画错了吧,应该是第一号机是吧?宕机之后再重启消息就没有了。在集群情况下丢不丢失。
06:02
消息会丢失怎么办?所以我们要讲我们的下一个内容叫什么叫镜像队列,什么叫镜像啊?就是备份,对,我们应该给每台机器有一个备份。至少应该让他怎么办呢?只要你发一个消息,不应该只在某一个节点上存在,例如只在一号节点,那么一旦一号节点宕机了,东西不没了吗?是吧,那能不能这么的,我发消息发给一号节点,但是一号节点能不能消息再备份一份,到哪呢?到二号节点。对吧,这样的话,这个信息是有几份啊,有两份,注意有两份,一份在一号节点,一份在二号节点,当然了,你可以更嚣张一点,怎么呢,让他备份所有,就例如一号机上的消息,可以在二号机和三号机上通通都有一份。这样的话是不是更好呢?
07:01
可以啊,这绝对是没问题的,只不过这样呢,有点浪费,对浪费资源。就是你备一份就可以了,没有必要备好多份儿,当然了,你要愿意背好多份呢,我们也不拦着你,这个东西绝对是可以实现的。只不过我们平时愿意只备一份,因为考虑到消息特别多嘛,如果你这里面有100万数据,那你备份就得备200万,对,因为你备了二和三嘛。我们如果只备二,是不是相当于只备一百一备份100万就可以了,对,这样不就可以节省点资源吗?如果你觉得你不踏实,你就全备份啊,如果你觉得你踏实,你就备份一份就可以了。咱们今天不重点研究备几份,只研究备,如果备一份是吧,镜像队列镜像就是它那个备份。那么镜像队列我们要怎么做呢?是吧?怎么做才能出现镜像队列呢?是吧?搭建步骤啊,非常的简单,就几步,就一步。
08:03
在三个节点上。在任意一个节点上添加一个策略就可以了。对这个策略你就照着抄,抄一遍完了,这个这个就具有备份啊,具有镜像队列的这么一个能力了。怎么办呢?来我们演示一下啊。我呢,先把这段的截了个图。为什么呢?是因为我一会儿要照着写。他说好了,在任何一个节点上,比如说三个节点,任何一个节点都行啊,点开策略,点这注意。在额的命这里有一个策略。点击策略,策略当中要求你添加一个新的策略,添加给谁添加给斜线啊,注意给斜线添加一个策略。添加什么样,添加这样,第一个要求起个名字。拿名字。这个名字随便写啊,这个名字呃,没有任何的意义,只是有语义,就表示我要给它备份啊,备份镜像,几个镜像啊,两镜像,当然这个两两个镜像指的是一个主,主的一份是吧,是另外有一个倍的一份,一主一倍加起来多少啊,两份嘛,是吧,就就这意思啊。
09:16
如果你觉得这名字不好听,你就换一个,这个没有关系。重点是第二个,第二个什么呢?是这个叫。规则。什么叫规则?正则表达式的意思就是说什么什么样的一个一个队列或者是交换机需要进行备份呢?需要进行镜像处理呢?他是说必须是以这个为前缀的,一个叫镜像为前缀的一个队列,或者是一个交换机。对,必须是你叫这名,你不能叫hello,对,你不能叫hello,你像我刚才之前那个叫叫hello啊。你像这个队列名字叫hello,那不行。那必须叫这个名字,必须叫乙。镜像哎,为前缀的这么一个哈,这个是可以的。
10:03
这就表示他以他为前缀。那么你也可以改改啊,你说我不想以他为前缀,我想以这个hello为前缀,他说可以啊,这都没有问题。我们只是按照文档走走了一波啊完紧接着呃,可以用应用于哪些范围啊利应用于什么交换机和队列都可以呗,对完了呢,下面应用的一些参数是吧,那参数要求你去写呗。照着写啊。ha表示是。备份的意思,或者叫抗压能力比较强,所以叫ha啊,一般都是,呃,被击模式是什么模式是吧,先先点一下,可以点到,你看飞机模式什么模式。指定模式就它。他这个是什么指叫指怎么叫指定呢?就是备几份啊,哎,备几份遵循于下一个叫参数,也就意味着。他这句话的意思就是备份的模式。
11:00
按指定模式指指哪个指它注意由他来指定,指定几份两份,所以你写个二。注意是两份,包括主机在内啊,主的不有一份主份一份备份嘛。两份。对吧,两份完了再往下同步的模式是自动同步,你看自动。来那也可以手动啊,手动这个麻烦哎,改自动就行了,就是要求由他自己来完成。就可以,你看没了吧,没了不要了,添加这个策略。添加完中间出现了这么一个,哎,这么一个策略。这个策略只要一加完,接下来回到这边,你要再创建一个新的队列。在哪个机器创建都可以啊,这回你在哪个机器创建都可以,你例如你在一号机上,例如创建一个队列,这个队列自然会。自动的。做一份备份,可能在二号机上,也可能在三号机上,这个是由咱们这个服务器来决定的,我们就没有去去干预啊,肯定是两份。
12:08
对吧,那我们试一下啊。首先这个镜像的名字一定要叫,叫镜像开始是不是完之后你再创建来我们创建一下。创建完毕之后呢,回来。这时候你回到队列。这。队列这里头,你看这里面忽然间在一号节点上创建加一,看到没有加一,没有加一,这个就是备份。你可以进去看一眼。看完之后你会发现备份了吗?背了背了几份,备了两份算自己啊,一个是节点一上,一个是节点三上。节点一有一份,节点三有一份,那么一旦节点一宕机了,那你说节点三能不能用啊,就能用了。对吧,啊就能用了。这就达到了一个消息不丢失的这么一个目的。咱们一起试试啊,首先我把节点一再给它关闭掉。
13:02
关闭。关了啊,节点一关掉了,咱们一起来亲眼看一眼,确定节点一关了吗?关了啊,红红的关掉了,完再回到这儿。你看现在目前这个他已经什么已经在节点三上了,完了另外又备了一份是多少在节点二上,为什么这么背呢?是因为节点一宕机了,那么这个时候你再去获取消息会不会丢失。来看一下。我们把这个队列的名字粘一份过来啊。显然不会丢失是吧,因为又给备了两份嘛。获取消息。你看hello word有没有有了,这回节点一宕机,对。队列是吧,就没有什么影响。哎,不会丢失消息,而且还还会还会智能的发现节点一宕机之后,在节点二和节点三上再共用,共同有两份,诶一直保持着两份,一旦保持两份的目的就是一旦节点二战动机呢。
14:03
对不对,一旦节点二再当机呢,是不是节点30还有啊对,所以说它就可以达到一个效果,什么效果呢。这呢?你要知道,就算整个集群只剩下一台机器了,依然能够处理里面的消息。消息依然不丢失。就是说随着机器的宕机,它会把这个数据挪移到其他两台机器上,所以即使升到最后一台,也是可以消费消息的。这就是咱们镜像队列的强大之处啊,需要配置镜像队列不需要。
我来说两句