首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RocketMQ-NameServer原理

NameServer 名字服务 实际作就是就一个注册中心 NameServer 作用 在系统中肯定是做命名服务,服务治理方面的工作,功能应该是和zookeeper差不多 早期的版本中,使用的是 Zookeeper...producer、consumer 发送消息会去 NameServer 去拉取路由信息 图片 NameServer 维护 Broker 1.维护 Broker 信息 broker 启动后,会连接到 NameServer...3.无状态性 NameServer本身的高可用是通过部署多台NameServer来实现,但彼此之间不通讯,也就是NameServer服务器之间在某一个时刻的数据并不完全相同,但这对消息发送并不会造成任何影响...,这也是NameServer设计的一个亮点 特点: 互相独立,彼此没有通信关系,单台nameserver挂掉,不影响其他nameserver,即使全部挂掉,也不影响业务系统使用,这点类似于dubbo的zookeeper...NameServer

26120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入剖析RocketMQ源码-NameServer

    和Consumer,下面我们先依次简单说明下这四个核心组件: NameServerNameServer充当路由信息的提供者。...本文重点介绍的就是NameServer,我们下面一起来看下NameServer是如何启动以及如何进行路由管理的。...路由注册:Broker服务器在启动的时候会想NameServer集群中所有的NameServer发送心跳信号进行注册,并会每隔30秒向nameserver发送心跳,告诉NameServer自己活着。...高可用:NameServer通过部署多台NameServer服务器来保证自身的高可用,同时多个NameServer服务器之间不进行通信,这样路由信息发生变化时,各个NameServer服务器之间数据可能不是完全相同的...这个也正是NameServer追求简单高效的目的所在。 三、 启动流程 在整理了解了NameServer的架构设计之后,我们先来看下NameServer到底是如何启动的呢?

    53740

    RocketMQ NameServer深入剖析

    每个Broker节点,在启动时,都会遍历NameServer列表,与每个NameServer建立长连接,注册自己的信息,之后定时上报。...3 NameServer如何保证数据的最终一致 NameServer作为一个名称服务,需要提供服务注册、服务剔除、服务发现这些基本功能,但是NameServer节点之间并不通信,在某个时刻各个节点数据可能不一致的情况下...同时由于不需要NameServer通知众多不固定的生产者,也降低了NameServer实现的复杂性。...需要注意的是,尽管使用round-robin策略,但是在选择了一个NameServer节点之后,后面总是会优先选择这个NameServer,除非与这个NameServer节点通信出现异常的情况下,才会选择其他节点...笔者考虑,通常NameServer节点是固定的几个,但是客户端的数量可能是成百上千,为了减少每个NameServer节点的压力,所以每个客户端节点只随机与其中一个NameServer节点建立连接。

    4.3K20

    RocketMQ路由中心NameServer

    文章目录 RocketMQ路由中心NameServerNameServer架构设计 启动流程 步骤一 步骤二 步骤三 二 NameServer动态路由发现与剔除机制 1....路由元信息 2 路由注册 1)Broker发送心跳包 2)NameServer处理心跳包 3 路由删除 4路由发现 三 小结 RocketMQ路由中心NameServerNameServer架构设计...NameServer本身的高可用是通过部署多台NameServer来实现,但彼此之间不通讯,也就是NameServer服务器之间在某一个时刻的数据并不完全相同,但这对消息发送并不会造成任何影响,这也是NameServer...二 NameServer动态路由发现与剔除机制 NameServer的主要作用是为消息的生产者和消息消费者提供关于主题Topic的路由信息,那么NameServer需要存储路由的基础信息,还要管理Broker...但是如果Broker宕机,NameServer无法收到心跳包,此时NameServer如何来剔除这些失效的Broker呢?

    50820

    聊一聊RocketMQ的注册中心NameServer

    NameServer的部署 要搭建一个RocketMQ技术栈,必然要部署NameServer,那么NameServer是如何部署的呢?...比如我们有10台Broker机器,2个NameServer机器,其中5台互注册到一个NameServer上,另外5台会注册到另外的一个NameServer上,这样一来NameServer中的数据也就实现了分布式存储...这样从NameServer获取数据时无论从哪台机器上都能获取到所有的数据,而且就算其中一个NameServer宕机了,其他NameServer也能继续提供服务。...系统是如何从NameServer获取信息的 了解了向NameServer注册信息的方式,那么系统是如何从NameServer中获取信息的呢?...Broker宕机了,NameServer是如何感知到的 在Broker向NameServer注册了自己的信息后,如果这个时候由于各种原因,Broker宕机了,此时如果不去告知NameServer,那么NameServer

    1.1K20

    Broker注册到NameServer源码分析

    写作目的 RocketMQ一个用Java写的开源项目,而且也是阿里开源的,所以想看一看设计思路以及一些细节,所以就写了这篇博客,记录一下Broker注册到Nameserver的过程以及心跳逻辑。...我的风格比较偷懒,我们想看哪一部分就跟哪一部分和哪个分支,其他的没必要看,这样你就能偷懒了,所以这篇文章想跟的是Broker注册到NameServer源码以及Broker与NameServer的心跳。...注意:本文只关心Broker注册到NameServer和心跳逻辑,其他都不关心。...,每次都会向NameServer注册自己,不断覆盖到NameServer存的Broker的信息,从而达到心跳的效果,我只能说一个字,秀。...之间的心跳我以为是发送心跳包去实现的,结果是通过不断的向nameserver注册自己实现的 2 NameServer通过定时任务不断的扫描brokerLiveTable去根据时间阈值(broker注册的时间和此时此刻的时间差距

    16310

    RocketMQ学习-NameServer-2

    上篇文章主要梳理了NameServer的启动器和配置信息,并复习了JVM中的关闭钩子这个知识点。这篇文章看下NameServer的其他模块。...建议带着如下三个问题阅读: NameServer管理哪些信息?如何管理的? NameServer中对Netty的使用案例? NameServer中对Java并发编程使用案例?...一、NamesrvController 作用:NameServer模块的控制器 主要属性: namesrvConfig:name server的配置信息 nettyServerConfig:name...return this.wipeWritePermOfBroker(ctx, request); case RequestCode.GET_ALL_TOPIC_LIST_FROM_NAMESERVER...} ​ 五、KVConfigManager 这个模块用于管理name server自己的配置信息,配置信息以json信息存放在文件中,以二维数组形式存在于内存中,请看代码: /** * 管理NameServer

    35010

    RocketMQ学习-NameServer-1

    NameServer在RocketMQ中的角色是配置中心,主要有两个功能:Broker管理、路由管理。因此NameServer上存放的主要信息也包括两类:Broker相关的信息、路由信息。...NameServer模块的结构如下: ? name server代码结构 上面这些类之间的依赖关系图如下图所示: ?...启动器的主要流程 使用common-cli包处理命令行参数 读取并设置服务器配置,包括NameServer的配置和NettyServer的配置 读取日志框架配置并初始化日志框架 初始化NameServer...控制器(注意:NameServer的配置和Netty服务器的配置为初始化参数) 设置JVM关闭时的钩子 知识点 NettyServerConfig,rmq中用于配置Netty服务器的配置文件,这里对于Netty...return null; } })); 参考资料 JAVA虚拟机关闭钩子(Shutdown Hook) RocketMQ源码分析之NameServer

    74330

    深入剖析RocketMQ源码-NameServer

    、Broker、Producer和Consumer,下面我们先依次简单说明下这四个核心组件: NameServerNameServer充当路由信息的提供者。...本文重点介绍的就是NameServer,我们下面一起来看下NameServer是如何启动以及如何进行路由管理的。...路由注册:Broker服务器在启动的时候会想NameServer集群中所有的NameServer发送心跳信号进行注册,并会每隔30秒向nameserver发送心跳,告诉NameServer自己活着。...高可用:NameServer通过部署多台NameServer服务器来保证自身的高可用,同时多个NameServer服务器之间不进行通信,这样路由信息发生变化时,各个NameServer服务器之间数据可能不是完全相同的...这个也正是NameServer追求简单高效的目的所在。 三、 启动流程 在整理了解了NameServer的架构设计之后,我们先来看下NameServer到底是如何启动的呢?

    60930
    领券