消息中间件之RocketMQ源码分析(十)

news/2024/10/6 19:25:54 标签: rocketmq, java, 消息中间件

Namesrv启动流程

在这里插入图片描述
在这里插入图片描述

第一步:脚本和启动参数配置。

启动命令 nohup ./bin/mqnamesrv -c ./conf/namesrv.conf > dev/null 2>&1 &
通过脚本配置启动基本参数,比如配置文件路径、JVM参数,调用NamesrvStartup.main()方法,解析命令行的参数,将处理好的参数转化为Java实例,传递给NamesrvController实例

第二步:new 一个NamesrvController

在这里插入图片描述

加载命令行传递的配置参数,调用controller.initialize()方法初始化NamesrvController。
Namesrv启动的主要初始化过程也在这个方法中,代码如图
1.加载KV配置。主要是从本地文件中加载KV配置到内存中
2.初始化Netty通信层实例。RocketMQ基于Netty实现了一个RPC服务端,即NettyRemotingServer.通过参数nettyServerConfig,
会启动9876端口监听
3.Namesrv主动检测Broker是否可用,如果不可用就剔除。生产者、消费者也能通过心跳发现被踢出的路由,从而感知Broker下线
4.Namesrv定时打印配置信息到日志中。

第三步:NamesrvController在初始化后添加JVM Hook.Hook中会调用NamesrvController.shutdown()方法来关闭整个Namesrv服务

在这里插入图片描述

第四步:调用NamesrvController.start()方法,启动整个Namesrv。其实start()方法只启动了Namesrv接口处理线程池

Namesrv关闭流程

为什么需要了解停止流程呢?RocketMQ在设计之初已经考虑了很多异常情况,比如Namesrv异常退出、突然断电、内存被打满等等,只有了解了正常的停止流程才能对异常退出导致的问题进行精确的分析和排障。

通常Namesrv的停止是通过关闭命令./mqshutdown namesrv来实现的。这个命令通过调用kill命令将关闭进程通知发给JVM,JVM调用观级Hook执行停止逻辑。具体实现如下
在这里插入图片描述

1.关闭Netty服务端,主要是关闭Netty事件处理器、时间监听器等全部已经初始化的组件
2.关闭Namesrv接口处理线程池
3.关闭全部已经启动的定时任务


http://www.niftyadmin.cn/n/5382213.html

相关文章

5G固定无线接入(FWA)

固定无线接入(FWA) 固定无线接入(Fixed Wireless Access)是使用两个固定点之间的无线电链路提供无线宽带的过程。换句话说,固定无线是一种为家庭或企业提供无线互联网接入的方式,无需铺设光纤和电缆来提供最…

Willem, Chtholly and Seniorious(珂朵莉树)

小时候听说过珂朵莉树的大名,奈何当时没有专业知识看不懂。最近正好想起来了,来补上这个遗憾。 珂朵莉树(Chtholly Tree)又叫老司机树(ODT,Old Driver Tree)。多年前,一位用户 Old …

嵌出式------001

MOS管不可加交流电,而且需要散热 继电器不需要散热,而且可以通过高电压大电流 FT表示可以容忍5V电压 没有就只代表只接收3.3V VSS接地 VDD接正极 一般遇到供电电路都会加上一个滤波电容,可以保证电压供电稳定 STM32一般主晶振都是8MHZ&#x…

前端判断对象为空

一.使用JSON.stringify()方法: JSON.stringify() 是将一个JavaScript对象或值转换为JSON格式字符串,如果最终只得到一个{},就说明他是一个空对象 let obj1 {}; console.log(JSON.stringify(obj1) "{}"); //true 表示为空对象l…

数据传输稳如山,郑州大象陶瓷展文物预防性保护更安心

​一、“人间烟火——古代陶瓷中的衣食住行”郑州展览 2月8日,郑州大象瓷博物馆与郑州紫荆山公园协作,呈现了一场独特的文化盛会。“人间烟火——古代陶瓷中的衣食住行”展览正式拉开帷幕,为市民和游客带来了穿越历史、贯穿古今的文化体验。…

近几年计算机毕设之论文参考文献(Java参考文献、MySQL参考文献、jsp参考文献、Python参考文献、微信小程序参考文献、外文参考文献)(10个一组)

目录 1、Java参考文献 2、JavaWeb参考文献 3、MySQL参考文献 4、Python参考文献 5、微信小程序参考文献 6、Jsp参考文献 7、SpringBoot参考文献 8、vue参考文献 9.ASP.NET参考文献 10、外文参考文献 1、Java参考文献 [1] 丁玉青;孙逸飞;朱敏.基于JAVA的共享蓝牙耳机小…

eNSP学习——RSTP基础配置

目录 知识储备 实验内容: 实验目的: 实验步骤: 实验拓扑 实验编址 MAC地址表 实验步骤 一、基本配置 二、配置RSTP基本功能 三、配置边缘端口 四、查看备份端口状态 RSTP协议是对STP的升级,它重新划定端口的角色及状态,使用更快速的握手协商机制,降低了收敛…

OpenAI视频生成模型Sora背后的技术及其深远的影响

前言 Sora的视频生成技术在保真度、长度、稳定性、一致性、分辨率和文字理解等方面都达到了当前最优水平。其核心技术包括使用视觉块编码将不同格式的视频统一编码成Transformer可训练的嵌入向量,以及类似于扩散过程的UNet方法进行降维和升维的加噪与去噪操作。通过…