RocketMQ云服务器和本地基础安装搭建及可视化控制台安装使用

news2024/9/22 11:27:41

一起学编程,让生活更随和!

如果你觉得是个同道中人,欢迎关注博主gzh:【随和的皮蛋桑】。

专注于Java基础、进阶、面试以及计算机基础知识分享🐳。偶尔认知思考、日常水文🐌。

在这里插入图片描述


目录

  • 一、RocketMQ 介绍
    • 1、RocketMQ是什么?
    • 2、MQ 的应用场景
      • 2.1、异步任务处理
      • 2.2、应用程序解耦合
      • 2.3、日志收集
    • 3、消息队列技术选型对比
  • 二、RocketMQ 安装和基础使用
    • 1、RocketMQ组成结构
      • 1.1、交互过程
      • 1.2、集群作用
    • 2、RocketMQ安装
      • 2.1、本地Windows安装
        • 2.1.1、环境要求
        • 2.1.2、下载
        • 2.1.3、环境搭建
        • 2.2.4、测试
      • 2.2、云服务器Linux安装
        • 2.2.1、环境要求
        • 2.2.2、环境搭建
        • 2.2.3、测试
    • 3、安装可视化控制台

一、RocketMQ 介绍

1、RocketMQ是什么?

RocketMQ是阿里开源的一款非常优秀中间件产品,脱胎于阿里的另一款队列技术MetaQ,后捐赠给Apache基金会作为一款孵化技术,仅仅经历了一年多的时间就成为Apache基金会的顶级项目。并且它现在已经在阿里内部被广泛的应用,并且经受住了多次双十一的这种极致场景的压力。(2017年的双十一,RocketMQ流转的消息量达到了万亿级,峰值TPS达到5600万)。并且其内部通过Java语言开发,便于阅读与修改。

RocketMQ官: http://rocketmq.apache.org/

2、MQ 的应用场景

MQ全称为Message Queue,即消息队列, 开发中消息队列通常有如下应用场景:

2.1、异步任务处理

将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。

传统方式:

在这里插入图片描述

改造后,交互流程如下:

  1. 订单服务发消息到消息队列。
  2. 消息队列将消息发给仓储服务和物流服务。
  3. 仓储服务和物流服务接收到消息进行业务处理。

在这里插入图片描述

2.2、应用程序解耦合

MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解耦合。
举例:上图中,消息队列将订单服务和仓储服务进行解耦合,将订单服务和物流服务进行解耦合。

2.3、日志收集

进行统一业务日志收集,供分析系统进行数据分析,消息队列作为日志数据的中转站。
交互流程如下:
1、采集系统从log日志文件采集数据,发送至消息队列 。
2、各日志需求服务从消息队列 接收消息进行日志处理。

在这里插入图片描述

3、消息队列技术选型对比

市场上还有哪些消息队列?

ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,Redis等

本项目选用RocketMQ的一个主要原因如下 :

  1. 支持事务消息
  2. 支持延迟消息
  3. 天然支持集群、负载均衡
  4. 支持指定次数和时间间隔的失败消息重发

详细的技术选型对比如下:

RabbitMQ:

优点:                           
    1.支持AMQP协议                                           
    2.基于erlang语言开发,高并发性能较好                         
    3.工作模式较为灵活      
    4.支持延迟消息
    5.提供较为友好的后台管理页面 
    6.单机部署,1~2WTPS    
缺点:
    1.不支持水平扩容    
    2.不支持事务    
    3.消息吞吐量三者最差    
    4.当产生消息堆积,性能下降明显    
    5.消息重发机制需要手动设置    
    6.不支持消息重复消费 

RocketMQ:

优点:
    1.高可用,高吞吐量,海量消息堆积,低延迟性能上,都表现出色    
    2.api与架构设计更加贴切业务场景    
    3.支持顺序消息    
    4.支持事务消息    
    5.支持消息过滤    
    6.支持重复消费    
    7.支持延迟消息    
    8.支持消息跟踪    
    9.天然支持集群、负载均衡    
    10.支持指定次数和时间间隔的失败消息重发    
    11.单机部署,5~10WTPS    
