RocketMQ 介绍

MQ 介绍

定义

  • MQ(Message Queue,消息队列)是一种用来保存消息数据的队列。

  • 队列:数据结构的一种,特征为“先进先出”。

MQ 作用

  • 应用解耦(技术上必须弄好才能使用 MQ)

  • 快速应用变更维护

  • 流量削锋(削峰填谷)

MQ 缺点

  • 系统可用性降低(解决:搭集群)
  • 系统复杂度提高(解决:程序员提升水平)
  • 异步消息机制(以下都有解决方案)
    • 消息时序性
    • 消息丢失
    • 消息一致性
    • 消息重复使用

MQ 常见产品

  • ActiveMQ :java 语言实现,万级数据吞吐量,处理速度 ms 级,主从架构,成熟度高。
  • RabbitMQ :erlang 语言实现,万级数据吞吐量,处理速度 us 级,主从架构。
  • RocketMQjava 语言实现,十万级数据吞吐量,处理速度 ms 级,分布式架构,功能强大,扩展性强
  • kafka :scala 语言实现,十万级数据吞吐量,处理速度 ms 级,分布式架构,功能较少,应用于大数据较多。

RocketMQ 简介

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

同时,它还解决了上述提到的所有的消息队列的缺点。

RocketMQ 架构

RocketMQ 安装

1)安装 JDK

2)解压 RocketMQ 安装包下载地址):unzip rocketmq-all-4.5.2-bin-release.zip

3)修改目录名称:mv rocketmq-all-4.5.2-bin-release rocketmq

4)调整 RocketMQ 的启动内存

  • RocketMQ 的默认内存占用非常高,一般需要 4-8G 的虚拟机 JVM 参数空间,因此可以通过更改 mqbroker 和 mqnamesrv 的配置来调整内存。

  • RocketMQ 有两个启动脚本:bin 目录下的 runbroker.sh 和 runserver.sh,编辑如下内容,然后重新启动 broker 。

# vi runserver.sh
JAVA_OPT=”${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m” # vi runbroker.sh
JAVA_OPT=”${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn125m
  • mqbroker 和 mqnamesrv 的内存也可以调整,这两项配置也很重要,默认是 500m 到 1g 。具体文件配置是 mqbroker.xml 和mqnamesrv.xml(文件里面的配置信息根据自己的情况修改):
<options>
<-Xms200m></-Xms200m>
<-Xmx200m></-Xmx200m>
<-XX:NewSize>50M</-XX:NewSize>
<-XX:MaxNewSize>50M</-XX:MaxNewSize>
<-XX:PermSize>30M</-XX:PermSize>
<-XX:MaxPermSize>30M</-XX:MaxPermSize>
</options>
  • 注意:mqbroker.xml 和 mqnamesrv.xml 的内存不要超过 runbroker.sh 和runserver.sh 的内存,不然会因为内存不够导致崩溃。

5)bin 目录下启动 NameServer 服务

sh mqnamesrv
# 后台启动
nohup sh mqnamesrv &
# 可以在当前目录的 nohup.out 中查看日志输出

6)bin 目录下启动 Borker 服务

sh mqbroker -n localhost:9876
# 后台启动
nohup sh mqbroker -n localhost:9876 &
# 指定配置文件
sh mqbroker -n localhost:9876 -c ../conf/broker.conf
# 可以在当前目录的 nohup.out 中查看日志输出

7)关闭防火墙

# 暂时关闭防火墙
systemctl stop firewalld # 永久设置防火墙状态
systemctl enable firewalld.service # 打开
systemctl disable firewalld.service # 关闭

8)测试

export NAMESRV_ADDR=localhost:9876
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

RocketMQ 介绍与安装的更多相关文章

  1. rocketmq学习(一) rocketmq介绍与安装

    1.消息队列介绍 消息队列本质上来说是一个符合先进先出原则的单向队列:一方发送消息并存入消息队列尾部(生产者投递消息),一方从消息队列的头部取出消息(消费者消费消息).但对于一个成熟可靠的消息队列来说 ...

  2. RocketMQ介绍与云服务器安装

    RocketMQ 介绍与概念 在github上的说法来看: Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性,万亿级容量和灵活的可扩展性.它提供了多种功能: ...

  3. 从零自学Hadoop(19):HBase介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...

  4. 从零自学Hadoop(14):Hive介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...

  5. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  6. Bash on Windows 抢鲜测试 -- 介绍及安装

    前言 微软在上周的Windows BUILD大会上宣布,WIN10将引入原生Bash,并将很快在技术预览版中推出. 如此一来,windows的命令行工具就不再只有cmd和powershell了,我们可 ...

  7. Tyk API网关介绍及安装说明

    Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...

  8. Python介绍、安装、使用

    Python介绍.安装.使用 搬运工:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python语言介绍 说到Python语言,就不得不说一下它的创始人Guido van Rossu ...

  9. Redis介绍以及安装(Linux)

    Redis介绍以及安装(Linux) redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的 ...

随机推荐

  1. MQTT协议 - arduino ESP32 通过精灵一号 MQTT Broker 进行通讯的代码详解

    前言 之前研究了一段时间的 COAP 协议结果爱智那边没有测试工具,然后 arduino 也没有找到合适的库,我懒癌发作也懒得修这库,就只能非常尴尬先暂时放一放了.不过我在 爱智APP -> 设 ...

  2. Sentry 开发者贡献指南 - 前端 React Hooks 与虫洞状态管理模式

    系列 Sentry 开发者贡献指南 - 前端(ReactJS生态) Sentry 开发者贡献指南 - 后端服务(Python/Go/Rust/NodeJS) 什么是虫洞状态管理模式? 您可以逃脱的最小 ...

  3. CF1064A Make a triangle! 题解

    Content 有三条长度分别为 \(a,b,c\) 的线段.你可以在一个单位时间内将一条线段的长度增加 \(1\),试求出能使这三条线段组成一个三角形的最短时间. 数据范围:\(1\leqslant ...

  4. java 常用类库:时间类LocalDate;LocalTime;LocalDateTime;Calendar 类;Date ;

    LocalDate类 LocalDate类代表不带时区的日期,列入2020-12-20.该类提供了静态的now()方法来获取当前的日期.这个类是线程安全的. LocalTime类 代表不带时区的时间, ...

  5. UiPath RPA培训2021.4版本解读 (2021年5月)-RPA学习天地

    2021年5月26日Ui Path发布了新产品2021.4版本,我们来看看有什么新功能: 说明一下uipath的版本发布节奏: uipath的版本一般是每年发布2个版本,其中5月份发布的一般是FTS版 ...

  6. java类型转换拓展

    数据类型拓展 在Java中二进制用0b开头,八进制用0开头,十六进制用0x表示 整数拓展  int i=10; int i2=010;//八进制 int i3=0x10;//十六进制0x,0-9,A- ...

  7. C笔试题:将int型数组强制转换为char*,再求strlen,涉及大小端

    1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int a[2000]; 6 char *p = (ch ...

  8. qt5之设置无边窗口移动

    Note qt version: 5.12 qt creator: 4.13 本文将介绍 设置无边窗口和设置窗口的移动 你要知道: QDialog 和 QMainWindow都是 QWidget的派生 ...

  9. 【LeetCode】677. Map Sum Pairs 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 前缀树 日期 题目地址:https://lee ...

  10. What is being transferred in transfer learning?

    目录 概 主要内容 feature reuse mistakes and feature similarity loss landscape module criticality pre-traine ...