对于工作了几年的加瓦程序员,消息中间键是面试经常被问到的问题,一般面试官会根据你的简历和你了解的 mq 产品来问问题,所以面试之前你也不用把每个消息对列产品都准备一遍。 目前主流的消息对列产品有 ruby democo、 rocky democo、 卡不卡和 pasa。 比如下面的这个 rapidmoco 的问题该如何回答呢? ruby democo 的消息是如何进行路由的?好,那首先我们看一下 rapidoco 它的整体结构,有一个发布者,有一个消费者,中间是我们 ruby democo, 那么它里边有一个交换机, 然后有一个对列,那么交换机和对列之间啊,有一个绑定关系。好,那么有了这个整体结构以后,那专门扣的消息是如何进行录? 首先第一种情况啊,是最简单的一种情况,我们有一个发布者,有一个消费者,然后我们发布者把消息发布到对面上,那么这个时候没有指定交换机,它采用的是默认的交换机。 那么第二种情况就是我们有一个交换机,有两个对列,那么这两个对列呢,都和我们这个交换机进行了绑定,所以这个时候我们发布者发送一个消息的时候,这个消息会录入到这两个对列上, 也就是只要这个对列和这个交换机绑定了,那我们发送者发送消息的时候,交换机就会把这个消息分别投递到这两个对联上。好,那下面我们看一下。第三种情况, 我们有一个交换机,有两个对列,那么这两个对列和这个交换机之间的绑定关系是通过一个路由键进行绑定的,比如说上面 这个对列和我们交换机的绑定是通过一个 iro 这个路由键进行绑定,那下边这个对列和交换机绑定,它是用了 infoiro 和 woni, 哎,用这三个键进行绑定的,那我们现在比如说我发一个消息,如果我是用 iro 这个路由键来发送消息, 那这个时候他就会投递到上面这个对列和下边这个对列。因为上面这个对列是通过 lr 和交换机绑定,下面这个对列也有一个 l 这个路由键进行绑定,下边对列也和交换机用 lr 进行绑定了。所以此时我们通过 lr 这个路由键发送消息的时候, 它既可以投递到上面的对列,也可以投递到下边的对列,那现在如果我用个 infor 来作为路由键发送消息,那这个时候这个消息只可以投递到下边的这个对列上。好,那今 接下来我们看一下第四种情况,就是我们有一个交换机有两个对列,那么这个对列和它绑定的时候,它采用的录入键,哎是新号,点 orange 点新号, 那么这个呢是一个正则匹配信号,代表一个单词,所以我们这个路由键就是中间是 orange, 前后分别有一个单词,如果你满足这个路由键,那么这个时候就头对到我们上面这个对列, 比如说我们下边的这样一个路由 k, 它就满足这个路由键前面一个单词,后面一个单词中间是 orange, 那么你通过这个路由键发送消息的时候,就投递到我们上边这个对列。 好,那我们看一下这样一个路由键,他刚好满足我们这个路由键,所以你通过这个路由键投递消息的时候,他就会投递到我们下边这个对列。好,那我们看一下下边的这个路由键,我们的井号是代表多 多个单词,所以我们这个 lazy 后边有多个单词,那么这样的话呢,他就满足这个路由键,所以我们通过这个路由键发送消息的时候,他就会投入到下边的这个呢对列里边。好,那么这是我们第四种情况, 那么第五种情况就是我们这个图,我们有一个交换机,有两个对列,那么交换机和对列之间的关系呢?它是通过一个头部属性来进行绑定的,那么只要你这个头部属性满足这两个键值对的要求, 那就投递到我们上面这个队列,满足下边这两个键字队要求,就投递到下边这个队列。 那比如说我现在我在消息的这个头部,我设置一个 type 等于 s state 是等于零,那这个时候他就投递到我们下边的这个对列,当然他的这个头部匹配,他有 完全匹配,就是所有的键和值都匹配,还有任何一个键值匹配,那现在我们这个情况是所有的都匹配,还有种情况就是我们只需要有一个键值对匹配,他也可以投递,也就是说 type 和时代的只要有一个匹配,我们就可以把消息投运到这个对接上。 哎,那么他也有这种情况,有完全匹配和任何一个匹配。那么以上呢,就是我们 rumble co 的消息啊,是如何进行路由的?
粉丝3.8万获赞28.7万

