做为配置中心,改名 RocketMQ 后使用了自己开发的 NameServer。...producer、consumer 发送消息会去 NameServer 去拉取路由信息 图片 NameServer 维护 Broker 1.维护 Broker 信息 broker 启动后,会连接到 NameServer...3.无状态性 NameServer本身的高可用是通过部署多台NameServer来实现,但彼此之间不通讯,也就是NameServer服务器之间在某一个时刻的数据并不完全相同,但这对消息发送并不会造成任何影响...Broker 启动的时候会将自己注册到 NameServer 中,注册的同时还会将 Broker 的 IP 地址、端口相关的数据,以及保存在 Broker 中的 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中实现。...五、小结 本篇文章主要是从源码的角度给大家介绍了RocketMQ的NameServer,包括NameServer的启动流程、路由注册、路由剔除和路由发现。
Nameserver 启动 nameserver 指定输出日志位置,未指定则目志在当前目录下: nohup sh mqnamesrv > ~/logs/rocketmqlogs/namesrv.log...最简单的命令: nohup sh mqnamesrv & 内存不足处理: nameserver 内存不足时修改 runserver.sh,测试管用 JAVA_OPT="${JAVA_iOPT} -server...PermSize=128m -XX:MaxPermSize=256m" 验证启动成功 jobs 或 jps //查看启动情况 NamesrvStartup //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
文章目录 RocketMQ路由中心NameServer 一 NameServer架构设计 启动流程 步骤一 步骤二 步骤三 二 NameServer动态路由发现与剔除机制 1....路由元信息 2 路由注册 1)Broker发送心跳包 2)NameServer处理心跳包 3 路由删除 4路由发现 三 小结 RocketMQ路由中心NameServer 一 NameServer架构设计...路由元信息 NameServer路由实现类:org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager,在了解路由注册之前,我们首先看一下NameServer...2 路由注册 RocketMQ路由注册是通过Broker与NameServer的心跳功能实现的。...RocketMQ有两个触发点来删除路由信息: NameServer定期扫描brokerLiveTable检测上次心跳包与当前系统的时间差,如果时间超过120s,则需要移除broker。
NameServer启动 从生产环境实践来看,NameServer启动使用默认配置即可,运行良好。...启动命令:nohup sh bin/mqnamesrv & NamesrvStartup.java 启动入口类,NameServer 启动默认端口9876 nettyServerConfig.setListenPort...(9876) 每10秒钟扫描一次,移除失效的broker,同时删除缓存元数据信息 //初始化NameServer boolean initResult = controller.initialize(...主要向NameServer发送心跳包、获取Cluster、Broker、Topic元数据信息。...调用链: 在NameServer启动时注册,NamesrvController.initialize()->registerProcessor() public RemotingCommand processRequest
概述 NameServer 是RocketMQ 消息队列的状态服务器(服务发现功能),集群中的各个服务都需要通过 NameServer 来了解集群中各个服务的状态。...NameServer 可以部署多个,多个NameServer互相独立,不会交换消息。...NameServer 模块结构 ? 可以看出 NameServer 中的类比较少,8个类。分析起来也比较轻松。...NameServer 启动 org.apache.rocketmq.namesrv.NamesrvStartup 是 NameServer 的启动类。 ?...-p 打印 NameServer 的配置参数信息。打印完参数后退出进程。 下面是打印 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
一、环境说明 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集群消息收发测试全纪录
一、RocketMQ架构简介 1.1 逻辑部署图 [fda3b0325aafb2b99eb4fd43efbb3c25.jpeg] (图片来自网络) 1.2 核心组件说明 通过上图可以看到,RocketMQ...installation%n", MixAll.ROCKETMQ_HOME_ENV); System.exit(-2); } //初始化logback日志工厂,rocketmq...RocketMQ的开发团队还使用了一个常用的编程技巧,就是使用JVM钩子函数对NameServer进行优雅停机。这样在JVM进程关闭前,会先执行shutdown操作。...五、小结 本篇文章主要是从源码的角度给大家介绍了RocketMQ的NameServer,包括NameServer的启动流程、路由注册、路由剔除和路由发现。...六、参考资料 1、《RocketMQ技术内幕》 2、《RocketMQ核心原理和实践》 3、Apache RocketMQ开发者指南 作者:vivo互联网服务器团队-Ye Wenhao
NameServer在RocketMQ中的角色是配置中心,主要有两个功能: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
上篇文章主要梳理了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
前言 上次我们一起了解了RocketMQ的基本架构原理,那简单的回顾一下RocketMQ的架构组成。...今天我们就从NameServer这个核心部分入手,开始更深入的理解一下RocketMQ的内部原理。...NameServer的部署 要搭建一个RocketMQ技术栈,必然要部署NameServer,那么NameServer是如何部署的呢?...RocketMQ的实际方案是,每个Broker都会向每个NameServer进行服务注册。...生产者和消费者自己每隔一段时间,主动去NameServer中拉取这些信息,其实RocketMQ的内部就是这么实现的。
RocketMQ的NameServer执行流程学习梳理 首先看流程图 ?...,因此zookeeper是强调强一致性的,其牺牲了可用性具体体现:同时nameServer复杂性降低在于其代码量少,同时nameServer节点之间互不通信,因此无法进行数据复制。...而NameServer的各个节点是互不通信的,因此无法进行数据复制。在broker节点启动时,轮询nameServer列表,与每个nameServer建立长连接,发起注册请求。...NameServer内部会维护Broker列表,用来动态存储Broker信息。...Broker和NameServer之间会进行心跳检测,broker每隔30s会将最新的心跳包信息发生给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 = (
前言 NameServer 维护这些配置信息 、 状态信 息,其他角色都通过 NameServer 来协同执行,这章我们就来分析NameServer以及RocketMQ都通讯机制。...正文 NameServer简介 NameServer是整个消息队列中 的状态服务器,集群的各个组件通过它来了 解全局的信息 。...当NameServer和Broker的长连接断掉以后,NameServer会把这个 Broker的信息清理出去。...底层通信机制 Remoting 模块 RocketMQ 的通信相 关代码在 Remoting 模块里,先来 看看主要类结 构 ?...协议设计和编解码 RocketMQ 自己定义了一个通信协议,使得模块间传输的二进制消息和有 意义的内容之间互相转换 ?
RocketMQ实战教程之NameServer与BrokerServer在RocketMQ安装中没有具体去介绍NameServer与BrokerServer,先保证RocketMQ能够正常运行.这里我们来看看在...RocketMQ中NameServer与BrokerServer扮演着什么样的角色起到了什么样的作用现有角色分析与流程相关角色NameServer: 用来管理所有 BrokerServerBrokerServer...: 存储和传输消息Producer: 生产者Consumer: 消费者工作流程图工作流程详解这里分俩部分进行讲解分别product发送消息和consumer消费消息product发送消息在RocketMQ...的架构中,生产者向BrokerServer发送消息,生产者并不知道BrokerServer是谁,甚至不知道有多少个BrokerServer.生产者会先和NameServer建立连接,因为NameServer...去指定NameServer的ip地址总结有了NameServer,生产者和消费者只需要通过NameServer建立连接无需关心BrokerServer.类似Spring Cloud中注册中心和服务之间的关系一样
消息调度中心是今天的主角 在RocketMQ里,就有一个角色和吕秀才的作用一样,叫做NameServer,它是整个分布式消息调度的总控制,是RocketMQ的灵魂之所在,倘如没有了它,RocketMQ会分崩离析无法工作...类比RocketMQ简线图就是如下: ? Producer:消息⽣产者,⽤于向消息服务器发送消息,就是图中的寄件人。 NameServer:路由注册中⼼,就是图中的卫星。...这个故事同样在RocketMQ中上演。 正常情况下,如果Broker关闭,则会与NameServer断开长连接,Netty的通道关闭监听器会监听到连接断开事件,然后会将这个Broker信息剔除掉。...所以在RocketMQ中,NameServer是不主动推送会客户端的,而是由客户端拉取主题的最新路由信息。 ?...中间件对稳定性要求很高,RocketMQ的NameServer只有很少的代码,容易维护,所以不需要再依赖另一个中间件,从而减少整体维护成本。 学到了什么?
◆ NameServer 介绍 NameServer 是rocketmq核心组件之一,与zookeeper一样天生具有分布式的特性,在rocketmq中担当着路由注册、发现、动态地维护...每隔10 s NameServer 会自动扫描所有的broker, 如果有broker失效,那么会从地址列表里将其剔除掉。 ◆ NameServer 架构分析 下面是 rocketmq 的部署图 ?...分析发现netty 是rocketmq 网络通信的核心,掌握netty 的常见用法是非常有必要的。...路由发现 RocketMQ的路由发现是非实时的,当Topic路由发生变化时,NameServer不主动推送给客户端,而是由客户端定时拉取主题最新的路由。...相当于rocketmq的注册中心,能够维护并实时监听broker的地址信息和队列信息等。
一般了解RocketMQ的读者都知道,NameServer是RocketMQ的组织协调者,是RocketMQ对外提供服务的“大脑”。...RocketMQ对外提供服务的可靠性是如何保障的呢?带着这几个问题,我们一起去深入了解RocketMQ NameServer的设计原理及实现吧!...一、NameServer的基本原理 我们熟知的几种常见的消息队列组件,比如Kafka,ActiveMQ,RabbitMQ等,都是一种基于主题的发布订阅机制,RocketMQ也正是基于这种机制实现的消息服务...文章一开始就说道,NameServer是整个RocketMQ消息服务系统的“大脑”,是指挥消息正确发送、消费“指挥官”,那么他是如何完成这样完美的演出的呢?...二、NameServer的启动流程原理 在《RocketMQ源码之路(一)搭建RocketMQ源码环境》中,我们了解了如何使用IDE启动NameServer,那么本小节将和大家一起探讨NameServer
领取专属 10元无门槛券
手把手带您无忧上云