MQ概述及RocketMQ在Linux下的安装和启动


一、MQ概述

1.1、MQ简介

MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。

1.2、MQ用途

从网上可以查看到很多的关于MQ用途的叙述,但总结起来其实就以下三点:

1.限流削峰

MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。
在这里插入图片描述

2.异步解耦

上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高。
而异步调用则会解决这些问题。所以两层之间若要实现由同步到异步的转化,一般性做法就是,在这两层间添加一个MQ层。

在这里插入图片描述

3.数据收集

分布式系统会产生海量级数据流,如:业务日志、监控数据、用户行为等。针对这些数据流进行实时或批量采集汇总,然后对这些数据流进行大数据分析,这是当前互联网平台的必备技术。通过MQ完成此类数据收集是最好的选择。

1.3、MQ劣势

系统可用性降低

系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。需利用各种手段提高MQ的可用性。

系统复杂度提高

MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用。 需要处理MQ的可靠性问题,防止消息丢失。

1.4、MQ可靠性核心问题

生产者发送消息的可靠性

生产者如何确保成功发送消息到MQ。 同步重试还是异步回调。

MQ自身可靠性

已返回成功接收消息时,如何确保消息不丢失。—— 持久化机制。

消费者消费消息的可靠性

如何确保一定有消费者成功消费消息。—— 如何ACK。

二、RocketMQ简介

官方:https://rocketmq.apache.org/

RocketMQ是一个统一消息引擎、轻量级数据处理平台,是⼀款阿⾥巴巴开源的消息中间件。2016年11⽉28⽇,阿⾥巴巴向 Apache 软件基⾦会捐赠RocketMQ,成为 Apache 孵化项⽬。2017 年 9 ⽉ 25 ⽇,Apache 宣布 RocketMQ孵化成为 Apache 顶级项目(TLP ),成为国内⾸个互联⽹中间件在 Apache 上的顶级项⽬。

三、RocketMQ的安装与启动

3.1基本概念

3.1.1 消息(Message)

消息是指,消息系统所传输信息额物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。

3.1.2 主题(Tpotic)

Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。 其实主题就是把消息进行分类。

一个生产者可以同时发送多种Topic的消息;而一个消费者只对某种特定的Topic感兴趣,即只可以订阅和消费一种Topic的消息。
在这里插入图片描述

生产者对主题为一对多;消费者对主题为一对一
producer:topic 1:n consumer:topic 1:1
主题对信息为一对多;信息对主题为一对一
topic:message 1:n message:topic 1:1

3.2单机安装与启动

3.2.1准备工作

软硬件需求:系统要求是64位的,JDK要求是1.8及其以上版本的。

下载RocketMQ安装包:
https://archive.apache.org/dist/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip

将下载的安装包上传到Linux(也可以直接使用wget命令下载到Linux)

[root@iZ2ze2rikqlh3ql1n2cw61Z soft]# yum install -y unzip	
[root@iZ2ze2rikqlh3ql1n2cw61Z soft]# unzip rocketmq-all-4.9.0-bin-release.zip
[root@iZ2ze2rikqlh3ql1n2cw61Z soft]# cd rocketmq-all-4.9.0-bin-release/
[root@iZ2ze2rikqlh3ql1n2cw61Z rocketmq-all-4.9.0-bin-release]# ll
total 48
drwxr-xr-x 2 root root  4096 Jun 11  2021 benchmark
drwxr-xr-x 3 root root  4096 Jun 11  2021 bin
drwxr-xr-x 6 root root  4096 Jun 11  2021 conf
drwxr-xr-x 2 root root  4096 Jun 11  2021 lib
-rw-r--r-- 1 root root 17327 Jun  9  2021 LICENSE
-rw-r--r-- 1 root root  1338 Jun  9  2021 NOTICE
-rw-r--r-- 1 root root  5132 Jun  9  2021 README.md

3.2.2、修改初始内存

3.2.2.1、修改runserver.sh

使用vim命令打开bin/runserver.sh文件。现将这些值修改为如下:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
3.2.2.2、修改runbroker.sh

使用vim命令打开bin/runbroker.sh文件。现将这些值修改为如下:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g"

3.2.3启动

启动NameServer

### start namesrv
$ nohup sh bin/mqnamesrv &
 
### verify namesrv 
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

查看进程:

[root@iZ2ze2rikqlh3ql1n2cw61Z rocketmq-all-4.9.0-bin-release]# jps
20147 NamesrvStartup
20167 Jps

启动 Broker

### start broker
$ nohup sh bin/mqbroker -n localhost:9876 &

### verify broker
$ tail -f ~/logs/rocketmqlogs/broker_default.log 
The broker[broker-a,192.169.1.2:10911] boot success...

3.2.4、发送/接收消息测试

$ export NAMESRV_ADDR=localhost:9876
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
 SendResult [sendStatus=SEND_OK, msgId= ...

$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 ConsumeMessageThread_%d Receive New Messages: [MessageExt...

3.5、关闭Server

$ sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

$ sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

四、控制台的安装和启动

4.1、是什么

RocketMQ有一个可视化的dashboard,通过该控制台可以直观的查看到很多数据。

4.2、下载地址

官方地址:https://github.com/apache/rocketmq-dashboard

4.3、修改配置

修改其src/main/resources中的application.properties配置文件。
原来的端口号为8080,修改为一个不常用的,如7777
指定RocketMQ的name server地址(即要访问的linux虚拟机IP地址)
在这里插入图片描述

4.4、添加依赖

在解压目录rocketmq-console的pom.xml中添加如下JAXB依赖。

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

4.5、打包

在rocketmq-console目录下运行maven的打包命令。

mvn clean package -Dmaven.test.skip=true

4.6、启动控制台

java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

4.7、访问控制台

http://localhost:7777/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值