哈喽,大家好,我是麦,今天分享的这个面试题,一般互联网公司会用它来考察三到五年经验的求职者 ibatimq 的消息如何实现路由。 ribetimq 是一个基于昂科协议实现的分布式消息中间键, 他的具体工作机制是,生产者把消息发送到 ibtmqbroker extend 销换机上,再把收到的消息根据路由规则发给绑定的队列区,最后把消息投递给订阅了这个队列的消费者,从而完成消息的一部通讯。 其中 ac 是一个消息交换机,他定义了消息陆游的规则,然后可又表示消息的在每个消息可以根据陆游规则陆游到一个或者多个队列里面。而关于消息 的路由机制核心总监他负责接收生产者的消息,然后把消息路由到消息队列,而消息的路由规则由 extent 派和 fanning 决定。生产者发送消息的时候需要声明一个 potent 路由键, extend 拿到 potent 之后,根据 potent 和路由表里面的 fantent 进行匹配, 而匹配的规则是通过 hki 来决定。在 rabbitamq 中,有三种类型的 ek, 分别是当然 烦恼和 top 的,也就是高挺踢和搬顶踢,完全一致,但那这种方式不会基于高挺踢来匹配,而是把消息广播给绑定到当前和天上的所有队列上。 topic 根据高顶替使用政则表达式进行匹配,符合匹配规则的 q 都会收到这个消息。好了,本期视频就到这里,我是麦,如果你想看更多的召唤面试题分析,记得关注我们,下期再见!

一个应届城区面试可能没有什么实战经验,今天呢,被问到一个这样的面试题,说 rapidmaker 是如何去实现消息漏油的,他一下子竟然不知道如何去组织语言了。那今天呢,我给大家分享一下我的理解。另外呢,我把往期分享的视频全部整理成了一份了二十万字的文档, 后续还会连更,希望能够以此来提高各位粉丝的通过率。想获取的小伙伴可以在我的个人主页简介中找到。 rapid 两百 q 呢,是一个基于 a m q p 协议实现的分布式中间键。那么 a m q p 的具体工作机制呢?是这样的, 首先生产者把消息发送到 rabbimenco block 上的 ex 千级交换机上, x 千级交换机会把说出的消息根据路由规则分发给绑定的队列。最后呢,再把消息投递给订阅了这个队列的消费者,从而去完成消息的异不同性。其中 x 禁止交换机呢,就可以去定义这个消息的路由规则,将消息去路由到指定的对列,然后对列呢,就是消息的载体,每个消息呢,可以根据路由规则路由到一个或者多个对列中 完全 rap。 m q 路由的核心的组件是 exchange 交换机,而消息的路由呢,又是由 exchange 类型和帮点来决定的。帮点呢,是表示建立在对列和交换机之间的一个绑定关系,那么每个绑定关系呢,会存在一个绑定 key, 通过这种方式呢,相当于是在 x 线级交换机中建立了一个路由关系表。在每个生产者发送消息的时候,就需要声明一个 roting key, 也就是路由键 x 近景呢,拿到我们的 roting key 之后,就根据 roting king 和路遥表中的绑定 k 进行匹配,而匹配的规则呢,就是通过 x 近景类型来决定的。那么在 rap m q 中 默认有四种类型,常用的有三种,分别是 director, 分了 out 和 topic。 首先来看, director 叫做直连,也就是说是完整的匹配方式,它需要 rotate key 和 bonting key 完全一致,相当于是点对点的发送。 如图所示,如果发生了 rotting key 为 supreme 的消息,只有一个队列能够接受这消息。第二个呢,是 topic, 叫做主题,那么这种方式呢,是通过设置通配符来动态匹配,类似于政则,就是用 rotting key 去匹配 bonding key。 那绑定 k 呢,支持两个通配符。井号呢,代表的是匹配零个或者多个单词,星号呢,代表的是匹配不多不少一个单词。另外呢,绑定 k 是用点来隔开两个单词的,所以星和井呢,就相当于是正则表达式的一个作用。如图所示,我们有四个队列呢,绑定在托比的类型的交换机中, 而且呢,使用的是不同的绑定键。那如果我们发送的 routing game 为旧鸟点 a b c, 点 j v m 的消息的话,那么只有一个队列能收到消息。那如果我们发送的 routing game 为生鸟点内体的消息的话,第二个队列和第三个队列都能收到消息。 第三种呢,翻来 out 叫做广播,这种方式呢,是不需要设置多听题的,而且呢,他会把消息广播给绑定到当前 x 键启上的所有的对立上。如图所示,我们只需要发送消息到翻来 out 的 x 键启上,那么三个对列都能收到消息。 目前主流的分布式中间键常见的有 rap m q 卡不卡和 rock m q, 有的同学呢,可能对卡不卡比较了解,有的同学呢,可能对 rap m q 也比较了解。不过在 miss 的时候呢, miss 官一般会问,你用过的就是左键,我们可以通过 miss 的过程推引出你的学习能力以及对技术的掌握能力。这个方面呢, 能力如果还不错的话,我们接触一个新的 mq 的组件所消耗的学习成本也会比较小。我是被编程耽误的文艺汤,如果我的分享对你有帮助,请你动动手指,一键三连分享给更多的人,关注我,面试不断!

