00:02
好呃,我们热Q啊安装了也启动了啊,集群也搭建了,那么下边我们就要详细来学习热卡密Q它的。呃,工作原理了,那么这部分内容呢,是重点也是难点,那么面试的时候呢,这份内容啊,我们说问到的几率还是比较高的。首先我们来看啊消息是如何生产的。消息的生产过程啊。那么producer可以将消息写入到某个的某个Q里边。他经历了这样一些过程,首先第一步啊,Producer发送消息之前的。会先向我们的name server。我们知道name里边存放着啊,这个我们的broke是不是要给他注册呀,然后我们创建的时候啊,创建topic的时候,实际上同时也把Q就给创建了,而这些信息也都会写入到我们的name server里边,对吧,我先向name server发出。
01:08
获取什么获取消获取消息topic的路由信息的请求。发出。短一下句啊。获取。获取消息topic。消息topic啊,就你这个消息啊,他的topic的路由信息的请求。对吧。然后呢,你不是给name发请求了吗?然后name serve呢,它会向你返回响应啊,返回该topic的。路由表及博客列表,这两个东西啊,很重要。大家说啊。这两个东西很重要。就你首先要清楚这俩里边包含着什么东西。
02:00
那为什么要给他返回这个东西?那么咱们在这啊。呃,这个详细给大家说一下。好,我们首先来说。这个路由表。然后一会儿啊,我们再来说这个,诶。呃,就这吧,一会儿再说这个博克列表啊,罗表。实际是什么?是一个卖法。实际是一个map啊T。喂。Topic它就就是字符串是吧,呃,Topic名称吧,啊,它就是字符串啊。那么。Value是个什么东西?Value比较复杂。是一个。这个这个这个呃,实例一个叫Q。
03:02
的实例。Q,这样说吧,是实力。列表你注意,关键是列表。呃,这个Q是个什么东西呢?Q塔看名字吧,好像是不是一个Q啊,一个Q塔是吧,Q就对列的数据嘛,不是啊,你注意这可不是,不要这样理解啊。Q。并不是呃,并不是呃一个。AQ。第一个。呃,对应吧,对应的一个。呃,反正老师给大家写的口语化一些啊,那不是那种书面语啊,好理解就行。那是什么呢?而是一个。Broker。
04:01
你注意啊,一个就是一个中。干并不是每一个博它都,它都会给他创建一个Q啊,不是说一个博一个Q。那还有一个东西叫broke data,不是这样的啊。而是一个博客中。该。Q。对应一个。贝塔。也就是说啊,这个东西它仍然是Q,但这个Q呢。是一个worker里边的。有关这个topic。因为这个K是topic它的名称嘛,是吧,有关这个topic啊的所有的Q会对应一个Q。呃。简单来说吧。
05:01
T。只要呃涉及。只要涉及到该。Topic。的。啊,一个。呃,对应一个。行。就这个是属于我们隐身的来说啊。从从这个名声上来说,它叫Q塔。是什么?是一个broke里边这个topic的所有就很多Q会对应一个Q。但这个很多QQ又属于什么?一个broke,所以我们隐身来说就是只要你涉及到这个topic的brokeer。一个博会对应一个Q。哎,这是。我们就答拿这个Q塔和谁和就联系起来了。那么。
06:01
Q,贝塔轴。包含谁,既然是一个ER,那它就有一个Q啊,那那那它就包含ER。Name。Q,带还包含name?嗯。包含博客name。我们能不能这样简单的理解啊,我们这样简单的理解就是。我也不管是这个这个什么啊,简单来说。呃,这个。路由表。的key。Topic名称,这这没啥可说的是吧,然后value则为。所有涉及该。对。Worker。
07:01
Name。就我们简单把它,把它当成什么这个列表,我们就把这个东西当成一个博那列表,这是个字符串啊是吧。那我们就可以这样简单来理解。这个表啊。也就是说啊,大家想一下,我我我我这边啊,我这边比如说我要发送消息了啊,我要发送消息了,诶那发送消息你发送给这,我来了一个啊,我要发给比如说一号Q。微信号,Q。那我就从哪我我就QQ列Q列Q里边找。Q在里边找,那你总得你注意啊,每一个Q总得对应一个博,你得有它的地址才行啊,你现在仅仅有博name,你没有它的地址。没有地址,所以。这时候,哎,这个。列表。就来了。这博客列表你你可不要简单的认为啊,它就是呃,这个这个这个啊一个是吧,博name对应一个地址,可不是这样,比这个复杂。
08:11
The。列表里边放的什么?嗯。七。湿巾也是。一个。也是一个。也是一个map。Key。是什么啊?Key是broke name,而且没啥可说的。但这个value比较复杂。value为。就出现了这这是q data,这是brokeer data,有哥们说那好说啊,Broke data,一个broke对应一个data,你注意。第一个就我说这句话啊。Walker,不一样。一个。Broker。
09:01
这里。对吗?是吧,对吗?啊。不对啊,不对。呃,我们大家知道啊,我们看这个。他这个架构。大盘在这个架构里边啊。呃,这是个大集群。是吧,这是大题,这里边儿包含两个master,两个slave是吧?那实际上他充当的相当于是一个broke,这充当的是另外一个broke。因为master slave这俩里边存放的数据是一样的,Master slave这俩里边存放的数据是一样的。对吧,所以。这相当于一个brokeer,这相当于broker,但实际上这又是个集群,这个集群目的是什么?这个集群目的是是是为了高可用。
10:00
对吧。为了防止数据丢失啊。是不是,所以这是个小鸡群?而这俩worker。它有什么共同的特征?Worker name是相同的。这大家就清楚了。这俩的broke相同,这俩的broke name相同。所以。这大家现在就知道这个意思了。你key是。Value能使他的地址吗?不是,是data,那data是什么?是。一套啊,你注意一套名称为。Data啊,一套名称为。一套。嗯,名称为。Broke her name。一套名称。
11:00
一套怎么说呢?Workerna。名称相同,哎,这样就剩了相同。的,嗯。Master。Slave。注意,我叫小鸡群啊,你知道那个大鸡群是指的什么?小鸡群是什么啊?呃,小鸡群。对呀,一个对吧。这个这个这个。Worker。所以它不是大集群对应啊。他也不是一个broke。啊对应一个,而是一个小集群对应一个,那我们大家知道一个小集群里边肯定包含啊好多的这个这个worker。对吧,有一个,然后多个slave。是不是啊,这个。呃,这这这个。Data。
12:00
呃,博ER data中,呃,这个这个包含什么,博data中。包含。Name。第第一个。它里边还有一个map。还有一个脉风,这个脉风是什么呢?该map的PA。Broker。Value为该。对。这就好说了,它是个map对吧?啊,ID对应的一个地址,ID对应的地址。明白吧?那我们前面说过啊,ID为零。表示。呃,其。表示该。嗯。Master。V0。表示对吧。
13:02
对吧,这是不是和我们前面。说过,东西要对扎一块儿。所以就是路由表。博ER,我通过路由表找到你对应的,找到你这个Q对应的brokeer啊,我通过这个brokeer,我找到你的地址地址,其实我们找的是哪个地址啊。我们找的肯定是master。是不是就找到他的地址了?OK。那这这这个返回的内容我们就清楚了,后边就好说了,然后我们的producer会根据代码里边指定的Q选择策略啊,我们一会要说这个Q选择算法选择策略啊,从特里列表里边,然后选出来一个队列。然后用于后续的存储。那么producer对消息做一些特殊的处理,什么叫特殊的处理呢?我们其实到后边啊,我们在第四章应用的时候也也会给大家讲到啊。比如消费本身超过了40,会直接进行压缩。
14:00
啊,我们这个是要呃要做处理的啊,就是你消息不能超过四兆。啊,超过四兆套对它进行一些压缩,但这个是我们自己做的啊。Producer向选择出的Q所在的broke发出2PC。2P的请求给他发出,它底层是什么?底层ne啊,底层net通讯,嗯,所以这个ne还是很重要的啊,因为net的通讯效率很高啊。呃呃,Q向博克发出RPC的请求,要将消息发送到我们选择出的Q。就生产的过程,你只要清楚了路由表里边。是什么数据?博客列表里边是什么数据?其实这个生产过程。就很清晰了。
我来说两句