首页
学习
活动
专区
工具
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的启动流程、路由注册、路由剔除和路由发现。

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

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

4K20

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。

47920

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

18260

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.2K41

深入剖析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

57230

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

69930

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

33510

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 = (

23230

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

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

52910

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

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

74710

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

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

72220

NameServer模块划分

上图是之前讨论确定的系统架构(后续内容会按照这个架构来叙述),其中: NameServer做Broker的服务发现,即客户端可以通过NameServer拿到Broker的信息 Broker汇报数据到NameServer...NameServer的模块划分 在进行NameServer的模块划分讨论前,先整理一下NameServer的功能: 做Broker的服务发现 提供元数据(Topic、Group等) 也可以作为Console...NameServer可以非常方便的做集群部署,高可用之类的,只需要Broker将数据汇报到多个NameServer即可(RocketMQ就是这种架构)。...(NameServer更多在Consumer、Producer初始化的时候会涉及到,一旦运行起来,过程中并不需要进行太多的交互,所以运行过程中脱离了NameServer也是能正常执行消费和发送的) RocketMQ...这就是RocketMQ(开源版本)NameServer所有的代码了 结语 本篇主要是把NameServer的组件罗列一下,相对来说比较简单。

41820
领券