嗨,大家好,我是麦克,有十四年的家网开发经验,现在是顾泡科技的联合创始人。今天我要给大家分享的是一位粉丝在面试一家知名互联公司的时候遇到的问题,分布分表该怎么设计?分片后期如果需要扩张表,如何制定路由规则? 今天我就给大家分享一下这个问题的回答思路,以及这个问题背后的工作原理。关于这个问题的文字版本回答,我已经整理到了一个三十五万字的面试文档中,这个文档还涵盖了很多大场面试题以及场景题的分析和完整的回答,正在准备面试的小伙伴可以在我的评论区的置顶中去免费领取。 这个问题主要考察两个方面的知识,一方面是数据分辨策略的设计,包括分库分表的原则,常用的分辨方法等等。另一个方面是关于数据库的扩容问题,如何在数据增长的过程中去灵活 调整数据的存储和路由规则。数据库分片是大规模、高并发、高数据量的互联公司必须要面对的问题。随着业务的快速增长,单个数据库可能会遭遇到瓶颈,这个时候我们就需要进行分库分表。分库分表以后啊,数据存储在多个数据库和表中, 这时候啊,如何去设计分辨策略,使得应用程序能够快速的找到所需要的数据就显得非常重要。另一个方面,随着业务的不断发展和数据量的不断增长,可能需要对数据库进行扩容, 扩容以后,原来的路由规则可能不再适用,需要设计新的路由规则,并且需要对原有的数据进行迁移,这一部分内容可能就涉及到一些数据库中间键,比如说 my cat 写的 gdpc 等等。面试官通过这个问题啊,主要是想去考察你是否理解数据库分片和扩容的原理,以及你是否具备 解决实际问题的能力。下面我们来看一下这个问题的回答。首先啊,在设计分库分表的时候,我们需要考虑几个因素,第一,根据业务特性来进行分库分表,比如我们可以根据用户 id 来分,也可以根据地理位置来分,也可以根据时间来分, 主要取决你的业务特性和查询的模式。第二,我们需要选择合适的分片算法,常见的算法有一致性哈、吸取模范围分片等等,我们需要根据业务特性和数据分布的要求来进行选择。 第三,需要考虑数据和负载均衡,我们希望每个分片上的数据量和访问压力尽可能是均衡的。然后如果后期需要扩容,比如说从原来的八个分片扩容到十六个分片,这个时候我们就需要进行数据迁移和路由规则的修改。数据的迁移过程啊,需要保证服务的高可用,不能影响线上业务。这个时候我们 可以使用一些数据库中间键来帮助我们做这个事情,比如说像 my cat 限定 gdbc 等等。至于制定路由规则,其实就是制定分篇策略,大部分的数据库中间键都支持制定分篇策略, 只需要实现对应的接口去输入分片键,输出对应的分片,就可以实现自定义的路由规则。总的来说,设计分片和进行数据库的扩容是一个需要根据业务特性、 数据特性以及当前系统状态的综合考虑的一个问题。以上呢,就是我对这个问题的一个理解。