缺点:
    1.生态圈相较Kafka有所不如    
    2.消息吞吐量与消息堆积能力也不如Kafka    
    3.不支持主从自动切换    
    4.只支持Java

Kafka:

优点:
    1.高可用,高吞吐量,低延迟性能上,都表现出色    
    2.使用人数多,技术生态圈完善    
    3.支持顺序消息    
    4.支持多种客户端    
    5.支持重复消费    
缺点:
    1.依赖分区,消费者数量受限于分区数    
    2.单机消息过多时,性能下降明显    
    3.不支持事务消息    
    4.不支持指定次数和时间间隔的失败消息重发

二、RocketMQ 安装和基础使用

1、RocketMQ组成结构

在这里插入图片描述

1.1、交互过程

  1. Brokder定时发送自身状态 到NameServer。
  2. Producer 请求NameServer获取Broker的地址。
  3. Producer 将消息发送到Broker中的消息队列。
  4. Consumer订阅Broker中的消息队列,通过拉取消息,或由Broker将消息推送至Consumer。

1.2、集群作用

1)Producer Cluster 消息生产者集群

  • 负责发送消息,一般由业务系统负责产生消息。

2)Consumer Cluster 消费者集群

  • 负责消费消息,一般是后台系统负责异步消费。
  • 两种消费模式:
    • Push Consumer,服务端向消费者端推送消息
    • Pull Consumer,消费者端向服务定时拉取消息

3)NameServer 名称服务器

  • 集群架构中的组织协调员,相当于注册中心,收集 broker的工作情况,不负责消息的处理

4)Broker 消息服务器

  • 是 RocketMQ的核心,负责消息的接受,存储,发送等。
  • 需要定时发送自身状态 到NameServer,默认10秒发送一次,超时2分钟会认为该broker失效。

2、RocketMQ安装

RocketMQ安装:本地Windows版本和云服务器Linux版本。

2.1、本地Windows安装

2.1.1、环境要求

  1. 64位JDK 1.8+;
  2. Maven 3.2.x;
  3. 64位操作系统。

2.1.2、下载

官网下载地址:https://archive.apache.org/dist/rocketmq/

根据需要下载对应的版本,本文介绍采用:4.5.0

下载后解压到一个没有空格和中文的目录。

在这里插入图片描述

2.1.3、环境搭建

maven 采用3.2.x 及以上版本均可(自行找教程下载安装即可)。

1)参数配置

开发环境不需要太多的内存,这里调小一点。

Broker默认磁盘空间利用率达到85%就不再接收,这里在开发环境可以提高磁盘空间利用率报警阀值为98%。

调整默认的内存大小参数,切换到bin目录下,编辑runserver.cmd

cd bin/
vim runserver.cmd

在这里插入图片描述

修改为如下:

set "JAVA_OPT=%JAVA_OPT% ‐server ‐Xms512m ‐Xmx512m ‐Xmn512m ‐XX:MetaspaceSize=128m ‐XX:MaxMetaspaceSize=320m"

bin目录下,编辑修改runbroker.cmd

cd bin/
vim runbroker.cmd

在这里插入图片描述

修改为如下:

set "JAVA_OPT=%JAVA_OPT% ‐server ‐Drocketmq.broker.diskSpaceWarningLevelRatio=0.98 ‐Xms512m ‐Xmx512m ‐Xmn512m"

指定broker的命名空间地址,编辑broker.conf

在这里插入图片描述

默认情况下,namesrvAddr127.0.0.1:9876

2)配置环境变量

路径只到解压目录即可:

在这里插入图片描述

3)启动NameServer

打开cmd窗口,切换到bin目录:

d:
cd D:\Software\MQ\rocketmq-all-4.5.0-bin-release\bin
start mqnamesrv.cmd

在这里插入图片描述

4)启动Broker

打开cmd窗口,切换到bin目录下:

