RocketMQ 介绍与安装
RocketMQ 介绍
MQ 介绍
定义:
MQ(Message Queue,消息队列)是一种用来保存消息数据的队列。
队列:数据结构的一种,特征为“先进先出”。
MQ 作用
应用解耦(技术上必须弄好才能使用 MQ)
快速应用变更维护
流量削锋(削峰填谷)
MQ 缺点
- 系统可用性降低(解决:搭集群)
- 系统复杂度提高(解决:程序员提升水平)
- 异步消息机制(以下都有解决方案)
- 消息时序性
- 消息丢失
- 消息一致性
- 消息重复使用
MQ 常见产品
- ActiveMQ :java 语言实现,万级数据吞吐量,处理速度 ms 级,主从架构,成熟度高。
- RabbitMQ :erlang 语言实现,万级数据吞吐量,处理速度 us 级,主从架构。
- RocketMQ :java 语言实现,十万级数据吞吐量,处理速度 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 介绍与安装的更多相关文章
- rocketmq学习(一) rocketmq介绍与安装
1.消息队列介绍 消息队列本质上来说是一个符合先进先出原则的单向队列:一方发送消息并存入消息队列尾部(生产者投递消息),一方从消息队列的头部取出消息(消费者消费消息).但对于一个成熟可靠的消息队列来说 ...
- RocketMQ介绍与云服务器安装
RocketMQ 介绍与概念 在github上的说法来看: Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性,万亿级容量和灵活的可扩展性.它提供了多种功能: ...
- 从零自学Hadoop(19):HBase介绍及安装
阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...
- 从零自学Hadoop(14):Hive介绍及安装
阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...
- Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)
本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...
- Bash on Windows 抢鲜测试 -- 介绍及安装
前言 微软在上周的Windows BUILD大会上宣布,WIN10将引入原生Bash,并将很快在技术预览版中推出. 如此一来,windows的命令行工具就不再只有cmd和powershell了,我们可 ...
- Tyk API网关介绍及安装说明
Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...
- Python介绍、安装、使用
Python介绍.安装.使用 搬运工:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python语言介绍 说到Python语言,就不得不说一下它的创始人Guido van Rossu ...
- Redis介绍以及安装(Linux)
Redis介绍以及安装(Linux) redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的 ...
随机推荐
- 在【自定义列】中编辑简单运算公式(Power Query 之 M 语言)
数据源: "品名"."数量"."单价"三列 目标: 计算销售单价(单价*1.2) 解决方案: 在[自定义列]中使用乘法四则运算 步骤: 打开 ...
- 一文详解TDSQL PG版Oracle兼容性实践
TDSQL PG版分布式关系型数据库,是一款同时面向在线事务交易和MPP实时数据分析的高性能HTAP数据库系统.面对应用业务产生的不定性数据爆炸需求,不管是高并发交易还是海量实时数据分析,TDSQL ...
- UVA11951 Area 题解
Content 小 S 想买下一块地.他所在的城市可以看成一个 \(n\times m\) 的网格,要购买所处在 \((i,j)\) 的网格需要缴税 \(c_{i,j}\) 元,如果一块地里面有多个网 ...
- go实现pdf电子签名-自动识别签名位置
一. 技术选型 由于要识别签名位置,所以得要能解析pdf的文本布局,要能得到每个布局元素的文本位置坐标.而最终的签名需要合成到pdf上,所以还需要有编辑pdf的需求. pdf布局分析:pdfminer ...
- Spring学习(一)idea中创建第一个Spring项目
1.前言 Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container). Sprin ...
- Swagger请求报错:TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body. 如下图 ...
- SpringBoot 处理跨域请求问题
增加一个配置类 import org.springframework.context.annotation.Bean; import org.springframework.context.annot ...
- 【LeetCode】362. Design Hit Counter 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...
- 【LeetCode】386. Lexicographical Numbers 解题报告(Python)
[LeetCode]386. Lexicographical Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...
- 重重封锁,让你一条数据都拿不到《死磕MySQL系列 十三》
在开发中有遇到很简单的SQL却执行的非常慢,甚至只查询一行数据. 咔咔遇到的只有两种情况,一种是MySQL服务器CPU占用率很高,所有的SQL都执行的很慢直到超时,程序也直接502,另一种情况是行锁造 ...