什么 get 为你还没用过? get 为是个什么你总听过吧? get 为是一个网关,说白了就是个看大门的。我们想要访问一个服务,并不是所有人我都放心,给了小费或者有 vip 的才可以访问。 总之,普通员工我要管,管理员我也要管。这就是 get 皇权特许核心功能,全线控制,建立负载均衡。话不多说,创建 get to a 服务,首先引入 get to a 坐标依赖编写启动类 get to a application, 最后配置路由规则, 重新启动看效果。当我们满足创建的路由规则,他就会将请求路径转发到指定的二维。可以看到,转发到了 uza sermos 服务上,当用户发起请求回来到 get 位, get 位会根据路由规则进行判断, 通过规则的再由负载均衡转发到指定的微服务上,不负责规则的则请求失败。这样一一个简单的 get 为网关就做好了。

我们来看一下来自美团的一道 rock and q 的面试题,什么是路由剔除? rock and q 如何进行路由剔除这道面试题呢?薪资是二十五 k, 岗位呢是高级开发。 首先我们要知道啊,什么叫做剔除,就是有可能我们在使用 rock and q 的时候, your name server, your broker, 对不对?然后 broker 在处理的时候,有可能它发生荡极了, 发生当机之后,有个问题,就是我们的生产者也好,消费者也好,他去拿取对应的路由信息的时候,是根据 nameso 当中去拿的,并且是每隔三十秒去拿的。那么问题来了, ok, 在这段时间,如果这个 broker 发生档机了,对不对?发现我已经发生档机了,这种情况,下面我是不是要把路由进行剔除呢?那么在 rocken q 当中,它的路由剔除是它使用了一个定时任务,每隔十秒钟我会去扫描我们存活的一张哈西 map 啊,称之为 broker nine 我们的 table 啊, 那这个 table 里面呢,它会去检查上一次心跳与当前的时差,就是这一台 broke a, 如果说他的上一次心跳与目前的这个时间差了一百二十秒以上,那么我们就认为这个 broker 他可能已经棒积了,所以他就不可用了,所以就会把相关的 broker 的相关的信息进行一个移除。 那当然呢,我们的 producer 啊,每隔三十秒就会去重新拉取一次我们相关的路由信息,所以呢,这样呢,就完成了一些路由信息的剔除。 当然问题来了,因为这个地方它的检查是每隔十秒钟扫描一次,对不对啊?它的扫描频次呢,不会很高,另外的话呢,就是它要超过一百二十秒, 就假如在这个一百二十秒当中,我其实已经早已荡机了,这种情况下面会不会有问题?其实也不会, 因为最终呢,你进行消息发送也好,进行消息的消费也好,都是站在我们的客户端直接去向我们的 broker 进行发送或者是进行消费。而我们的这个路由信息是先从我们的 lamsoft 当中去拿,这个地方有一定的食言,但是问题不会很大, 因为他无非造成的就是发送不成功,或者是消费不成功。但是只要说达到了这样的一个间隔啊,比如说超过了一百二十 啊,然后我在 nemosover 当中把你置为不可用之后,那么在我们生产端,比如说进行消费的重试,或者是进行消息的重试,依然可以把 对应的信息进行处理。因为你这台 broker 如果说放弃了,我们还有集群,我们还有另外的主,甚至我消费的时候,还可以从从节点上面拉去进行消费, 所以这就是我们刚才这道面试题。什么是路由剔除?路由剔除的本质就是说当我们的服务期档期了或者不可用呢,要把它从我们的 name server 当中剔除出来,然后 room q 如何使用路由剔除?使用的是定期扫描,间隔时间超过一百二十秒 啊。另外的话呢,同步到我们的生产或者消费的话,他也是一个每隔十秒的定时任务,从客户端进行拉取。所以呢,这就构成了整个面试题他的一个整体回答的思路。