# -n:指定NameServer的地址
start mqbroker.cmd ‐n 127.0.0.1:9876 autoCreateTopicEnable=true

在这里插入图片描述

此窗口也不要关闭。

2.2.4、测试

bin目录下专门提供了一个tools.cmd工具类,可以测试namesrvbroker是否真正启动成功!

1)打开cmd窗口【发送消息】

set NAMESRV_ADDR=127.0.0.1:9876
cd D:\Software\MQ\rocketmq-all-4.5.0-bin-release\bin
# 启动生产者
tools.cmd org.apache.rocketmq.example.quickstart.Producer

如果启动报错,仔细检查启动namesrvbroker的参数配置,以及tools.cmd的参数配置!!!

正确启动如下:

在这里插入图片描述

2)打开cmd窗口【接收消息】

set NAMESRV_ADDR=127.0.0.1:9876
cd D:\Software\MQ\rocketmq-all-4.5.0-bin-release\bin
# 启动消费者
tools.cmd org.apache.rocketmq.example.quickstart.Consumer

在这里插入图片描述

windows下安装和测试完成!!!

2.2、云服务器Linux安装

2.2.1、环境要求

下载地址和环境要求和上述要求大致保持一致!!!

2.2.2、环境搭建

前提是要拥有一个云服务器,我购买的是阿里云轻量级服务器,自己玩够用了,当然如果没条件也可以自己在本地使用VMware一样效果。

如果想购买云服务器,传送门:https://blog.csdn.net/qq_52596258/article/details/121290659

1)使用远程链接工具(Tabby)和SFTP工具将其上传到服务器上:

在这里插入图片描述

2)解压

# 解压
unzip rocketmq-all-4.5.0-bin-release.zip

# 将解压包,移动到指定路径下
mv rocketmq-all-4.5.0-bin-release ../software

3)参数配置

runserver.sh

runbroker.sh

tools.sh

上述配置文件的jvm参数和windows下的配置保持一致即可!!!

云服务器需要在broker.conf文件最下面添加如下配置:

brokerIP = 服务器公网IP

# eg
brokerIP = 106.15.0.30

4)操作指令【bin目录下】

# 启动 nameserver
nohup sh mqnamesrv -n 106.15.0.30:9876 &

# 启动 broker
nohup sh mqbroker -n 106.15.0.30:9876 -c ../conf/broker.conf autoCreateTopicEnable=true &

# 查看进程
jps -l

在这里插入图片描述

# 关闭服务
sh mqshutdown namesrv
sh mqshutdown broker

2.2.3、测试

1)启动Producer【发送消息】

# 生产者
sh tools.sh org.apache.rocketmq.example.quickstart.Producer

在这里插入图片描述

2)启动Consumer【接收消息】

# 消费者
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

在这里插入图片描述

Linux下搭建成功!

3、安装可视化控制台

1)下载

RocketMQ提供了UI管理工具,名为rocketmq-console,项目地址:https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console

这个是rocketmq的扩展,里面不仅包含控制台的扩展,也包含对大数据flume、hbase等组件的对接和扩展。

在这里插入图片描述

2)上传解压

为了演示服务器版搭建,我直接下载上传至云服务器:

在这里插入图片描述

# 解压
unzip rocketmq-console.zip

# 移动到software目录下
mv rocketmq-console ../software

3)修改配置参数

修改rocketmq-console\src\main\resources\application.properties配置文件

在这里插入图片描述

4)打包

进入rocketmq-console目录下

打开cmd窗口执行:

mvn clean package ‐Dmaven.test.skip=true

5)启动

进入/rocketmq-console/target目录下执行:

# 指定端口号和命名空间地址
java -jar rocketmq-console-ng-1.0.1.jar --server.port=9877 --rocketmq.config.namesrvAddr=106.15.0.30:9876

在这里插入图片描述

虽然console启动成功,想控制台不报错误日志,必须先启动namesrvbroker,让console连接上命名空间和broker

6)访问

http://106.15.0.30:9877

如果无法访问,很有可能是服务器的防火墙没有开放端口号,步骤如下:

