在Windows/Ubuntu系统安装RocketMQ及其可视化工具

发布时间 2023-12-14 00:43:33作者: 梦想照进现实


本文主要介绍RocketMQ在Windows和Ubuntu系统中的安装及启动,然后简单介绍NameServer、Broker和Proxy在RocketMQ中的角色,以及安装并使用可视化工具Rocket Dashboard

一、在Windows系统安装RocketMQ以及配置环境变量

1. 下载RocketMQ并解压

进入RocketMQ的下载页面,选择要下载的版本,比如这里选择最新的5.1.4的版本,然后选择Binary下载Binary为编译之后的文件,可以直接运行,Source是源码文件,下载之后需要先编译然后才可以运行。

下载完成后,将压缩包解压到指定目录,比如这里解压到 D:\my-software\rocketmq-all-5.1.4-bin-release

2. 配置环境变量

新建环境变量,变量名为ROCKETMQ_HOME,变量值为RocketMQ的解压目录。

然后在Path变量中,添加RocketMQ的bin目录。

二、在Ubuntu/Linux系统安装RocketMQ以及配置环境变量

1. 下载RocketMQ并解压

在Linux系统中,可以使用 wget 命令来下载RocketMQ。首先,进入RocketMQ的下载页面,然后选择要下载的版本,鼠标右键复制链接地址,比如这里选择5.1.4版本。然后打开Linux终端,运行以下命令来下载:

wget https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip

Note:Binary为编译之后的文件,可以直接运行,Source是源码文件,下载之后需要先编译然后才可以运行。

下载之后,运行 ls 命令查看是否下载成功。

然后,安装unzip工具将zip文件解压。

sudo apt install unzip

安装完成后,运行以下命令将下载的RocketMQ解压到指定目录,这里解压到/usr/local目录下。

sudo unzip rocketmq-all-5.1.4-bin-release.zip -d /usr/local/

2. 配置环境变量

首先,运行 sudo vim /etc/profile 打开文件。

然后将以下内容复制到该文件末尾,之后按ESC键,然后按Shift+:,输入wq保存。

export ROCKETMQ_HOME=/usr/local/rocketmq-all-5.0.0-bin-release
export PATH=$PATH:$ROCKETMQ_HOME/bin

保存之后,运行 source /etc/profile 使环境变量生效。

三、RocketMQ中的NameServer、Broker和Proxy

1. RocketMQ 5.0之前的NameServer和Broker

RocketMQ的基础消息模型是基于发布-订阅(Pub-Sub)模型,即生产者(Producer)将消息发送到某个Topic(主题)中,消费者(Consumer)通过订阅该Topic来接收消息。这里的Topic指的是,在开发过程中根据不同的业务,将消息分为不同的类别。比如常见的商城系统,就可以将其分为订单消息、库存消息、物流消息等。这里的订单消息、库存消息、物流消息就是3个Topic(主题)。

但Topic只是一个逻辑概念,是根据不同的业务从而将消息进行分类以作区分。RocketMQ中消息实际是存储在Broker(代理服务器)中的,Broker主要负责消息的发送、查询和存储。

在启动Broker时,需要指定NameServer(名字服务器)的地址,同时将Broker自身的消息发送给NameServer。NameServer主要包括以下两个功能:

  • Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活;
  • 路由信息管理,每个NameServer将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。Producer和Consumer通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。

由此可以看出,我们下载的RocketMQ主要包括两个服务:NameServer和Broker。NameServer主要负责Broker管理和路由信息管理,Broker主要负责消息的发送、查询和存储。因为Broker启动时需要向NameServer注册信息,所以当启动RocketMQ时,首先需要启动NameServer,然后再启动Broker

同时也可以了解RocketMQ基本的工作流程:生产者发送消息时需要指定topicName(主题名称),然后向NameServer查询该Topic的Broker地址。获取到Broker地址后,生产者向Broker发送消息。在RocketMQ中,消费者是主动拉取消息,所以消费者也需要通过topicName向NameServer查询Broker地址,然后再去该Topic查询有没有消息可以消费。

RocketMQ官网中的一张图描述了其基本工作流程:

2. RocketMQ 5.0之后新增的Proxy

在RocketMQ 5.0之后,引入了全新的弹性无状态代理模式,新增了Proxy服务。Proxy将当前Broker的职责进行拆分,承担了客户端的协议适配、权限管理、消费管理等计算功能,使Broker更专注于存储能力,而Broker专注于计算能力,将存储和计算分离。

下图说明了RocketMQ 5.0之后的架构:

