NameServer 名字服务 实际作就是就一个注册中心 NameServer 作用 在系统中肯定是做命名服务,服务治理方面的工作,功能应该是和zookeeper差不多 早期的版本中,使用的是 Zookeeper...producer、consumer 发送消息会去 NameServer 去拉取路由信息 图片 NameServer 维护 Broker 1.维护 Broker 信息 broker 启动后,会连接到 NameServer...3.无状态性 NameServer本身的高可用是通过部署多台NameServer来实现,但彼此之间不通讯,也就是NameServer服务器之间在某一个时刻的数据并不完全相同,但这对消息发送并不会造成任何影响...,这也是NameServer设计的一个亮点 特点: 互相独立,彼此没有通信关系,单台nameserver挂掉,不影响其他nameserver,即使全部挂掉,也不影响业务系统使用,这点类似于dubbo的zookeeper...NameServer。
上图是之前讨论确定的系统架构(后续内容会按照这个架构来叙述),其中: NameServer做Broker的服务发现,即客户端可以通过NameServer拿到Broker的信息 Broker汇报数据到NameServer...NameServer的模块划分 在进行NameServer的模块划分讨论前,先整理一下NameServer的功能: 做Broker的服务发现 提供元数据(Topic、Group等) 也可以作为Console...可以认为NameServer是一个无状态的节点。...NameServer可以非常方便的做集群部署,高可用之类的,只需要Broker将数据汇报到多个NameServer即可(RocketMQ就是这种架构)。...基于以上的约定(NameServer尽量简单,没有持久化等),对NameServer的模块划分如下。 1.
和Consumer,下面我们先依次简单说明下这四个核心组件: NameServer:NameServer充当路由信息的提供者。...本文重点介绍的就是NameServer,我们下面一起来看下NameServer是如何启动以及如何进行路由管理的。...路由注册:Broker服务器在启动的时候会想NameServer集群中所有的NameServer发送心跳信号进行注册,并会每隔30秒向nameserver发送心跳,告诉NameServer自己活着。...高可用:NameServer通过部署多台NameServer服务器来保证自身的高可用,同时多个NameServer服务器之间不进行通信,这样路由信息发生变化时,各个NameServer服务器之间数据可能不是完全相同的...这个也正是NameServer追求简单高效的目的所在。 三、 启动流程 在整理了解了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
每个Broker节点,在启动时,都会遍历NameServer列表,与每个NameServer建立长连接,注册自己的信息,之后定时上报。...3 NameServer如何保证数据的最终一致 NameServer作为一个名称服务,需要提供服务注册、服务剔除、服务发现这些基本功能,但是NameServer节点之间并不通信,在某个时刻各个节点数据可能不一致的情况下...同时由于不需要NameServer通知众多不固定的生产者,也降低了NameServer实现的复杂性。...需要注意的是,尽管使用round-robin策略,但是在选择了一个NameServer节点之后,后面总是会优先选择这个NameServer,除非与这个NameServer节点通信出现异常的情况下,才会选择其他节点...笔者考虑,通常NameServer节点是固定的几个,但是客户端的数量可能是成百上千,为了减少每个NameServer节点的压力,所以每个客户端节点只随机与其中一个NameServer节点建立连接。
02李鑫眼神.jpg 时间回到九月份的一个下午,坐在工位上的的E.m突然接到一个秘密任务: 干掉腾讯云! 行动代号:干掉腾讯云 下达这道命令的是Fooying。...Fooying是腾讯安全云鼎实验室的成员,负责守卫腾讯云的安全。从加入腾讯的那一天起,他和他的团队就枕戈待旦,时时刻刻提防着黑客对腾讯云的攻击。...随着腾讯云的快速发展,越来越多的企业入驻腾讯云,不少黑客也将攻击的目标转移到了云上。国内外因为被黑客攻击导致的删库、数据泄露、病毒勒索的公司比比皆是。腾讯云安全的重要性可想而知。...刘钢工位前.JPG Rud是本次红蓝对抗的红军负责人,将迎战蓝军猛烈的攻击,守卫腾讯云。 在腾讯,每天都有众多安全人员在巡视、建设腾讯云的安全防线。尽管如此,攻防两端终究是一场不均衡的较量。...腾讯云的红蓝对抗已经逐步常态化,既是保护自己的方式,也是守护云上合作伙伴的重要途径。 腾讯云,正在用一场场自我的战斗,磨练出更安全的云。
Throwable e) { e.printStackTrace(); System.exit(-1); } return null; } 通过main方法启动NameServer
你给翻译翻译,什么叫 NameServer NameServer 你可以简单的把它理解成注册中心。...NameServer。...而 Producer 则会从 NameServer 中获取元数据,从而将 Message 发到对应的 Broker 中去。 相应的,Consumer 也需要从 NameServer 中获取数据。...那不知道你有没有想过,NameServer 如何区分 主 和 从 的呢?...NameServer 启动流程 上面通过了解注册 Broker的整个流程,对整个 NameServer 的架构有了个大概的了解,接下来再从整体视角来看一下 NameServer。
文章目录 RocketMQ路由中心NameServer 一 NameServer架构设计 启动流程 步骤一 步骤二 步骤三 二 NameServer动态路由发现与剔除机制 1....路由元信息 2 路由注册 1)Broker发送心跳包 2)NameServer处理心跳包 3 路由删除 4路由发现 三 小结 RocketMQ路由中心NameServer 一 NameServer架构设计...NameServer本身的高可用是通过部署多台NameServer来实现,但彼此之间不通讯,也就是NameServer服务器之间在某一个时刻的数据并不完全相同,但这对消息发送并不会造成任何影响,这也是NameServer...二 NameServer动态路由发现与剔除机制 NameServer的主要作用是为消息的生产者和消息消费者提供关于主题Topic的路由信息,那么NameServer需要存储路由的基础信息,还要管理Broker...但是如果Broker宕机,NameServer无法收到心跳包,此时NameServer如何来剔除这些失效的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 默认的配置参数信息。 ?
从 NameServer 起点 5.1 RocketMQ 大脑 —— NameServer NameServer 是一个 Broker 与 Topic 路由的注册中心,支持 Broker 的动态注册与发现...路由信息管理:每个 NameServer中都保存 Broker 集群的整个路由信息可用于客户端查询队列信息,Producer 和 Consumer 通过 NameServer可以获取整个 Broker...5.4 NameServer 启动时序图 6....如下图所示: 7.2 源码学习的方法 本地调试法(启动类,Debug,QuickStart等) 7.3 NameServer 设计的亮点 读写锁使用,Map 结构存储路由信息; NameServer 之间不通信...(AP,最终一致性); NameServer 只管理 Broker 集群等信息。
producer.shutdown(); } } 发送消息NameServer Test0--NameServer Test99 2.运行Producer ?...发现消息消费一共也是100条 四、关闭一台nameserver节点 1.关闭nameserver02 [root@nameserver02 ~]# init 0 2.发送消息 再次发送100条消息 ?...五、关闭所有nameserver节点 1.消息发送 继续发送10000条消息,发送的同时继续关闭nameserver01 [root@nameserver01 ~]# init 0 ? ?...六、开启nameserver01 1.nameserver01开机 消息发送和消费会恢复,但是会丢消息 ? ?...七、总结 总结:为保证RocketMQ集群能正常对外提供服务,需至少保证有一台nameserver服务器处于运行状态;当所有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
这篇文章交大家如何在腾讯云上创建一个WordPress网站,方法及其简单,小白都能操作,个人做网站多年,这是最好的一个建站方案,如果你想搭建一个自己的博客,可以按照我的图文操作试试,我的教程是基于Linux...首先就是注册购买服务器购买域名详细参考:腾讯云服务器怎么购买(领取腾讯云优惠券) 腾讯云新客专属福利2860元代金券 腾讯云新客专属福利2860元代金券 腾讯云双十一最新活动 腾讯云双十一最新活动 购置一个域名...域名注册地址 1,首先需要在腾讯云购买一台云服务器 打开腾讯云云服务购买页面,也可以打开腾讯云优惠活动页面购置一台云服务器 QQ截图20201110170311.png 选择CentOS系统
写作目的 RocketMQ一个用Java写的开源项目,而且也是阿里开源的,所以想看一看设计思路以及一些细节,所以就写了这篇博客,记录一下Broker注册到Nameserver的过程以及心跳逻辑。...我的风格比较偷懒,我们想看哪一部分就跟哪一部分和哪个分支,其他的没必要看,这样你就能偷懒了,所以这篇文章想跟的是Broker注册到NameServer源码以及Broker与NameServer的心跳。...注意:本文只关心Broker注册到NameServer和心跳逻辑,其他都不关心。...,每次都会向NameServer注册自己,不断覆盖到NameServer存的Broker的信息,从而达到心跳的效果,我只能说一个字,秀。...之间的心跳我以为是发送心跳包去实现的,结果是通过不断的向nameserver注册自己实现的 2 NameServer通过定时任务不断的扫描brokerLiveTable去根据时间阈值(broker注册的时间和此时此刻的时间差距
、Broker、Producer和Consumer,下面我们先依次简单说明下这四个核心组件: NameServer:NameServer充当路由信息的提供者。...本文重点介绍的就是NameServer,我们下面一起来看下NameServer是如何启动以及如何进行路由管理的。...路由注册:Broker服务器在启动的时候会想NameServer集群中所有的NameServer发送心跳信号进行注册,并会每隔30秒向nameserver发送心跳,告诉NameServer自己活着。...高可用:NameServer通过部署多台NameServer服务器来保证自身的高可用,同时多个NameServer服务器之间不进行通信,这样路由信息发生变化时,各个NameServer服务器之间数据可能不是完全相同的...这个也正是NameServer追求简单高效的目的所在。 三、 启动流程 在整理了解了NameServer的架构设计之后,我们先来看下NameServer到底是如何启动的呢?
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
上篇文章主要梳理了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
领取专属 10元无门槛券
手把手带您无忧上云