# 查看防火墙状态
systemctl status firewalld

# 关闭防火墙
systemctl stop firewalld

# 启动防火墙
systemctl start firewalld

# 永久开放指定端口号【把用到的端口号都开放】
firewall-cmd --zone=public --add-port=10909/tcp --permanent
firewall-cmd --zone=public --add-port=10911/tcp --permanent
firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=9877/tcp --permanent

# 重新加载防火墙
firewall-cmd --reload

# 或者重启防火墙
systemctl restart firewalld.service

# 查看防火墙信息列表
firewall-cmd --list-all

# 只查看防火墙开放端口号列表
firewall-cmd --list-ports

在这里插入图片描述

防火墙端口号开放之后,同时也要在ECS服务器安全组中添加端口规则:

在这里插入图片描述

入方向和出方向最好都添加上。

再次访问:http://106.15.0.30:9877

如果还不行,那这个时候不要着急,着急也没有用,我们先来理下思路,

  1. 防火墙端口号打开了
  2. 安全组规则添加了

还访问不了,是不是还有防火墙,果然上网搜索,发现阿里云服务器还有一层防火墙iptables,应该是默认配置的,如何关闭或者在这层防火墙也开放端口号,步骤如下:

# 查看防火墙状态出现的问题
service iptables status

# 关闭防火墙
service iptables stop

如果上述命令报错,可能是没有安装iptable,但是默认确实有这一层防火墙的。

解决办法:打开阿里云进入轻量级服务器界面,左边菜单栏有一个防火墙tab,这个代表的就是iptable,直接在这添加端口开放规则

在这里插入图片描述

再次访问:http://106.15.0.30:9877

在这里插入图片描述

大功告成,访问成功,撒花!!!


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式事务--理论基础

1、事务基础 1.1、什么是事务 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。 1.2、本地事务 在同一个进程内,控制同一数据源的事务,称为本地事务。例如数据库事务。 在计…

PyTorch 并行训练 DistributedDataParallel完整代码示例

使用大型数据集训练大型深度神经网络 (DNN) 的问题是深度学习领域的主要挑战。 随着 DNN 和数据集规模的增加,训练这些模型的计算和内存需求也会增加。 这使得在计算资源有限的单台机器上训练这些模型变得困难甚至不可能。 使用大型数据集训练大型 DNN 的一些主要挑…

SpringBoot监控

文章目录一、PrometheusGrafana监控Springboot1、简介2、SpringBoot应用镜像搭建2.1 springboot应用创建2.2 镜像创建3、Prometheus3.1 概述3.2 Prometheus创建4、Grafana可视化监控4.1 可视化4.2 告警设置二、轻量级日志系统Loki1、简介1.1 介绍1.2 与ELK差异2、grafana loki日…

linux宝塔安装和部署node全栈项目

使用服务器:阿里云ECS系列 服务器操作系统: Alibaba Cloud Linux 2.1903 LTS 64位 连接服务器方式: Workbench远程连接 使用公网IP登录 Workbench远程桌面,使用命令安装linux宝塔面板操作服务器: 1.登录linux宝塔面板,使用终端命令安装linux宝塔 yum i…

【操作系统】计算机系统概述

文章目录操作系统的概念、功能和目标熟悉的操作系统计算机系统的层次结构操作系统的概念操作系统的功能和目标作为系统资源的管理者作为用户和计算机之间的接口作为最接近硬件的层次操作系统的四个特征并发共享并发和共享的关系虚拟异步操作系统的发展和分类手工操作阶段单道批…

1207. 大臣的旅费/树的直径【AcWing】

1207. 大臣的旅费 很久以前,T王国空前繁荣。 为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大…

使用Docker-Compose搭建Redis集群

1. 集群配置3主3从由于仅用于测试,故我这里只用1台服务器进行模拟redis列表2.编写redis.conf在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis…

Python 使用 pip 安装 matplotlib 模块(秒解版)

