《雨夜》 RocketMQ源码系列(一) NameServer 核心源码解析

带着问题 往下看 (namesrv)

  1. 我们在写组件的时候 怎么管理version
  2. 如果现在让你 维护一个 各个jar包公用的属性, 你怎么做?
  3. System.exit(-1); 0 -1 -2 各种数都是干什么的,什么时候 用哪个
  4. 环境变量如果不想使用 ROCKETMQ_HOME, 想变为 xxx 这怎么做,能做么?
  5. 我们启动broker 老是用 -n ip:9876 9876是什么,我们可以改变么?怎么改
  6. 大家如果想 把命令启动带着的 -c -p等参数放到 我们的属性中,怎么写代码?
  7. 如果我们想 自己设置使用的log 组件,怎么办
  8. 遍历 Field[] 的时候 想跳过 static的属性 怎么写代码?
  9. 多个对象的 属性需要进行聚合到一个对象中,要是你 怎么写
  10. KVConfigManager 有什么作用,怎么保证的 并发操作的数据正确性?你感觉有什么问题么?
  11. KVConfigManager 怎么保证的 持久化?
  12. 怎么在 并发操作的时候 保证数据的安全性?
  13. 方法的参数 使用final 有什么用?
  14. 怎么判断的broker 是不是master
  15. netty 怎么让nameserver 通知broker 信息的。
  16. nameserver 是否存活的判断标准是什么? 能修改么? 怎么修改
  17. Runtime.getRuntime().addShutdownHook 有什么用,没有不行么?
  18. @ImportantField 干什么的? 什么时候 使用
  19. 在同一台计算机上部署多个代理时 想区分日志路径 用哪个参数,调成什么?
  20. broker 为什么 -p 和 -m 同时有的时候 -m的总是不生效呢?

请思考下 写写你的答案 再往下看

nameserver 启动的逻辑

nameserver 功能

  1. 管理broker 集群
  2. 属于注册中心 业务端 和nameserver 进行连接,获取broker地址
  3. 负责维护broker 连接/心跳/监控

nameserver 问题解答

我们在写组件的时候 怎么管理version

一方面是 在父类的 pom.xml 通过 进行 控制版本,然后 业务端通过

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.xxx</groupId>
            <artifactId>xxx</artifactId>
            <version>4.0.0-SNAPSHOT</version>
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RocketMQ NameServerRocketMQ 的一个核心组件,主要负责管理 RocketMQ 集群中的各个 Broker 节点的信息,包括 Broker 的名称、IP 地址、状态等信息。在 RocketMQ 集群中,所有的 Broker 都需要向 NameServer 注册,以便 NameServer 能够掌握整个集群的状态信息。 RocketMQ NameServer源码位于 `rocketmq-namesrv` 模块中,其主要实现了以下功能: 1. 启动时加载配置文件,包括监听端口、存储路径、集群名称等信息; 2. 处理 Broker 节点的注册、注销请求,维护 Broker 节点的状态信息; 3. 处理 Consumer 节点的心跳请求,维护 Consumer 节点的状态信息; 4. 处理 Topic 的创建、删除请求,维护 Topic 的状态信息; 5. 提供查询 Broker 节点、Topic 等信息的接口。 RocketMQ NameServer核心类是 `NamesrvController`,它继承了 Netty 的 `NettyRemotingServer` 类,并实现了 `RequestProcessor` 接口,用于处理来自 Broker 和 Consumer 节点的请求。在 `NamesrvController` 中,还包含了 `RouteInfoManager`、`BrokerHousekeepingService`、`KVConfigManager` 等组件,用于维护集群状态信息和管理配置文件。 RocketMQ NameServer 的启动入口是 `main` 方法,它会加载配置文件并启动 `NamesrvController`。启动后,NameServer 会监听指定端口,等待来自 Broker 和 Consumer 节点的请求,并根据请求类型调用相应的处理方法进行处理。 总之,RocketMQ NameServer 的主要作用是管理整个 RocketMQ 集群的状态信息,确保集群中各个节点的状态始终保持同步。其源码实现比较复杂,需要深入理解 RocketMQ 的设计思想和架构原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值