该特位在引入呃那个死猪的中心之前呢,我们先看一下就是他的 equator 啊,这个 aquatus 是那个 sevenboot, 他本身就带了一个东西,你引入他之后呢,就可以给予他实现一些呃这个 一些程序上控制了一些功能,然后很多的 span, bold 的中间键呢,还有 step, include 的中间键默认他都是给实现了很多的一些程序控制功能 啊,他引入也比较简单,比较简单就是说,呃他先是引入一个这个包啊,引入这个包,然后嗯再再配置文件里边把这个打开启用啊,就可以呃来呃调用他的一些接口来看实现一些 功能,然后他的一个路径呢,都是在 iqa 的,然后该他位就是该他位这个路径下,这是一些他已经实现的提供的一些路由功能,就是你可以通过这个接口来看这个该他位有效的 fiute, 然后还有他的 rota 这路径,还有刷新他的路由之类的啊,这个呢就是方便以后我们接入了注册中心啊,我们把配置中心也接入了,把这路由配置放在配置中心的文件里边, 那我们修改了之后呢,他其实是可以实时的更新路由的,就不用每次重启啊,方便我们看这个路由有没有更新呢,所以说我们就打开这个东西,但是在生产上打开这个东西其实是有点危险的,你看他是可以有这个删除路由的功能的,所以说如果你生产 要打开这个东西呢,你要在安全层面做好防护,就是说不要把这个给他们的这些陆游直接暴露出去啊,就不要让外部的呃一些, 那可以访问到这些呃相对的一些操作的一些接口啊,那我们来看一下啊,来看一下,首先就是说, 呃,把这个打开他的这个啊,打开他的这个引用依赖, 然后引一个依赖,然后把他的柱界放开,那这样其实他就是可以了啊。然后我们来看一下他的这个安顿,困难的一个累啊,就是说他 其实是这边播的,有很多安顿胖的,我们看给他喂的,所以说我给他喂的,然后我们可以看他,你就在这定位一下,就能找到他这个类。然后他是有两个实线啊,有一个抽象, 嗯,他的那些主要的呃接口的一个实现呢,其实是在这个抽象类里边,对吧?这是呃上边没有那个该单位的相对路径啊,这是他的一个 接口的一个地址啊,包括下边你像 pose 的迪丽塔,盖塔的一个,这些操作都是有的。然后他下边的一个实现呢,就是有这个盖子,用这个 reis 的 ctrl 的 ngpong, 他俩实现了他的接口暴露,这是暴露的该位的这个路子下, 就是把上面的覆盖类型啊。好,我们来启动起来看一下啊,启动起来看一下, 呃,这是已经有一个八零八六的端口了, 换一个 八零八三的, 他启动起来了,然后我们看一下啊, 然后他的路径是 coatqa, 然后 ktv 是这个路径吗? ok, 可以啊。啊,就是这就是获取到了我们这个该他, 因为他下边有效的这个路由,我们可以看一下这个路由呢,我们是在配置文件配的,对吧?然后我们看看他的在这里边可是画一下 啊,就是通过这个就可以看,这是他的断言,如果他 id, 然后 failure, 还有他的这 failure, 他是有个顺序的啊,就按顺序执行,还有他的 uri 啊,这些东西,你就可以通过这个来看啊,然后其实基于这个东西呢,我们其实是可以做一个该特别陆游的一个管理的一个功能的 啊,如果有需要的可以给予这些接口来做一个路由的管理,就是对路由的增产改的一些啊, 下面我们再看一下,就是引入 nikes 注册中心,就是可以通过为服务的 hb 协议啊,通过他的为服务的这个注册中心来做一个负载的一个调用。 这个呢就是前面和我们做粪掉用的配置,配置是类似的,首先说他是需要把这个阿里巴巴的这个依赖引进去啊,阿里巴巴的这个,呃,就是引到这个依赖管理里边, 然后呢下边就是说他需要引入一个迪斯卡瑞啊,迪斯卡瑞就是注册中心的一个依赖包,然后 然后我们刷一下啊,刷一下啊, 这是有了是吧?有了之后呢,我们要是往注册中心注册服务呢,其实是需要一个应用名的啊,没有应用名他是注册注册的时候会报错,所以说我们打个应用名,这个应该就是达到了一个最基本的一个注册中心的一个注册的一个条件了啊, 然后我们启动一下, 嗯,这启动起来了,我们看看最上边呃漏的, 看看这个注册中心吧, 我列表啊,这就已经注册了一个服务商, 看这是 ip 还有这个端口啊,然后,呃,我们有了这个注册中心呢, 他是在同一个,在同一个命名空间上边是命名空间,在同一个分组下的,这个微服务之间,他是可以通过这个 lv 协议去调用的 啊,就是欧判分的,他也是在同一个命名空间,同一个分组下啊,是可以相互调用的,都是一个规则。这是我们原先写的一些啊, 前面视频做视力写了一下,那我们就把这个 hello 都给他改一下,一会改成 lblb, 这应该是 英雄名。 这个不会自动刷路由,应该我们可以看一下啊,他应该是不会自动刷路由的, 他也我们可以看一下他的陆游是哪一个啊?把它烤出来吧。 哈喽的路友啊,应该是这 这个啊,你看他是 ui 没有改过来,所以说他是不会自动刷路由的啊,所以说我们需要重启一下啊,重启一下, 我们再来看一下啊, 嘟的 hello 的,然后 他的游玩还是 这 lb 啊,这个这是已经刷过来了,对吧?这是 lb 协议的,然后呢,呃,我们就去调用一下他的这个接口啊, 啊,这就通了是吧?这就是说接入注册中心之后,然后呢,他的屌用呢,就是通过可以通过 这个为服务的 lb 协议区啊,就是鲁德班这次啊,就是这个协议去做这个陆游了。行,那下面我们看一下这个 啊,怎么样接入配置中心,然后可以动态的修改路由。呃,接入配置中心呢?其实就跟前面讲的那个奥喷喷的这种项目接入配置中心是一样的。呃,我们看这个森特是吧,就是需要把这个 咖啡哥这个依赖引进来,咖啡哥的依赖引进来,然后刷新一下啊,另外配置中心也是需要打开他的配置的,另外需要有一个配置文件类型的制定啊,这是标准的一个 配置,然后我们把它烤过来, 然后他盖的位置没有这个康泰斯盘子差啊,然后这 是改一下应用名,改一下应用名,然后在这呢,那这个应用名就没有用了,对吧? 然后配置中心的文件呢?他最好是要有一个环境啊,就是说你是第一位还是测试还是生产这个呢?我们就来一个第一位, 然后我们可以先看一下这个把它拆开的一个效果,就是说把 不同的环境的配置给它拆开,然后我们可以把这个可漏的这个将来我们是要移到 移到配置中心里边去的,我们把它从这删掉 啊,这个呢是重复的删掉,我们先用这个配置看一下效果,这个应该是结果是一样的啊。 嗯,我们看一下他的路由,哦,还是那些路由,对吧?这就说明这个是一样的。然后我们需要 在配置中心里边给他新建一个配置,他的规则呢?我看以前我们视频里面都有讲啊,就是说 应用名加上他的 poftwo 的一个变量,然后,呃,这个配置文件的类型呢?是在文配置文件指定的, 就是在这指定的默认他是 partyc 的啊,所以说如果你想用,要么个事,你说你要指定一下,那我们就把他的这个配置敲过来,敲过来,然后发布一下, 然后就有了这么个配置,然后这个配置呢?那我们这个这个配置就可以煮掉了,对吧? 住掉了,然后这样我们启动的时候呢,它加载这个配置,然后也可以把路由加载进来,我们可以看一下。 嗯,好,然后我们再看一下他的这个路由啊,加载进来了,对吧?那怎么样是动态配置呢?你就比方说啊,我们把 我们把他的路由删一下,对吧?删一下,比方说我们把百度这个删掉,对吧? 发布一下,然后我们再看一下, 第一个是 hello 的,是吧?百度的那个就没有了吗?对吧?没有了。然后那我们比方说把这个路由给他改一下,比方说该他为二,我们把这改一下, 那我们再看一下这个路由配置的信息,就变成 get 为二了,对吧?那我们调用的时候呢?就是要用 aps 刚给他为二去调,这就是一个动态的一个路由,呃,包括生产上他也是可以动态修改的一个 啊。好,那我们今天对于这个该台位接入配置中心、注册中心,另外就是动态修改。陆游啊,就讲到这,另外。

