• MQ 之 RoketMQ(下载、安装、快速启动、控制台、集群部署)


    前言

    本文记录RocketMQ的相关知识,第一次学MQ,可能记录的不太完整,后续会进行相应的补充说明。

    一、MQ

    1、什么是MQ

    MQ指message queue,是一种提供消息队列服务消息中间件。是一套提供了消息生产、存储、消费全过程API的软件系统。
    MQ最主要的作用:
    限流削峰:MQ可以将系统超量的请求存放其中,以便系统后续慢慢处理,不会导致请求的丢失和系统被压垮。
    异步解耦:上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高。而异步调用则会解决这些问题。可增加MQ转为异步调用。
    数据收集:分布式系统会产生海量级数据流,如:业务日志,监控数据,用户行为等。针对这些数据流进行实时或批量采集汇总,然后对这些数据进行大数据分析,这是当前互联网平台的必备技术。

    2、常见的MQ

    ActiveMQ:Java开发的MQ,目前已经很少使用。
    RabbitMQ:Erlang开发的MQ,吞吐量较RocketMQ和Kafka低。因其开发语言,公司内部对其进行定制化开发难度较大。
    Kafka:Scala/Java开发的MQ,最大特点就是高吞吐率,常用于大数据领域的实时计算,日志采集等场景。其没有遵循任何常见的MQ协议,是使用自研协议。
    RocketMQ:Java开发的MQ,阿里巴巴开发,性能和稳定性都非常高,其没有遵循任何常见的MQ协议,是使用自研协议。

    二、RocketMQ的下载与安装

    下载

    下载地址:官网地址
    官网的下载会比较缓慢,此处提供个人的百度云资源:
    链接:https://pan.baidu.com/s/1cm9tfC4DuKJqmcAVRr8BIA
    提取码:1obe
    官网首页
    在这里插入图片描述
    点击此处链接进行下载。
    zip包下载页

    安装

    1、上传

    将下载好的文件,上传到服务器。
    在这里插入图片描述

    2、解压

    文件为zip,使用unzip解压。

    unzip rocketmq-all-4.9.4-bin-release.zip
    
    • 1

    在这里插入图片描述

    三、RocketMQ的快速启动

    快速启动在官网是写详细步骤的,可以参考官网快速启动

    注意:
    在启动之前,我们需要修改两个文件,分别为bin/runserver.sh和runbroker.sh,因为这两个文件的启动需要特别大的内存,我们需要改小一些,否则会无法启动。当然,如果是真实的服务器,满足条件的情况下是不需要的,一般使用虚拟机的是需要修改的。
    如下:
    runserve.sh:下面的截图只修改了if中的。记得把else里的也一并修改。有的版本和我的版本不一样,大家找到对应的位置修改即可。
    在这里插入图片描述
    runbroker.sh
    在这里插入图片描述
    都按照比例进行修改,这个根据自己电脑的性能修改就好,我是改为了256m和128m,可供参考。

    解下来的命令注意是在mq文件夹下执行哦。否则路径要写绝对路径。

    1、启动Name Server

    # 启动命令
    nohup sh bin/mqnamesrv &
    # 启动后查看是否启动后成功
    tail -f ~/logs/rocketmqlogs/namesrv.log
    # 当发现有The Name Server boot success...表示成功启动
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、启动Broker

    # 启动命令
    nohup sh bin/mqbroker -n localhost:9876 &
    # 启动后查看是否启动后成功
    tail -f ~/logs/rocketmqlogs/broker.log 
    # 当发现有The broker[%s, 172.30.30.233:10911] boot success...表示成功启动
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、发送和接收消息

    启动完成后,我们需要测试一下是否成功启动,是否能够正常运行,我们使用如下操作进行测试。
    我们有很多方式进行发送,最简单的一种就是使用环境变量NAMESRV_ADDR
    发送:

    export NAMESRV_ADDR=localhost:9876
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
    
    • 1
    • 2

    接受:

    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
    
    • 1

    当看见有很多消息出来就表示成功了。耐心等待它运行完就好。

    4、关闭服务

    # 关闭broker
    sh bin/mqshutdown broker
    # 关闭nameserver
    sh bin/mqshutdown namesrv
    
    • 1
    • 2
    • 3
    • 4

    四、RocketMQ的dashboard

    RocketMQ有一个可视化的dashboard控制台,可以非常直观的看到MQ中各项参数。不过需要单独下载、安装、运行。

    1、下载

    下载地址:https://github.com/apache/rocketmq-externals/releases
    在这里插入图片描述
    在这里插入图片描述

    2、修改

    下载后,解压文件,将里面的rocketmq-console项目文件夹单独拎出来,需要对这个文件进行部分修改。
    1) 修改application.properties
    将服务的端口修改了。8080是tomcat默认端口,避免冲突。
    nameserver 的地址也要加上,在启动的时候指定的ip和端口。
    在这里插入图片描述
    2) 添加jaxb依赖

    <dependency>
        <groupId>javax.xml.bindgroupId>
        <artifactId>jaxb-apiartifactId>
        <version>2.3.0version>
    dependency>
    <dependency>
        <groupId>com.sun.xml.bindgroupId>
        <artifactId>jaxb-implartifactId>
        <version>2.3.0version>
    dependency>
    <dependency>
        <groupId>com.sun.xml.bindgroupId>
        <artifactId>jaxb-coreartifactId>
        <version>2.3.0version>
    dependency>
    <dependency>
        <groupId>javax.activationgroupId>
        <artifactId>activationartifactId>
        <version>1.1.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    打包

    进入rocketmq-console项目里,对项目进行打包。使用cmd输入如下命令。此步骤花费时间较长。

    mvn clean package -Dmaven maven.test.skip=true
    
    • 1

    运行

    在target里将打包好的jar包拿出来,然后运行,使用cmd输入如下命令。

    java -jar rocketmq-console-ng-1.0.0.jar
    
    • 1

    测试

    控制台页面地址:localhost:7000
    在message里查看topictest里是否有消息。这是需要测试过消息发送才会有的哦~,也可以看看其他菜单界面。
    在这里插入图片描述

    五、RokectMQ集群搭建

    1、克隆两台虚拟机

    修改虚拟机hostname,设置静态IP,将recketMQ的压缩包上传并解压,修改启动配置,给两台虚拟机增加映射。
    上述操作,上文或本人其他文章都有详细描述,此处不再赘述。
    C:\Windows\System32\drivers\etc\hosts
    在这里插入图片描述

    2、修改配置文件

    因为条件的限制,我只用两台服务器来测试,第一台rocketmq1作为master1和slave2,第二台rocketmq2作为master2和slave1.并且还有充当NameServer和Broker的功能,因此,需要一些配置。
    此处只记录rocketmq1的步骤,rocketmq2的步骤类似。

    2.1 进入rocketmq的conf文件夹

    在这个文件夹里,有三种集群配置模板

    • 2m-2s-async 表示2主2从异步模式
    • 2m-2s-sync 表示2主2从同步模式
    • 2m-noslave 表示2主没有从模式
      在这里插入图片描述

    2.2 进入2m-2s-async这个文件夹

    当前文件夹里有4个配置文件。

    • broker-a.properties 第一个集群master的配置
    • broker-a-s.properties 第一个集群slave的配置
    • broker-b.properties 第二个集群master的配置
    • broker-b-s.properties 第二个集群slave的配置
      在这里插入图片描述
      根据我们的需求,rocketmq1里需要配置master1和slave2,所以我们需要修改broker-a.properties和broker-b-s.properties配置文件

    2.3 修改broker-a.properties

    vim broker-a.properties
    
    • 1

    新增namesrvAddr

    brokerClusterName=DefaultCluster
    brokerName=broker-a
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=ASYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    namesrvAddr=192.168.61.102:9876;192.168.61.103:9876
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.4 修改broker-b-s.properties

    vim broker-b-s.properties
    
    • 1

    新增NameServer地址namesrvAddr
    新增通信端口listenPort
    新增存储位置。因为我们将master和slave都部署一个服务器上,master使用了默认地址,我们就需要将slave 的存储地址进行修改。

    brokerClusterName=DefaultCluster
    brokerName=broker-b
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    namesrvAddr=192.168.61.102:9876;192.168.61.103:9876
    listenPort=11911
    storePathRootDir=~/store-s
    storePathCommitLog=~/store-s/Commitlog
    storePathConsumeQueue=~/store-s/consumequeue
    storePathIndex=~/store-s/index
    storeCheckPoint=~/store-s/checkpoint
    abortFile=~/store-s/abort
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2.5 master配置文件说明

    修改broker-a.properties时,配置文件里各个字段的说明。
    在这里插入图片描述

    2.5 slave配置文件说明

    修改broker-b-s.properties时,配置文件里各个字段的说明。
    在这里插入图片描述

    3、集群的启动

    集群的启动和单机版的启动差别不大,解下来就详细说明一下。

    3.1 启动rocketmq1的NameServer

    # 启动命令
    nohup sh bin/mqnamesrv &
    
    • 1
    • 2

    3.2 启动rocketmq1的master broker

    # 启动命令
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &
    
    • 1
    • 2

    3.3 启动rocketmq1的slave broker

    # 启动命令
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties &
    
    • 1
    • 2

    3.4 启动rocketmq2的NameServer

    # 启动命令
    nohup sh bin/mqnamesrv &
    
    • 1
    • 2

    3.5 启动rocketmq2的master broker

    # 启动命令
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties &
    
    • 1
    • 2

    3.6 启动rocketmq2的slave broker

    # 启动命令
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties &
    
    • 1
    • 2

    启动成功。
    当然,我们也可以使用dashboard,注意,记得修改一下配置文件。
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    【树莓派】windows和树莓派之间文件共享(Samba)
    Spring Cloud Alibaba Seata 实现分布式事物
    Hyperledger Fabric 使用 CouchDB 和复杂智能合约开发
    第六章《类的高级特性》第2节:包的创建和使用
    Hamiton图系列文章 (2) Hamilton图道路矩阵类的乘法设计
    字符编码的历史与发展(ASCII, GBK, Unicode)
    Python性能测试框架Locust实战教程!
    Django框架基础
    SSM+医院移动收费运维平台 毕业设计-附源码161045
    java基本数据类型
  • 原文地址:https://blog.csdn.net/qq_41404112/article/details/126033967