00:03
呃,我刚才说了啊,这个东西,呃,有点麻烦,麻烦到哪,大家看这什么写队列数量,读队列数量。写队列独队列,怎么怎么还分写队列独队列呢?呃,我们说啊,关于这个,呃,Q里边这个队列啊,它实际上是分读和写两个,但是本质上啊,你注意本质上是同一个队列。什么意思呢?呃。这这样吧,嗯,我把这儿啊,我把这儿给大家。这样这样整理一下这个笔记啊,具体流程是吧。这什么?这是。那这个就是五是吧,呃,这个。
01:03
我把它搞出来。我刚到这。呃,这个我们弄一个叫什么。嗯。Topic的创建模式,这样逻辑上啊。大家更清晰一些。是吧,这样更清晰一些啊,所以这个。这样更清晰好了。Topic创建模式,那这这个就。不需要他了。是吧,啊这样。好。那现在我们再再来说一下什么呢?读写。队列问题。
02:05
读写队列问题啊,呃,这个读写队列啊,就是我们首先要清楚一点。就是写队列和读队列是同一个队列啊。它是逻辑上分成读写队列的,实际上读写队列是同一个队列,从物理上来讲啊,都物理上。嗯,来讲。嗯。读写。读写队列是。等于一个。对不对。所以它就不存在什么,呃呃,这个这个不存在同步的问题啊,所以。啊,不存在。读写队列。呃,数据同步。因为他们本身就是一个对吧,首先大家要清楚这一点,那这个读写是怎么分的呢?它它是逻辑上分的。
03:03
呃。读写队列是。罗。逻辑上。嗯,进行。区分的。概念。概念。概念什么意思呢?比如说啊,我们举个例子,一般啊,你要注意一般情况下读写对的数量是一样的。这大家需要清楚啊,一般情况下,呃,读。写。队列。呃,数量是相同的是吧,但是我为了让大家能够好理解,我们说不同的情况,举几个不同的例子。比如说啊,我创建的时候。我创建的这个斜对列。比如说我这个写对了啊,我我写的八。
04:00
我这个啊,我写的四是吧,1814。Yeah。什么意思呢?那那那就是说我们的生产者在生产的时候,你注意啊,这个八,这个四这俩数谁打八呢?所以系统会创建八个队列,呃,这个我们先要先要清楚它创建队列的数量是按照谁大。呃,我给你创建几个。那么他既然大,我就差你八个,这八个有编号啊,这八个队列有编号啊,这个Q是零到七对吧。我生产的,生产的时候我就把消息写到这八个里面。就没有问题的。那你读的这个是四,那什么意思。他只会读我们的消费者,只会读零到三这四个队列里面数据。也就是说,我们的五到七这四个队列表数据是不会被读到的。
05:00
你这这是不是就有区分了。对不对,你看啊,我给大家写一下,例如。呃,创建。TOPIC10呃,设置的这个写队列。呃,数量为八,呃,独队列数量为四是吧?呃,此时系统会创建。会创建。八个。Q。我乘你八个。啊。分别是啊,这个零。呃,零零到七吧,零。这样吧,1234567是吧。分别是这么多啊。呃,然后呢,我们的这个这个。
06:00
Producer会将消息写入到。呃,这八个队列,因为你你指定的写队列是八嘛。Consumer只会。消费谁呀?0123。0223。四个。类。是吧,然后呃,34567。中的消息是不会被。消费到到。哎,这这是什么,这就是我们不一样的情况是吧,不一样的情况。当然我们还可以再做拷贝啊,未来再入。呃,节省时间啊,我穿这个这个设置队列,呃,写队列数量是几是四。
07:04
读18,你看就会出现什么,这时候系统会串进几个队列仍是八个,谁多我串进几个是吧,然后分别是0.7,然后producer会将消息写到哪啊。零。道三。这几个,这四个队列。但consumer会消费谁?会消费。零到七这八个。这种的消息。但是。4567中。是没有。有消息。那有哥们说没有消运,那不是不消费吗?不是啊,不是这样的。没有消息。
08:00
他不是不消费,是没消息可消费。呃呃,比如说啊,此时,呃,假设。假设这个consumer group中包含两个。Consumer。是吧,那一。消费0123。Consumer。交费什么?2456。对吧,他这样分的。但但这里边儿这个。但实际情况。二。是没有消息的。
09:01
小。对不对,实际情况他他就没有消息,但你不能说他没有消费,我消费了这里面没消息。明白吧?呃,这是我们我我们需要需要啊,理解的啊,需要了解到的,当然我们说了,一般情况下读写队列是一样的,它是一样的。那那有哥们就说,那你为什么要这样设计啊。是吧?我们发现读写队列如果数量不一样,这两种是不一样,你不管谁多谁少,最终都会出问题。是吧,啊,你你如果写的多读的少,那有一部分数数据下载不到的。你要是读的,呃,这个这个呃,写写写写的少,读的多,那有一部分考哥们是资源浪费了,他不消费,但是闲着呢。是吧,对不对啊,我我写上也就是。
10:02
说。呃,当。读。写队列数量设置不。同时。嗯。总是有。问题的是吧,所以这出现了出现的出现的我们的问题是什么?嗯。明白吗?为。为什么要?这样。设计。为什么要这样设计?其实这样设计的目的啊,来给大家写一下。七。这样设计的。目的。是为了什么?方便。Cute的。Sorrow。注意方便。
11:01
Topic的Q的什么意思呢?呃,咱们举这样一个例子啊。举这样一个例子,大家看。假设啊,呃,数稍微大一些吧,比如16是吧?啊,这个这个16啊,原来都是16啊,那默认不就是16嘛,原来都是16。我现在就是生产者生产消息啊,没有那么大数据量。所以我就因为它每一个都占占系统资源的,每个队列都占系统资源的呀,所以我现在先给它变成八个。把这个Q给它变成八个,那你要改变八个还不能丢,你原来的消息还不能丢,你怎么给设计错了。怎么做能完成?你思考一下。你思考一下啊呃。举一个场景啊啊。例如。
12:00
一个场景什么呢?啊,我这儿写着你在想着啊,原来创建的。中包含。16个。去。如何能够使其?Q。缩绒为。Father。啊,还不会。丢失,呃。消息。怎么做?这时候就可以这样做,大家看一下啊。呃,我们首先要知道啊,这些配置是可以动态,可以动态修改的啊。这些配置都是可以动态设置的,哎,我们这时候啊可以。动态修改,先改谁写队列?苏联。把他先变成八,那它一变成八达达先呀,意味着什么?意味着生产者他就会给。
13:04
前八个零到七,前八个里边写数据。对不对。呃,我们注意啊,这个读队列数量。不变啊,我对这数量不变。此时新的消息是不是只能。写入到。八个对不对,是不是。但是因为你读队列数量不变是吧,所以。而而这个这个这个消费。这。消费的。缺失多少个,是不是16个。16个队列。数据对吧。然后我们我们的这个这个O是吧,啊当呃发现。
14:01
当发现,嗯。后八个。这个这个这个。Q中的交。消息消费完毕后,这时候是不是就可以。再将什么?队列。数量。动态。设置为G吧。你看一下整个过程,是不是我们整个缩绒过程现在已经读写都变成八了啊,是不是已经缩容完成了。是不是整个缩容过程?就是没有。就是认可。消息。对不对,整个缩人的过程没有丢失任何的消息。这就是他这样设计的。
15:01
这个这个目的。对吧,你设计的实际很巧妙,所以给大家说了,呃,我们这个读写队列实际上是什么?是逻辑上的,它不是物理上的,物理上就一个队列,所以它不存在。同步的问题啊,然后这有个per啊,这个P是什么意思呢?就是你现在创建这个topic啊,你当前创建的这个topic。就这topic它的权限,大家可以对它进行什么操作啊,它的值啊是246,呃,如果是二表示是只能写不能读,四是只能读不能写,六是读写权限啊,这个你了解就可以了啊。Per用A。设置对当前创建。操作权限。
16:00
权限。嗯。二表示指。止血啊,四。表示。制度。六。表示。写是吧,说所以人默认的什么,默认是六啊,默认是六。好,那。这个大家清楚了以后。打再重再看。啊,就是我们这个这个这个topic啊,它的创建啊,这里边创建过程你你也看到了,你是不是我创建topic的时候就知道它有多少个Q了。所以我们。我们这边是吧,你看,嗯,创建topic指定在哪个broke上,这里边要写入,把它把topic和broke的关系写到name serve里边。啊,他和ER的这个关系,而brokeer里边是不是包含Q。是不是包含Q?
17:01
所以你那个注册信息啊。啊,那个路由信息里边包含什么,包含topic地址和Q数量。对不对,Q的数量。这大家应该对这个整个流程啊,就比较清晰了。
我来说两句