四、启动RocketMQ

首先我们下载RocketMQ并配置了环境变量,之后又了解了RocketMQ中的NameServer、Broker和Proxy的作用,然后就可以启动RocketMQ了。Note:运行RocketMQ需要提前配置好Java环境变量!

1. 在Windows中启动RocketMQ

首先在终端执行 mqnamesrv 命令打开NameServer,该服务默认占用9876端口号。然后执行 mqbroker -n localhost:9876 命令启动Broker。

2. 在Ubuntu/Linux系统中启动RocketMQ

2.1 修改NameServer和Broker初始堆内存

在Linux系统中,启动NameServer时默认占用的JVM堆内存大小为4G,而启动Broker则需要占用8G的JVM堆内存。所以大多数情况下,需要根据计算机实际内存来修改堆内存大小。

修改NameServer和Broker初始堆内存涉及RocketMQ中bin目录下的两个文件:runserver.shrunbroker.sh

  1. 终端运行 sudo vim /usr/local/rocketmq-all-5.1.4-bin-release/bin/runserver.sh 命令打开文件,需要修改的部分如下图所示:

    比如计算机内存为4G,这里可以将NameServer初始堆内存设置为512M。

    -Xms512M -Xmx512M -Xmn256M
    -Xms512M -Xmx512M
    
  2. 终端运行 sudo vim /usr/local/rocketmq-all-5.1.4-bin-release/bin/runbroker.sh 命令打开文件,需要修改的部分如下图所示:

    比如计算机内存为4G,这里可以将Broker初始堆内存设置为1G。

    -Xms1g -Xmx1g
    

修改完成之后保存退出,这样就修改了NameServer和Broker初始堆内存。

2.2 启动NameServer和Broker

使用以下命令来启动NameServer:

nohup mqnamesrv > /dev/null 2>&1 &

这里的nohup表示不挂断地运行命令,即命令执行到一半即使把终端关掉,该命令也会执行下去,末尾的&表示该命令后台运行,不会把日志输出到终端。而nohup命令默认会输出日志文件nohup.out,由于RocketMQ已经有自己的日志文件,所以使用> /dev/null 2>&1使其不会生成nohup.out日志文件。

接下来运行以下命令来查看NameServer启动是否成功:

tail -f ~/logs/rocketmqlogs/namesrv.log

NameServer默认占用9876端口号,启动NameServer之后,再以Local模式启动Broker和Proxy。Broker默认端口号为10911,Proxy默认占用端口号为8081

nohup mqbroker -n localhost:9876 --enable-proxy > /dev/null 2>&1 &

然后查看Broker启动是否成功:

tail -f ~/logs/rocketmqlogs/proxy.log

五、安装并可视化工具RocketMQ Dashboard

RocketMQ Dashboard是RocketMQ的可视化工具,有了可视化工具就可以不需要使用命令行来操作RocketMQ。安装RocketMQ Dashboard有两种方式:源码安装和Docker安装。点击这里可访问RocketMQ的github仓库下载源码。

但这里推荐使用Docker安装,相对源码安装要简单得多。如果电脑中没有安装Docker,可参考这篇文章来安装。

5.1 使用Docker下载RocketMQ Dashboard镜像

打开终端,运行以下命令来下载最新的RocketMQ Dashboard镜像:

sudo docker pull apacherocketmq/rocketmq-dashboard:latest

5.2 运行RabbitMQ Dashboard镜像

下载完成后,运行以下命令运行:

docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 apacherocketmq/rocketmq-dashboard:latest

Note: 因为NameServer运行在主机上,Dashboard运行在Docker容器里,所以这里的127.0.0.1:9876指的是Docker容器中的端口,如果使用该地址会导致Dashboard连接不上NameServer。所以这里首先需要查询主机IP地址,然后修改为主机IP地址。

  • -d: 表示后台运行容器,并返回容器ID
  • --name:表示为容器起别名
  • -e:设置环境变量
  • -p: 映射Docker容器端口和宿主机端口,比如计算机中8080端口被占用,可以使用-p 8081:8080来解决

运行完成之后,此时使用浏览器打开IP:8080端口即可访问RocketMQ Dashboard页面。如下图所示:

至此,已完成了在Windows/Ubuntu系统中安装RocketMQ及其可视化工具。如果有所帮助的话,麻烦点个赞或请作者吃包辣条吧!

参考链接

https://rocketmq.apache.org
https://github.com/apache/rocketmq-dashboard
https://www.toutiao.com/article/7081097753195364867