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

深入剖析RocketMQ源码-NameServer

一、RocketMQ架构简介 1.1 逻辑部署图 (图片来自网络) 1.2 核心组件说明 通过上图可以看到,RocketMQ的核心组件主要包括4个,分别是NameServer、Broker、Producer...installation%n", MixAll.ROCKETMQ_HOME_ENV); System.exit(-2); } //初始化logback日志工厂,rocketmq...RocketMQ的开发团队还使用了一个常用的编程技巧,就是使用JVM钩子函数对NameServer进行优雅停机。这样在JVM进程关闭前,会先执行shutdown操作。...核心代码主要都在org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager中实现。...五、小结 本篇文章主要是从源码的角度给大家介绍了RocketMQNameServer,包括NameServer的启动流程、路由注册、路由剔除和路由发现。

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

    RocketMQ NameServer深入剖析

    本文将深入剖析rocketmq为什么选择自己开发NameServer,而不是选择类似于ZK这样的开源组件。同时对rocketmq的路由注册、路由发现、路由剔除进行剖析。...2 为什么选择自己开发NameServer 目前可以作为服务发现组件有很多,如etcd、consul,zookeeper等: 那么为什么rocketmq选择自己开发一个NameServer,而不是使用这些开源组件呢...但MetaQ 3.x(即RocketMQ)却去掉了ZooKeeper依赖,转而采用自己的NameServer。...RocketMQ采取的策略是,在Broker节点在启动的时候,轮训NameServer列表,与每个NameServer节点建立长连接,发起注册请求。...RocketMQ会将用户设置的NameServer列表会设置到NettyRemotingClient类的namesrvAddrList字段中,NettyRemotingClient是RocketMQ对Netty

    4.3K20

    RocketMQ路由中心NameServer

    文章目录 RocketMQ路由中心NameServerNameServer架构设计 启动流程 步骤一 步骤二 步骤三 二 NameServer动态路由发现与剔除机制 1....路由元信息 2 路由注册 1)Broker发送心跳包 2)NameServer处理心跳包 3 路由删除 4路由发现 三 小结 RocketMQ路由中心NameServerNameServer架构设计...路由元信息 NameServer路由实现类:org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager,在了解路由注册之前,我们首先看一下NameServer...2 路由注册 RocketMQ路由注册是通过Broker与NameServer的心跳功能实现的。...RocketMQ有两个触发点来删除路由信息: NameServer定期扫描brokerLiveTable检测上次心跳包与当前系统的时间差,如果时间超过120s,则需要移除broker。

    51820

    RocketMQ 大脑 NameServer 赏析

    工作原理 RocketMQ 四大核心组件 NameServer:主要负责对于元数据的管理,包括了对于 Topic 和路由信息的管理。...从 NameServer 起点 5.1 RocketMQ 大脑 —— NameServer NameServer 是一个 Broker 与 Topic 路由的注册中心,支持 Broker 的动态注册与发现...路由管理 6.1 路由注册 6.1.1 心跳请求 在 RocketMQ 中,默认情况下,Broker 服务器会每间隔 30 秒向集群中所有的 NameServer 发送心跳信息。...6.3 路由发现 RocketMQ 的路由发现采用的是 Pull 模型,当 Topic 路由信息发生变化时,NameServer 不会主动推送给客户端,而是客户端定时拉取主题最新的路由,默认让客户端每...环境变量设置完成如下: 再次启动 NameServer 添加 logback_namesrv.xml 文件到指定文件路径下: 打开 logback_namesrv.xml 文件并替换 RocketMQ

    32661

    RocketMQ集群NameServer高可用测试

    一、环境说明 ip地址 主机名 操作系统版本 RocketMQ版本 JDK版本 maven版本 备注 172.16.7.91 nameserver01 centos 7.6 4.8.0 1.8.0_291...五、关闭所有nameserver节点 1.消息发送 继续发送10000条消息,发送的同时继续关闭nameserver01 [root@nameserver01 ~]# init 0 ? ?...七、总结 总结:为保证RocketMQ集群能正常对外提供服务,需至少保证有一台nameserver服务器处于运行状态;当所有nameserver服务器宕机时,消息无法发送和消费。...本文所有代码和配置文件已上传github:RocketMQ_NameServer_HA_Test 单机版RocketMQ搭建详见:Centos7.6搭建RocketMQ4.8全纪录 集群版RocketMQ...搭建详见:RocketMQ4.8集群搭建全纪录 集群启停详见:RocketMQ集群启停手册 集群消息收发测试:RocketMQ集群消息收发测试全纪录

    1.3K41

    深入剖析RocketMQ源码-NameServer

    一、RocketMQ架构简介 1.1 逻辑部署图 [fda3b0325aafb2b99eb4fd43efbb3c25.jpeg] (图片来自网络) 1.2 核心组件说明 通过上图可以看到,RocketMQ...installation%n", MixAll.ROCKETMQ_HOME_ENV); System.exit(-2); } //初始化logback日志工厂,rocketmq...RocketMQ的开发团队还使用了一个常用的编程技巧,就是使用JVM钩子函数对NameServer进行优雅停机。这样在JVM进程关闭前,会先执行shutdown操作。...五、小结 本篇文章主要是从源码的角度给大家介绍了RocketMQNameServer,包括NameServer的启动流程、路由注册、路由剔除和路由发现。...六、参考资料 1、《RocketMQ技术内幕》 2、《RocketMQ核心原理和实践》 3、Apache RocketMQ开发者指南 作者:vivo互联网服务器团队-Ye Wenhao

    62230

    RocketMQ学习-NameServer-1

    NameServerRocketMQ中的角色是配置中心,主要有两个功能:Broker管理、路由管理。因此NameServer上存放的主要信息也包括两类:Broker相关的信息、路由信息。...NameServer模块的结构如下: ? name server代码结构 上面这些类之间的依赖关系图如下图所示: ?...启动器的主要流程 使用common-cli包处理命令行参数 读取并设置服务器配置,包括NameServer的配置和NettyServer的配置 读取日志框架配置并初始化日志框架 初始化NameServer..., System.getenv(MixAll.ROCKETMQ_HOME_ENV)); //kv配置的存放目录 private String kvConfigPath = System.getProperty...return null; } })); 参考资料 JAVA虚拟机关闭钩子(Shutdown Hook) RocketMQ源码分析之NameServer

    75230

    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

    36110

    RocketMQ源码分析1:NameServer启动

    1.NameServer是什么? NameServer是一个非常简单的Topic路由注册中心,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。...NameServer通常也是集群的方式部署,各实例间相互不进行信息通讯。Broker是向每一台NameServer注册自己的路由信息,所以每一个NameServer实例上面都保存一份完整的路由信息。...当某个NameServer因某种原因下线了,Broker仍然可以向其它NameServer同步其路由信息,Producer和Consumer仍然可以动态感知Broker的路由的信息 2.NameServer...System.out.printf("Please set the %s variable in your environment to match the location of the RocketMQ...installation%n", MixAll.ROCKETMQ_HOME_ENV); System.exit(-2); } LoggerContext lc = (

    25230

    RocketMQ实战教程之NameServer与BrokerServer

    RocketMQ实战教程之NameServer与BrokerServer在RocketMQ安装中没有具体去介绍NameServer与BrokerServer,先保证RocketMQ能够正常运行.这里我们来看看在...RocketMQNameServer与BrokerServer扮演着什么样的角色起到了什么样的作用现有角色分析与流程相关角色NameServer: 用来管理所有 BrokerServerBrokerServer...: 存储和传输消息Producer: 生产者Consumer: 消费者工作流程图工作流程详解这里分俩部分进行讲解分别product发送消息和consumer消费消息product发送消息在RocketMQ...的架构中,生产者向BrokerServer发送消息,生产者并不知道BrokerServer是谁,甚至不知道有多少个BrokerServer.生产者会先和NameServer建立连接,因为NameServer...去指定NameServer的ip地址总结有了NameServer,生产者和消费者只需要通过NameServer建立连接无需关心BrokerServer.类似Spring Cloud中注册中心和服务之间的关系一样

    19810

    RocketMQ我们学到了什么?(NameServer篇)

    消息调度中心是今天的主角 在RocketMQ里,就有一个角色和吕秀才的作用一样,叫做NameServer,它是整个分布式消息调度的总控制,是RocketMQ的灵魂之所在,倘如没有了它,RocketMQ会分崩离析无法工作...类比RocketMQ简线图就是如下: ? Producer:消息⽣产者,⽤于向消息服务器发送消息,就是图中的寄件人。 NameServer:路由注册中⼼,就是图中的卫星。...这个故事同样在RocketMQ中上演。 正常情况下,如果Broker关闭,则会与NameServer断开长连接,Netty的通道关闭监听器会监听到连接断开事件,然后会将这个Broker信息剔除掉。...所以在RocketMQ中,NameServer是不主动推送会客户端的,而是由客户端拉取主题的最新路由信息。 ?...中间件对稳定性要求很高,RocketMQNameServer只有很少的代码,容易维护,所以不需要再依赖另一个中间件,从而减少整体维护成本。 学到了什么?

    79010

    RocketMQ源码系列(一) NameServer 核心源码解析

    NameServer 介绍 NameServerrocketmq核心组件之一,与zookeeper一样天生具有分布式的特性,在rocketmq中担当着路由注册、发现、动态地维护...每隔10 s NameServer 会自动扫描所有的broker, 如果有broker失效,那么会从地址列表里将其剔除掉。 ◆ NameServer 架构分析 下面是 rocketmq 的部署图 ?...分析发现netty 是rocketmq 网络通信的核心,掌握netty 的常见用法是非常有必要的。...路由发现 RocketMQ的路由发现是非实时的,当Topic路由发生变化时,NameServer不主动推送给客户端,而是由客户端定时拉取主题最新的路由。...相当于rocketmq的注册中心,能够维护并实时监听broker的地址信息和队列信息等。

    58810

    RocketMQ源码之路(二)NameServer路由中心源码分析

    一般了解RocketMQ的读者都知道,NameServerRocketMQ的组织协调者,是RocketMQ对外提供服务的“大脑”。...RocketMQ对外提供服务的可靠性是如何保障的呢?带着这几个问题,我们一起去深入了解RocketMQ NameServer的设计原理及实现吧!...一、NameServer的基本原理 我们熟知的几种常见的消息队列组件,比如Kafka,ActiveMQ,RabbitMQ等,都是一种基于主题的发布订阅机制,RocketMQ也正是基于这种机制实现的消息服务...文章一开始就说道,NameServer是整个RocketMQ消息服务系统的“大脑”,是指挥消息正确发送、消费“指挥官”,那么他是如何完成这样完美的演出的呢?...二、NameServer的启动流程原理 在《RocketMQ源码之路(一)搭建RocketMQ源码环境》中,我们了解了如何使用IDE启动NameServer,那么本小节将和大家一起探讨NameServer

    74420
    领券