首页 > 系统相关 >RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装

RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装

时间:2023-12-27 22:33:19浏览次数:42  
标签:bin 单机 -- Broker Topic sh Linux RocketMQ

欢迎关注公众号【11来了】,发送笔记可领取 Redis、JVM 等系列完整 pdf!


MQ 之间的对比

三种常用的 MQ 对比,ActiveMQ、Kafka、RocketMQ

性能方面:

  • 三种 MQ 吞吐量级别为:万,百万,十万
  • 消息发送时延:毫秒,毫秒,微秒
  • 可用性:主从,分布式,分布式

扩展性方面:

  • 水平伸缩能力:均支持
  • 技术栈:Java,Java/Scala,Java

功能维度方面:

  • 消息重试能力:均支持
  • 消息堆积能力:跟吞吐量成正相关,三种 MQ 分别为:弱,强,强
  • 消息过滤:支持,不支持,支持
  • 延迟消息:均支持
  • 消息回溯(用于消费者宕机恢复后,回溯到宕机前消费的位置):不支持,支持,支持

RocketMQ 领域模型

  • Topic:主题,可以理解为类别、分类的概念
  • MessageQueue:消息队列,存储数据的一个容器(队列索引数据),默认每个 Topic 下有 4 个队列被分配出来存储消息
  • Message:消息,真正携带信息的载体概念
  • Producer:生产者,负责发送消息
  • Consumer:消费者,负责消费消息
  • ConsumerGroup:众多消费者构成的整体或构成的集群,称之为消费者组
  • Subscription:订阅关系,消费者得知道自己需要消费哪个 Topic 下的哪个队列的数据
  • Message Queue:一个 Topic 下可以设置多个消息队列,发送消息的时候,RocketMQ 会轮询该 Topic 下的所有队列将消息发送出去(下图中 Broker 中 Topic 指向的 Q1、Q2、Q3、Q4 就是 MessageQueue)
  • Tag:对 Topic 的进一步细化
  • Broker:Broker 是 Rocket MQ 的主要角色,主要管理消息的存储、发送、查询等功能
  • Name Server:提供轻量级的服务发现,用于存储 Topic 和 Broker 关系信息
    主要功能:
  1. 接收 Broker 的注册,并提供心跳机制去检查 Broker 是否存活
  2. 路由管理,每个 nameserver 都有整个 Broker 集群的路由信息和客户端的查询队列

RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装_JVM




Rocket MQ 单机服务启动

RocketMQ 官方下载地址:https://rocketmq.apache.org/zh/download/

单机服务启动,选择二进制文件进行下载:

RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装_Java_02


将二进制文件上传至服务器,进行解压:

# 安装 unzip 命令
yum install unzip
# 解压
unzip rocketmq-all-5.1.4-bin-release.zip

修改 RocketMQ 的 JVM 配置

原本分配的 JVM 堆内存太大,如果启动时分配的内存不足就会报错,需要修改 bin 目录下的:runbroker.shrunserver.sh 文件:

runbroker.sh 文件修改后的内容如下图:

RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装_JAVA_03


runserver.sh 文件修改后的内容如下图:

RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装_JAVA_04


配置 broker.conf 文件

conf/broker.conf 文件中追加如下内容:

brokerIP1=【填服务器的公网 ip 地址】
namesrvAddr=localhost:9876


linux 安装 jdk 环境

rocketmq 是 java 写的,因此还需要安装 jdk 环境,并且有 JAVA_HOME 环境变量

安装 jdk 流程如下:

# 创建目录
mkdir /usr/lib/jvm
# 解压到 /usr/lib/jvm 目录下
tar -xvf jdk-8u144-linux-x64.tar.gz -C /usr/lib/jvm
# 配置环境变量,Linux 环境变量在 /etc/profile 中配置
vi /etc/profile
# 在结尾添加如下内容
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 激活修改的配置
source /etc/profile
# 检查安装的 jdk
java -version

开放防火墙端口

# 开放防火墙 9876 和 10911 端口
firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=10911/tcp --permanent
# 更新防火墙规则
firewall-cmd --reload
# 查看防火墙所有开放的端口
firewall-cmd --list-port





启动

# 1.启动 nameserver, nohup 和 & 可以让程序在后台运行
nohup sh bin/mqnamesrv &
# 查看日志,判断是否启动成功
tail ‐f ~/logs/rocketmqlogs/namesrv.log
# 2.启动 broker,-n 是 nameserver 的地址
nohup sh bin/mqbroker -c conf/broker.conf ‐n localhost:9876 &
# 下边这条命令在可以指定配置文件启动
# nohup sh bin/mqbroker -c conf/custom.conf ‐n localhost:9876 & autoCreateTopicEnable=true
# 查看日志,判断是否启动成功
tail ‐f ~/logs/rocketmqlogs/broker.log

