broker启动过程源码分析

发布时间 2023-03-30 13:54:30作者: 大坝谁修哈

1 broker源码入口

  

2 创建broker控制器

  2.1 设置netty发送和接收buf大小,默认为128k

  

  2.2 加载命令行的参数信息

  

  2.3 生成broker配置对象

  

  2.4 生成netty配置对象,包括server和client的,broker既作为client和nameServer进行通信,也作为server和业务程序进行通信

  

  2.5 绑定监听端口10911

  

  2.6 生成信息存储组件配置对象

  

  2.7 如果是从节点,设置最大内存消息访问比例为30

  

  2.8 加载启动命令 -c 执行的配置信息

  

  2.9 校验配置的nameServer格式

  2.10 校验brokerId,主节点默认设置为0,从节点,id必须 > 0

  

  2.11 是否启用dledger主从切换,默认false,如果启动设置brokerId = -1

  

  2.12 设置ha端口8889

  

  2.13 打印配置信息

  

  2.14 生成broker控制器,包括一大堆rocketmq的组件

  

  2.15 合并所有的配置信息

  

  2.16 初始化broker控制器

  

    2.16.1 从文件中加载topic信息

  

    2.16.2 加载消息偏移量信息

  

    2.16.3 加载订阅情况

   

    2.16.4 加载消费过滤器信息

   

    2.16.5 初始化消息存储组件

    2.16.6 初始化消息统计组件

  

    2.16.7 加载消息存储组件

  

    2.16.8 初始化netty配置

  

    2.16.9 初始化发送消息的线程池

  

    2.16.10 初始化拉取消息的线程池

  

    2.16.11 初始化处理回复消息的线程池

  

    2.16.12 初始化查询消息的线程池

  

    2.16.13 初始化管理客户端的线程池

  

    2.16.14 初始化心跳线程池

  

    2.16.15 初始化事务线程池

  

    2.16.16 初始化消费者管理线程池

  

    2.16.17 注册处理器

  

    2.16.18 定时计算前一天的消息总量,每24小时执行一次

  

    2.16.19 每5s持久化一次消费水位

  

    2.16.20 每10s持久化一次消费者过滤器

  

    2.16.21 每3m执行一次broker保护逻辑,如果消费进度大于执行的阈值,就剔除消费组

  

    2.16.22 定时打印mq水位信息

  

    2.16.23 定时打印剩余的偏移量
    2.16.24 更新nameServer配置

  

    2.16.25 自动主从切换相关的逻辑

  

    2.16.26 初始化事务相关的组件

  

  2.17 设置关闭时的回调函数

  

3 启动broker控制器

  

  3.1 启动消息存储组件

  

  3.2 启动netty server

  

  3.3 启动fast netty server

  

  3.4 启动文件监听服务

  

  3.5 启动netty client

  

  3.6 启动消息保持组件

  

  3.7 启动client状态检查服务

  

  3.8 启动过滤服务组件

  

  3.9 主从自动切换组件

  

  3.10 broker注册逻辑,向每一个nameServer都注册一遍

  3.11 启动统计管理器

  

  3.12 启动快速失败组件