我们来看一下这道面试题,什么是路由发现? rom q 如何进行路由发现?这道面试题呢?来自于字节跳动,薪资是三十 k, 岗位是高级开发。首先你必须要去了解 在我们 reconco 当中啊,首先的话,无论是生产者还是消费者,对不对?他都会去我们的 nam sover 当中去根据 topic 查相关的路由信息。那么涉及到刚才的一个点 就是在 renq 当中,这些路由都发现啊,它使用的是这种 pro 的模式,拉取的模式, 也就是说我第一次连的时候,我可能直接去获取我们 number seven 当中最新的,对不对?但是你会发现我们当中的这些路由信息有可能会发生变化,就是发生变化之后的话,那么 number seven 他不会去推给我们的生产者,或者是推给 我们的消费者,而是说在客户端里面,他大概是每隔三十秒,他会从我们的这个 lamso 当中去铺啊,去拿一次,然后获取一次最新的路由。所以呢,这个就是我们 reconq 当中啊这个路由的一次的一个策略啊。当然有的小伙伴就问了, 从那么 solo 当中每隔三十秒来一次,你从零到三十秒之间,我的 break 节点发生了一些问题,比如说我删掉了 啊,我一些主题已经删掉了,会不会发生问题呢?会啊,你作为生产的时候,发现你去发送的时候, 哎,报异常了,对不对?但是呢,这个问题也不是很大,因为它的间隔时间是在三十秒之内,那与此同时的话呢,因为你删掉一些主题对不对?然后把相关的主题进行更新之后,他 需要通过定时的三十秒的任务来拿最新的,但是最终的话呢,它不会造成 bug, 它只是说你发送的时候出现了一些异常而已。 所以呢,这就是我们讲的啊,在 rocken q 当中的话呢,在生产当中啊,一般不建议就是在我们生产和消费的时候,轻易的去修改或者去删除已经存在的对列或者是这种原数据。那是因为 啊,这个 ron q 的这个路由发现它的一个策略,它是使用的定时的拉取模式来处理的,所以这道面试题呢,它更多的是考核原理, 就是在 reconq 当中,无论是生产还有消费,它的路由啊,是不是发生变化之后,我们的 reconq 会推送给他,推送给我们的客户端不会,而是说通过定时的拉取的模式来进行路由的发现以及对应的更新。