启动后,使用 jps 查看是否启动成功:

RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装_JAVA_05

关闭命令

sh bin/mqshutdown broker
sh bin/mqshutdown namesrv


标签:bin,单机,--,Broker,Topic,sh,Linux,RocketMQ
From: https://blog.51cto.com/u_16186397/9004844

相关文章

  • linux下gcc 4.8.5和7.5并存
    有些软件依赖于c++14甚至c++17的特性,比如libpqxx6.4.8版本就需要4.9以上版本,4.8.5不可以,会下列错误,invalidinitializationofnon-constreferenceoftype‘pqxx::connection_base&’fromanrvalueoftype‘<brace-enclosedinitializerlist>’  m_open{C......
  • cmake管理qt项目,设置windows和linux下生成的程序图标,以及任务栏显示设置的图标
    先代码设置MainWindow图标://主要用于在linux下运行程序时,在任务栏显示图标MainWindoww;w.setWindowIcon(QIcon(":/res/icon.png"));(*windows下设置生成的exe程序的ico图标后,默认也会对运行程序时任务栏的图标也设置成这个ico,但是同样的代码拿到linux下就无效,需要其他方......
  • Linux中date命令使用示例
    一、.Linux中的date命令date"+%Y-%m-%d"输出当前日期,格式为“年-月-日”,例如:2023-06-01date"+%Y年%m月%d日%H:%M:%S"输出当前日期喝时间,格式为“年月日时:分:秒”,例如:2023年12月28日04:28:11date"+%b"输出当前月份的英文缩写,例如:Jundate"+%B"输出当前月份的英文全称,例......
  • linux文件传输
    scpSCP,代表 安全复制(SecureCopy),它是一个命令行程序,在Linux和类Unix操作系统中以安全的方式在本地和远程系统之间,或在两个远程系统之间复制文件和目录。使用 scp 命令,你可以安全地复制文件或目录:从本地到远程系统从远程系统到本地在两个远程系统之间使用 scp 命令传输数......
  • 深入解析Linux中的echo命令
    在Linux系统中,echo命令是一个非常常见且强大的工具,用于在终端中输出文本或变量。尽管echo命令的使用看似简单,但实际上,它有许多有趣的功能和选项,本文将深入解析Linux中的echo命令,以便更好地理解和利用这一强大工具。基本用法echo命令的基本用法非常简单,只需要在终端中输入echo,紧接......
  • Linux下配置QT程序桌面图标 ubuntu下设置快捷方式
    原文链接:https://blog.csdn.net/qq_27597629/article/details/108886199#:~:text=1%EF%BC%8C%E5%88%9B%E5%BB%BA%E7%A8%8B%E5%BA%8F%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC%EF%BC%9Atouch%20run.sh%23%EF%BC%81%20%2Fbin%2Fbashcd%20%2Fexecute%E7%A8%8B%E5%BA%8F%E8%B7%AF%E5%BE%......
  • 如何处理Linux系统中内存不足的问题
    在Linux系统中,如果遇到内存不足的问题,可以尝试以下方法进行处理:1.通过命令`free-m`查看当前Linux系统的内存使用情况,包括总内存数、已使用的内存数和空闲的内存数。这样可以对系统的内存状况有一个直观的了解。2.找出占用内存过高的进程。可以使用`top`命令查看内存占用情况,......
  • linux高级命令
    Linux高级命令一、find命令1、find命令基本语法:#find路径[选项选项的值]...-name:根据文件的名称进行-type:按文件类型进行搜索,f代表普通文件,d代表文件夹2、find命令+模糊搜索#find路径-name"通配符*"-typef/-typed3、根据文件修改时间搜索文件#find......
  • linux权限管理
    linux权限管理一、权限概述㈠什么是权限权限:在计算机系统中,权限是指某个计算机用户具有使用软件资源的权利。思考:计算机资源分为哪两部分?硬件资源 硬盘、CPU、内存、网卡等物理硬件资源软件资源软件:操作系统(特殊的软件)、应用程序。只要不启动,这些软件就是一堆静态......
  • linux基础命令
    Linux基本指令一.常用指令:1.目录操作指令1.1.1ls命令ls是最常见的目录操作命令,主要作用是显示目录下的内容命令名称:ls英文原意:list所在路径:/bin/ls功能描述:显示目录下的内容代码:[root@localhost~]#ls[选项][文件名或者目录名]-a 显示所有文件--color=when:......