00:03
好,那么下面我们来看这个consumer q要注意啊,是consumer不是consumer啊,消费就是消费Q。呃。因为我们我们大家知道Q它是什么,它是基于这个topic订阅模式实现消费的。那消费者关心的是什么?关心的是?我指定的这个,我要消费的这个,我订阅的这个下边所有的消息。但是我们大家通过刚才的学习知道我所有的消息都放在哪了,都放在了map里边了。那那如果消费消息的话,我每一次都便利啊,把所有的file我都给它便利,然后找这样的消息,那就太麻烦了。效率就太低了。所以这里面就又有了一个呢,叫什么叫consume消费队列。
01:03
嗯,我们。看一下。大家看这是这个consume下边有个什么。Topic test,这是我们消息啊,原来我们做实验的时候那个,呃,那个那个消息它的主题。Topic对吧,然后呢。这下边有0123。这是什么?啊,这是。我们这个消息下所有的。队列。目录。这个是QD,这个就是我们说的QID啊,这是QID,然后我随便打开一个啊。零。这是什么?啊,这是。这个具体的我们,呃。实际上就我们的相应相当于我们那个队列,我们的我们那个Q,因为这个QID嘛,我们的Q里边数据放在它里边,这就相当于我们那个Q。
02:09
当然这个文件我们一般叫什么叫consume q文件,这个文件叫consume q文件啊。呃,当然我现在这个记忆里边,我们现在是不是就就一个topic test,呃,这一个主题,呃,大家看这里边啊。啊,这是呃,我抓了一个图啊,我抓了一个图在其他的,呃,我我我我原来这个MQOS啊。我这有个MQOS在它里边的啊。嗯。大家看这这是什么?这全部consume q下面这么多主题。这这么多的主题啊,主题下我这个persons这个主题下有0123。是吧,就他的QID。然后具体就这个Q。那就我们先看到它整体这个这个样子啊,那么它实际上是怎么做的啊,大体上先先简单大体上了解一下啊,就是我们生产者pro user把消息发送它里边。
03:13
往这发送的同时啊,我们的具体的消息body是不是在这里边放着呢。帮了他以后,那么他同时也会做一个工作,会根据你这个topic。创建相应的什么Q,就我们的consume。呃,Q。具体的队列那个文件我给你创建出来,然后把相应的消息放在相应的队列里面。会放到相应的,所以这这大家看这是什么,这就我们的。有不同的消息,消息就在它里边放着呢,那这是什么,这里边放的都是消息的,所以。就我通过这个东西就能找到,可以定位到具体在这里边哪一条消息。
04:01
哎,这是什么,这里边儿放的是索引啊,消息的索引。就整体意思这样,但是实际比这要复杂一些,具体我们来看。都是为了提高效率啊,会为每个下的这个啊Q创建一个目录。呃,中创建一个目录,目录名称是什么?Topic的名称。在该topic目录下,会再为每个topic的Q啊建立一个目录。每个Q会建立一个目录。哎,目录名就是我们的QID,刚才看到了每个目录名中,每个目录中啊存放着呃,若干cons q文件,而就我们那个零啊什么的,那就是EQ文件,然后Q文件是commit log的索引文件,看到没有,这是索引文件啊。可以根据Q定位到具体的消息。然后呢,Consume文件名也是20位数字构成的。
05:04
也是由20位数字构成的。然后表示当前文件第一题第一个索引条目的气质位置偏移量,就是和那个E是一模一样的啊,它也是第一条索引,它这个偏移量。呃,与麦cel文件名不一样的是什么?其后续文件名是固定的。也就是说,我第一个文件名肯定是签零,第二个文件名名称。我这里边儿啊,它里边儿的。啊,它里边啊会包含一堆的,你注意啊,它里边会包含一堆的,有很多这样的。文件。这个文件名是全连。那么下一个。那个文件名。它那个文件名称和它里边的第二个文件名名称,它里边第二个文件名名称,它里边第二个文件名名称,以及其他的包啊,第二个文件名的名名称都是一模一样。
06:05
文件名称是固定的,为什么?因为consume q。文件大小是固定的,你注意啊,文件大小是固定的,所以文件名就固定了。啊,这是我们是需要了解到的啊,需要了解到的。呃。那么。我们。为什么说CQ啊文文件大小是固定的,是因为大家看一看我们的索引条目。就是看它这这里边儿每一个格就是一个索引条目。就所以条目大小是固定的。呃。每个Q文件啊,可以包含注意30万个啊,注意是30万个索引条目。每个索引条目包含三个这个消息重要属性什么呢?消息在map file中的天移量。
07:06
Love of。占多占八字节。要消息长度这个就是他啊。谢谢M。M啊,就这消息长度偏移量啊,长度啊都有了啊。呃,然后呢,消息tag的A的值。消息tag的,呃,实际上就是你别管这个code啊,就是就是这个什么消息的tag,为什么我们大家知道啊,我们我们这个tag实际上是什么,相当于二级分类。对不对,相当于是二级分类啊。嗯。然后这三个属性占20个字节,所以每个文件的大小是固定的,是多少。哦,30万乘以24节。30万乘以24节也基本上就是六兆吧,啊,基本上六兆吧,就这个意思啊,那么。
08:08
这里边啊,关于他,嗯,我们需要注意什么呢?我们需要注意。这是我的一个。这里边儿所有的啊,这里边儿所有的这个。呃,我们的索引条目,它的topic消息的topic肯定都是一样的。肯定是一样,因为这是什么,这是一个消息队列。这是一个Q,这个Q里边放的肯定是某一个topic下的,也就是说你看我这是写个QQ这零一二三都是这个topic下。是吧?它里边会包含很多的这个酸性条目啊。所以这是。啊,这是什么,就是一个。啊,一个啊consume。
09:03
秀。啊,文件。所有消息的。Topic。嗯。一定是。相同的。是吧?但是什么什么不一样啊,嗯。每条消息的。T可能是。这是我们。需要注意的,所以我这里边才加了一个什么tag。才加了一个他,你加这个T的目的是什么。加这个tag目的,加这个tag的目的是我在消费的时候,如果我指定要消费某一个tag的,它要在这里边做便利的,你注意到便利就是你这个Q里边啊,我便利这个呃,索引条,我看你是哪个T子,你是哪个太子。诶,这个是我需要的那个tag。
10:01
我的消费他。我从这里边定位到,比如这就是这条消息,我把这个消息啊,具体的内容我给他读出来,我进行消费。所以这里边儿包含了什么,把单独把这个T给你拿出来,就是为了什么消费的时候能够从这里边啊便利它,然后做查询使用的。其实啊,说到这儿。咱们进一步再引申一下啊,如果说你们公司。你们公司啊,这这是很常见的啊,这种你对于这个tag大家注意,对于这个tag,呃,我我比如说这个Q下,我对这个呃tag。这个。消费二对他的消费这个要求效率很高。其实我们完全可以再进一步的。把这个东西啊。再给他分出来。我这个Q你注意我这里边Q,我可以进一步再分我这个Q啊,就是Q加什么,呃,Q里边是又分出来很多的tag,不同的tag,一个tag一个Q,你这样的话,你就完全可以整个我这个Q里边肯定包含的是。
11:14
不仅topic相同,也是相同的。你可以进一步再给他划分,也就是说涉及到对这个Q啊进行一个二次开发。是吧,啊,这是呃,可以进一步引申的地方啊。呃,那么这是关于我们说到这个consume q就说到他啊,呃,老雷就马上想到什么了,想到卡不卡了。呃,所以我刚才又给大家增加了一个东西啊,与卡普卡进行一个对比,毕竟我们说热Q啊,它很多思想都来源于我们的卡不卡。所以在这。啊,我我我我我们把这说完啊,最后再与卡夫卡进行一个对比。
12:01
再说一下,就和这,我们就会发现和这儿太相似了。
我来说两句