啊,我们来看英特网的组成,那英特网的组成主要分为两个大部分,第一个呢是边缘部分和核心部分,那边缘部分呢,是有连接在英特网上的主机组成,那这部分是用户可以直接使用的, 用来进行通信的,比如说我们传送数据啊,音频、视频和资源共享。那核心部分呢,是由大量网络和连接这些网络的路由器组成,那这部分是是他主要主要就是为了 他是为那个边缘部分提供服务的,例如路由器啊,他是实现分组交换的关键设备。路由器的主要功能就是转发啊,接收到的分组啊,通过这张图,哎,我们来看一下那 网络边缘部分,是这个最外外层的这一圈网络边缘,它可以是我们的这个主机啊,就是我们 最大的主机电脑,当然也可以是啊,我们现在的手机啊,平板电脑,还有我们的这个摄像头啊等等这种用户可以直接使用的这个终端设备。那核心做核心部分呢?其实它主要包括的就是啊,路由器啊,路由器呢,对我们网络收到的数据进行分组交换啊, 啊,当然还包括那个通信的中的那个连接设备,比如说我们的通信线路和,那比如我们的有线线路,或者说是那个无线线路。

什么是路由注册? reckon q 如何进行路由注册?这道面试题来自于阿里定位的薪资二十五 k 不高,但是呢,它还是一个高级开发港的对应的面试题。 那么如什么是路由注册呢?我们可以看到在我们的路由注册里面, rock and q 他有两种角色,第一个是 lamer seover, 第二个是 broker, 还有了我们的 producer 生产者。 那么路由注册他是这样的一个概念,就是当我们的 numbers over 先启动他是第一步,然后紧接着我们的 book 又要启动,对不对?然后我们的 book 为了证明我自己的存活, 然后他会定期的去以心跳的方式上报给我的 namesaw, 比如说每三十秒钟向 namesawa 去报告自己还活着。注意, 在这个心跳里面呢,他同时会将自己的,比如说像这种什么 book id 啊,比如说像这 book 地址 of the rise, 比如说我所属的集群的名字,还有包括我的一些 其他相关的东西去发给 nemoso 网,比如说我的这些主题啊,还有对立啊等等相关的东西全部会发给我们的 nemoso 网。 ok, 然后 nemosover 收到这些心跳之后的话,他就会去记录我们 broker 最新存活的一个时间。 所以呢,这称之为什么是 rock mq 当中的路由注册以及 rock m q 如何去完成路由注册啊?它本质上面是存在 limosole 当中的一个哈西表当中。