长话短说:本人下载 matplotlib 花了大概三个半小时屡屡碰壁,险些暴走。为了不让新来的小伙伴走我的弯路,特意创作本片文章指明方向。 1.首先需要下载 python 我直接是在电脑自带的软件商店里下载的,图方便,当然在官网下…

操作系统 四(设备管理)

I/O系统功能 隐藏I/O设备的细节;保证设备无关性;提高处理机和I/O设备的利用率;对I/O设备进行控制;确保对设备的正确共享;处理错误。中断、通道、DMA概念 中断:CPU对I/O设备发来的中断信号的一种响应DMA&am…

【配电网优化】基于串行和并行ADMM算法的配电网优化研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

超详细讲解文件函数

超详细讲解文件函数!!!!字符输入/输出函数fgetcfputc文本行输入/输出函数fgetsfputs格式化输入/输出函数fscanffprintf二进制输入/输出函数freadfwrite打开/关闭文件函数fopenfclose字符输入/输出函数 fgetc fgetc函数可以从指定…

个人谈谈对ThreadLocal内存泄露的理解

个人谈谈对ThreadLocal内存泄露的理解ThreadLocal作用ThreadLocalMap内存泄露解释为什么要这样设计ThreadLocalMap的实现思路ThreadLocal作用 平时我们会使用ThreadLocal来存放当前线程的副本数据,让当前线程执行流中各个位置,都可以从ThreadLocal中获取…

Java SPI 机制详解

在面向对象的设计原则中,一般推荐模块之间基于接口编程,通常情况下调用方模块是不会感知到被调用方模块的内部具体实现。一旦代码里面涉及具体实现类,就违反了开闭原则。如果需要替换一种实现,就需要修改代码。 为了实现在模块装…

使用packetbeat对MySQL进行网络抓包

文章目录一、Packetbeat 简介二、packetbeat部署和使用2.1 官方下载解压2.2 修改配置文件2.3 导入索引模板和dashboard2.4 启动packetbeat三、效果展示一、Packetbeat 简介 Packetbeat 是一款轻量型实时网络数据包分析器,能够将主机和容器中的数据发送至 Logstash 或…

uboot编译分析

uboot编译分析 V 1 –> Q ,在一行命令前面加上表示不会在终端输出命令 KCONFIG_CONFIG ? .config.config 默认是没有的,默认是需要使用命令“make xxx_defconofig”先对uboot进行配置,配置完成就会在uboot根目录下生成.config。如果后续自行调整…

多种方法解决谷歌(chrome)、edge、火狐等浏览器F12打不开调试页面或调试模式(面板)的问题。

文章目录1. 文章引言2. 解决问题3. 解决该问题的其他方法1. 文章引言 不论是前端开发者,还是后端开发者,我们在调试web项目时,偶尔弹出相关错误。 此时,我们需要打开浏览器的调试模式,如下图所示: 通过浏…

智能拣配单解决方案

电子货架标签系统(ESLs),是一种放置在货架上、可替代传统纸质价格标签的电子显示装置, 每一个电子货架标签通过有线或者无线网络与商场计算机数据库相连, 并将最新的商品价格通过电子货架标签上的屏显示出来。 电子…

基于微信小程序图书馆管理系统

开发工具:IDEA、微信小程序服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7前端技术:vue、uniapp服务端技术:springbootmybatis-plus本系统分微信小程序和管理后台两部分,项…

量子计算(7)pyqpanda编程2循环与条件判断

目录 一、QWhile 二、QIf 各位读者老爷们,大家好呀,前些时忙着学校的期末考试,小编好久没更新量子计算的文章啦,这段时间也有读者私信小编,问了一些问题。我知道大家都很急,但大家先别急。这不&#xff0…

【数据结构】——队列

文章目录前言一.什么是队列,队列的特点二、队列相关操作队列的相关操作声明队列的创建1.队列的初始化2.对队列进行销毁3.判断队列是否为空队列4.入队操作5.出队操作6.取出队头数据7. 取出队尾数据8.计算队伍的人数总结前言 本文章讲述的是数据结构的特殊线性表——…