消费者启动过程中会向 NameServer 请求 Topic 路由信息。 每隔30s 向 NameServer 发送请求,获取它们要生产/消费的 Topic 的路由信息。 Broker 每隔30s 向 NameServer 集群的每台机器都发送心跳包,包含自身 Topic 队列的路由信息。 当有Topic 改动(创建/更新),Broker 会立即发送 Topic 增量信息到 NameServer,同时触发 ...
RocketMQ5.0中的几个角色NameServer、Broker 和 Proxy,它们的作用如下: NameServer: NameServer 是 RocketMQ 的名称服务器,负责管理消息队列和消费者组。 Broker:Broker 是 RocketMQ 的消息代理服务器,负责接收、处理和存储消息。 Proxy: Proxy 是 RocketMQ 的代理服务器,用于扩展消息代理服务器的性能和容量。Proxy 可...
NameServer 本身的高可用可通过部署多台 NameServer服务器来实现,但彼此之间 互不通信,也就是NameServer服务器之间在某一时刻的数据并不会完全相同,但这对消息发送不会造成任何影响,这也是RocketMQ NameServer设计的一个亮点, RocketMQ NameServer 设计追求简单高效。 2.2 NameServer 启动流程 从源码的角度窥探一下Names巳...
启动时,首先会调用createNamesrvController()方法创建NamesrvController,NamesrvController是NameServer的核心控制组件,负责初始化和启动NameServer的各个组件;紧接着,会调用start()方法,start()方法内部调用了NamesrvController的initialize()方法和start()方法。可以看出,NamesrvController在NameServer中起着重要作用。 创建NamesrvCo...
NameServer是一个注册中心,提供服务注册和服务发现的功能。NameServer可以集群部署,集群中每个节点都是对等的关系(没有像ZooKeeper那样在集群中选举出一个Master节点),节点之间互不通信。 服务注册 Broker启动的时候会向所有的NameServer节点进行注册,注意这里
1 NameServer的作用 Name Server 是专为 RocketMQ 设计的轻量级名称服务,具有简单、可集群横吐扩展、无状态,节点之间互不通信等特点。整个Rocketmq集群的工作原理如下图所示: 可以看到,Broker集群、Producer集群、Consumer集群都需要与NameServer集群进行通信:
综上所述,NameServer 在 RocketMQ 中的作用: NameServer 用来保存活跃的 broker 列表,包括 Master 和 Slave 。 NameServer 用来保存所有 topic 和该 topic 所有队列的列表。 NameServer 用来保存所有 broker 的 Filter 列表。 命名服务器为客户端,包括生产者,消费者和命令行客户端提供最新的路由信息。
今天我们来一起深入分析 RocketMQ的注册中心 NameServer。 本文基于 RocketMQ release-5.2.0。 首先,我们回顾下 RocketMQ的内核原理鸟瞰图: 从上面的鸟瞰图,我们可以看出:Nameserver既和 Broker交互,也和 Producer和 Consumer交互,因此,在 RocketMQ中,Nameserver起到了一个纽带性的作用。
NameServer的主要作用就是为Producer和Consumer提供关于主题的路由信息,那么NameServer需要存储路由的基础信息,还要能管理Broker节点,包括路由注册,路由剔除等功能 2.1、路由元信息 路由实现类是:RouteInfoManager NameServer到低存储了哪些信息呢? topicQueueTable:topic消息队列路由信息,消息发送时根据路由表进行负载均衡 ...