200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 查看RocketMQ的broker启动部分源码分析总结

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

时间:2021-06-10 23:49:25

相关推荐

查看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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。