查看RocketMQ的broker启动部分源码分析总结

RocketMQ版本:3.5.8

1、borokerController创建(初始化)

  • 环境变量设置

  • netty相关配置(socket发送缓存大小,接收缓存大小)

  • 命令行参数配置及解析等相关处理

  • BrokerConfig、NettyServerConfig、NettyClientConfig、MessageStoreConfig

  • 配置实例化

  • NettyServerConfig设置监听端口10911

  • 启动参数添加broker配置

  • 日志上下文设置

  • BrokerController实例化,入参是上面的几个相关配置

BrokerController初始化:

  • 加载topics.json,consumeroffset.json,subscriptionGroup.json没有则加载备份

  • 实例化消息存储

  • 根据abort文件是否存在来判断最后一次是否正常退出,存在这个文件就不是,不存在便是正常退出

  • 加载dealyOffset.json

  • 加载commitLog,这不只一个文件,是一个列表,使用文件内存映射,一个文件一个G

  • 加载消费队列:根据每个topic的队列文件,消息队列表添加topic的每个消息队列,每个队列文件也是大文件(但是和上面不一样,它的初始化大小不大)

  • 若上次没有正常退出,加载索引文件并恢复,恢复commitLog(非正常方式),恢复topic队列表

  • NettyRemotingServer设置端口为NettyServerConfig的端口-2(这个端口的说明看最下面)

  • 相关线程池实例化

  • 相关处理器注册(查询、请求、通信等)

  • broker状态定时记录

  • 消费偏移定时持久化(默认是5S,这意味着,消费端消费完消息,只是本地偏移更新,未持久化到broker这里,便非正常关闭消费端,下次重启的时候,未持久化消费进度的消息会重复消费)

  • 消费状态或者能力定时监测并做相应处理(暂时这么命名)

  • 定时打印拉消息,发消息队列大小

  • namesrv地址获取相关策略

  • 从节点同步相关策略

BrokerController初始化完毕,添加关闭钩子,BrokerController实例化完成

2、BrokerController开启

  • DefaultMessageStore开启:相关线程开启

  • NettyRemotionServer开启

  • NettyRemotionServer(占有端口比broker少2)开启

  • 其它几块开启(不描述了,目前不清楚具体作用)

  • 注册broker(broker,namesrv等相关信息,会发送请求给namesrv)

  • 定时注册broker任务开启

3、broker启动后会占用三个端口:

  • 服务器监听端口(默认10911)

  • 高可用端口(监听slave的请求),端口占用为服务器监听端口+1

  • 快速服务器端口(VIP服务端口,也就是说客户端可以选择使用服务器监听端口或者这个端口通信,一般建议是设置VIP渠道为false的,即使用服务器监听端口通信【不设置就是10911这个端口】),这个端口的值为服务器监听端口-2

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不识君的荒漠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值