00:01
好,下边呢,我们就来看这个工作流程啊,就是对这个图啊,它怎么样怎么样工作的是吧,把这几我们前面说的这几个组建的给它给它啊这个这个这个怎么样协同工作是吧,融合到一块儿,首先啊,我们要启动啊,这个name server,这这个也是我们一会要说的啊,这个启动的过程。首先我们要启动server,然后server启动以后开始监听端口。啊,等待什么?Broker producer和consumer它的连接。因为我是服务器嘛,是吧,所以我在这监听这些端口啊,你们发送这些链接,被这些端口的链接,然后启动brokeer的时候呢?呃,这就是我们要启动brokeer了啊,启动broke的时候,我们的ER会与所有name server建立。并保持常联系,这个我们前面说了是吧,因为这个这个broke啊,它会和每一个name server。
01:05
我们的会和每一个name server都连上,连上以后给他注册呀,对不对。然后呢,每30秒向内啊,定时发送啊心跳包。对吧,啊,这这里边儿这个新料包里边内容我们,呃,前面也也给大家说了是吧,紧接着。在发送消息啊,在收发消息前叫收发,呃。这个这个。可以创建topic,呃,应该说应该这样说啊,在发送消息啊,不是收发啊。发送。消息前可以先创建,也就是说我们这个producer啊,发送消息给他这边发送消息之前呢,可以先创建。然后创建topic的时候呢,需要指定这个要存储在哪个上,注意啊呃,我们在创建的时候。
02:09
就已经指定了你的这个topic。都。呃,这这个topic的消息啊,要写到哪些博客上已经明确的指出来了。呃,一会儿呢,大家看我我我把我这个呃,MQ已经起来了啊,一会儿让大家简单看一下。这是你创建topic的时候呢,需要指定啊,你在哪些博上,不光要指定在哪个broke上,你在这个上。创建了几个Q。他也要指出来。当然在创建topic的时候,也会将与的关系写入到name server里边,也就是说这个name有个有个什么,有个映射表啊,有个映射表里边放的什么,放的是我这个topic。
03:00
我这topic啊,都在哪些上,它有这样一个map。哎,这边是topic key是topic value呢是我们broke ID。啊,这个brokeer这个ID了,博地址。啊,其实不光博地址啊,还有这个博上的什么Q。Q的数量啊,那么不过这这步是可选的,就是你你你发送消息直接发就行了,那不创建也行,也可以在发消息的时候呢,自动创建topic。呃,我们来看啊,Producer发送消息启动时先跟name server集群中的一台创建产品机,就是我这里边啊。因为我这边肯定配着name server的集群地址呢,那我们前面不是给大家说吗,这是client嘛,我把这个集群地址我怎么获取的呀。我怎么获取,是不是先随机选一个,随机选一个以后,如果我给他建立建立长链接,如果失败了是不会论询再选下一个,我们前面说过了对吧,所以我在这呢。
04:12
从里边选一个啊,我先给它创建长链接。并从name server里边获取录由信息,这个路由信息是什么?就是这样。你他这边注册的嘛,就你的topic和地址,就把这个路由这当前发送的topic的Q。We broke it。当前发送topic的Q与。呃,当天发送与地址,这个我们大家需要注意一点啊。其实确切的说是当天发送的Q,呃,这个这个。确切的说是当天发送消息的Q。因为啊一个topic,比如说我们之前给大家说了,他他在我前,我们前面画那个图不就是这个。
05:03
说我我这里边啊,这个嗯,这个集群里边有好多brokeer是吧,好多brokeer,每个brokeer里边不是有。有这个。Q是吧,比如这这都是Q啊,有五个Q,那这边是我的生产者,我生产者生产的消息啊,他是按谁分的,不是按。这个这个这个平均分的。是按什么分的啊,是按我们的Q分的,所以他在发送消息之前,他其实就已经知道我写到哪个Q里边了。他在这儿会做负载均衡。对谁对这五个Q做负载均衡?而不是对三个博克做发展均衡。知道吧,所以八大银行啊,比如说这个结果是零是吧,啊零零,那那那我就发给他这是零号是吧,零号broke。
06:07
啊,一号二号是吧,哎,我就发给他了,然后呢,再算下一个我就发给他了,再算下一个我就发给他了。那你想想你发给这些Q的时候啊,就他在发送的时候就已经知道发给哪个Q了,而这Q是在具体的哪个broke主机上的,所以。即发送前的Q。Topic q就你topic的消息的Q是吧?Topic发送的topic。消息到Q,你就Q你broke地址,那我就找到这个broke地址,然后就选进去是吧,然后根据算法策略来从中选择一个Q。给你上,因为我这一个博客里边可能有多个Q。是吧?啊,我选择选择一个Q呃,与队列中的呃所在的brokeer建立长连接,然后从brokeer,呃,从而向ER发送消息。
07:06
当然在获取到路由信息以后啊,我们的会首先将路由信息缓存到本地啊,肯定要先缓存对吧,然后呢,更新啊,每30秒我更新一次,对不对,就我们的pro。Consumer。呃,Consumer是这样的consumer啊呃,他说跟producer差不多啊,类似其中啊,跟其中一台建立强连接以后呢,获取到呃,获取其所订阅的topic路由信息,它一样的获取到路由信息,然后根据算法从路由信信息表里边啊呃获取到所要消费的Q,然后直接与博进行连接。啊,因为他们本地啊,其实都是有什么,都是有这个路由表的啊。啊,获取到这个这个这个Q连接上,然后开始消费其中的消息,可能那边在获取到路由信息以后啊,同样也会每30秒更新一次。
08:08
不过这有个不同,不同点在于哪啊?在于我们考ber还会向博克发送心跳。呃,Producer不用发心跳啊,发完了就行了,是吧,需要发心跳。确保什么worker,他是活着的,因为我要从里面读数据,消费数据的。这是它不同的啊,这这是我们整个这个工作流程啊,大家先简单了解一下,我们一会儿啊给大家把这样说一下,就是这这个里边的关系啊,这个里边关系还是比较复杂的,就是我们这个topic和Q。和Q啊之间这个关系啊,稍微有点复杂,我们一会再说。
我来说两句