记录一次windows 安装 RocketMQ以及RocketMQ_console的流程

记录一次windows系统下安装rocketmq 以及 rocketmq_console的问题

windows RocketMQ 安装流程

  1. 在官网下载资源包
    在这里插入图片描述
  2. 解压到某一个目录
  3. RocketMQ解压目录结构说明
    在这里插入图片描述
    bin: 可执行文件目录
    confing:配置文件目录
    lib:依赖库,一堆jar包
  4. 配置RocketMQ_HOME
    在这里插入图片描述
  5. 启动MQ NameServer
    cmd命令框执行:
    start mqnamesrv.cmd
    
    这一步再windows可能会出现以下错误:
    在这里插入图片描述
    这个问题大致说明的是地址(端口)已经被使用,需要变更一下,此时需要补充一个知识点,关于RocketMq的端口信息
  6. 修改RunBroker配置
    进入至MQ文件夹\bin目录下,修改Bean目录下的runbroker.cmd中jvm占用内存的大小
    broker参数配置
  7. cmd执行
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true 

启动Broker

RocketMQ 端口信息说明

在安装rocketmq之后,要开放的端口一般来说有四个:

9876,10911,10912,10909

9876:这个是nameserver中的端口,连接nameserver就靠这个端口
剩余的三个端口都是RocketMQ-Broker中的端口

listenPort:listenPort参数是broker的监听端口号,是remotingServer服务组件使用,作为对Producer和Consumer提供服务的端口号,默认为

10911,可以通过配置文件修改
打开broker-x.conf,修改或者增加listenPort参数

listenPort = 10911

10909:fastListenPort: fastListenPort参数是fastRemotingServer服务组件使用,默认为listenPort - 2 , 可以通过配置文件修改

fastListenPort = 10909

10912:haListenPort, haListenPort参数是HAService服务组件使用,用于Broker的主从同步,默认为ListenPort - 1 可以通过配置文件修改

haListenPort = 10912

RemotingServer 和 fastRemotingServer的区别

Broker端:
remotingServer可以处理客户端的所有请求,如:生产者发送消息的请求,消费者拉取消息的请求,
fastRemotingServer功能基本与remotingServer相同,唯一不同的是不可以处理消费者拉取消息的请求
Broker再向NameServer注册时,只会上报RemotingServer监听的listenPort端口

客户端:
默认情况下,生产者发送消息是请求fastRemotingServer,我们可以通过配置让其请求RemotingServer,消费者拉取消息只能请求remotingServer

解决windows/linux 系统安装rocketMq端口被占用的情况

linux 通过以下命令获取当前端口的服务:

netstat -tlnp | grep 9876

windows可以通过以下命令来看

netstat -ano |findstr “9876”

如果想要关闭当前端口下的所有进程树,可以使用如下命令

taskkill /t /f /pid 461128

RocketMQ 存储结构

RocketMQ安装好之后会再用户目录下产生一个store目录用来存储相关数据
Rocket MQ 存储结构

  • Commitlog: 消息是存储再commintLog目录中,以mapperdFile文件顺序寻出消息
  • Config: 存放运行期间的配置文件
  • Consumerqueue:该目录存放的是队列,consume queue存放着commitlog中消息的索引位置
  • Index:存放着消息索引文件 indexFile, 用来实现根据key进行消息的快速查询
  • Abort: 该文件再broker启动后自动创建,正常关闭abort会消失
  • Checkpoint: 记录Commitlog, Consumerqueue 和 index 文件的最后刷盘时间戳

】RocketMQ数据存储在磁盘会影响性能吗?
不会,RocketMQ的性能在所有的MQ中是比较高的,主要是因为RocketMQ使用了mmap零拷贝技术,consumequeue中的数据是顺序存放的,还引入了PageCache的预读取机制,使得对 consumequeuq文件的读取几乎接近于内存读取,即使在消息堆积情况下也不会影响性能

MMAP 零拷贝技术 简述

Mmap零拷贝原理是一种高效的数据传输方式,它可以再不涉及到CPU的情况下,将数据从此盘或者网络中读取到内存中,这种方式可以大大的提高数据传输的效率,减少CPU的负担,从而提高系统的性能
Mmap零拷贝的核心是内存映射文件。内存映射文件技术是直接将磁盘文件的内容直接映射到内存中,而不需要将数据从磁盘读取到内存中, 这种方式可以避免数据的复制,从而减少CPU的负担,提高传输效率
Mmap零拷贝原理的实现方式是通过系统调用来实现的,在Linux系统中,可以使用mmap()函数来实现内存映射文件,该函数可以将磁盘文件映射到内存中,并返回一个指向映射区域的指针,通过这个指针,可以直接访问磁盘文件的内容,而不需要将数据从磁盘读取到内存中

RocketMq 可视化插件

https://github.com/apache/rocketmq-externals/releases

下载后需要在配置文件 src/main/resource/application.properties 中配置NameServer 的地址和端口
在这里插入图片描述
然后可以再本地使用maven命令来进行打包,然后运行jar包就可以

	mvn clean package -Dmaven.test.skip=true

启动插件

进入到target目录,cmd执行 java -jar rocketmq-console-ng-1.0.0.jar 访问 http://localhost:8080/
启动界面

RocketMQ 的原理

RocketMQ 的 架构

RocketMQ开发官方文档

https://github.com/apache/rocketmq/blob/master/docs/cn/RocketMQ_Example.md
RocketMQ 的集群架构如下
RocketMQ的集群架构图

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值