RocketMQ介绍与云服务器安装
RocketMQ
介绍与概念
在github上的说法来看: Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性,万亿级容量和灵活的可扩展性。它提供了多种功能:
- 发布/订阅消息模型和点对点
- 预定的消息传递
- 消息追溯性按时间或偏移量
- 记录流媒体的中心
- 大数据集成
- 可靠的FIFO和严格的有序消息传递在同一队列中
- 高效的推拉消费模式
- 单个队列中的百万级消息累积容量
- 多种消息传递协议,如JMS和OpenMessaging
- 灵活的分布式横向扩展部署架构
- Lightning-fast批处理消息交换系统
- 各种消息过滤器机制,如SQL和Tag
- Docker图像用于隔离测试和云隔离集群
- 功能丰富的管理仪表板,用于配置,指标和监控
- 访问控制列表
- 消息跟踪
上面都是官方列举出来了,还有如下特点:
- 支持Broker和Consumer端消息过滤
- 支持拉pull和推push两种消费模式,也就是上面说的推拉消费模式
- 支持单master节点,多master节点,多master节点多slave节点
- 消息失败重试机制,支持特定level的定时消息
- 新版本底层采用Netty
官方网站: http://rocketmq.apache.org/docs/motivation/ 也对RocketMQ和ActiveMQ以及Kafka做了一个对比.
核心概念
参考: http://rocketmq.apache.org/docs/core-concept/ 本人英文阅读能力有点弱,大家请看官方文档.
- Producer: 消息生产者
- Producer Group: 消息生产者组,发送同类消息的一个消息生产组
- Consumer: 消息消费者
- Consumer Group: 消费同类消息的多个实例
- Tag: 标签.子主题对topic的进一步细化,用于区分同一个主题下的不同业务的消息.
- Topic: 主题,queue是消息的物理管理单位,而topic是逻辑管理单位,一个topic下可以有多个queue,默认自动创建是4个,手动创建是8个.
- Message: 消息,每个Message必须指定一个topic
- Broker: MQ程序,接受生产的消息,提供给消费者消费的程序
- Name Server: 给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比zookeeper更轻量)
- Offset: 偏移量,可以理解为消息进度
- commit log: 消息存储会写在Commit log文件里面
云服务器安装RocketMQ
安装RocketMQ
- 下载: http://rocketmq.apache.org/docs/quick-start/, 直接下载源代码版本
- 上传到云服务器
- 开始操作(参考: http://rocketmq.apache.org/docs/quick-start/):
1. 安装unzip命令: yum install unzip
2. 解压: unzip rocketmq-all-4.4.0-source-release.zip
3. 重命名: mv rocketmq-all-4.4.0 rocketmq
4. 进入文件夹: cd rocketmq
5. 使用maven进行源码编译: mvn -Prelease-all -DskipTests clean install -U
6. 进入文件夹: cd distribution/target/apache-rocketmq
7. 启动服务: sh bin/mqnamesrv (注意如果内存小于4G可能会失败)
- 启动失败的原因与解决:
- 启动失败的原因与解决:
[root@iZwz94sw188z3yfl7lpmmsZ apache-rocketmq]# sh bin/mqnamesrv
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew
young collector with the CMS collector is deprecated and will
likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning:
UseCMSCompactAtFullCollection is deprecated and will likely be
removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: INFO:
os::commit_memory(0x00000006ec800000, 2147483648, 0) failed;
error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment
to continue.
# Native memory allocation (mmap) failed to map 2147483648 bytes
for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/software/rocketmq-all-
4.4.0/distribution/target/apache-rocketmq/hs_err_pid8993.log
这种原因是内存不足导致的,默认是4G,解决办法是编辑 bin/runserver.sh:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
- 以守护进程的方式启动:
nohup sh bin/mqnamesrv & 这个命令可能会nohup: ignoring input and appending output to ‘nohup.out’,如果出现这个,执行:
tail -f nohup.out
这个时候ctrl+c就不会退出程序,仅仅是让程序后台运行
- 启动Broker
[root@wangzhi apache-rocketmq]# sh bin/mqbroker -n localhost:9876
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/software/rocketmq/distribution/target/apache-rocketmq/hs_err_pid3012.log
出现了Broker内存不足的问题:
vim bin/runbroker.sh 修改 JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g" 的内容为:
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g"
完成之后以守护进程的方式进行启动:
nohup sh bin/mqbroker -n localhost:9876 &
tail -f nohup.out
这个时候可以使用jps查看进程,并且可以根据进程号来kill进程
- 进行测试:
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
- 远程连接需要开发9876和10911端口,在生产环境不要开放
源码安装RcoketMQ4.X控制台
- 上传源码包
- 解压: unzip rocketmq-externals-master.zip
- 进入文件夹: cd rocketmq-externals-master
- 开始操作:
先修改两个BUG,一个是修改pom.xml的版本号.
cd rocketmq-console/
vim pom.xml : 将里面的rocketmq的版本号后面的snashop删掉,只留个4.4.0就好
在上一个console的路径下继续:
cd src/main/resources/
vim application.properties : 修改nameserver地址 rocketmq.config.namesrvAddr=127.0.0.1:9876
返回到console目录,进行编译安装:
mvn clean package -Dmaven.test.skip
- 启动:
cd target
java -jar rocketmq-console-ng-1.0.0.jar
使用ctrl + c关闭程序,以守护进程的方式进行启动
nohup java -jar rocketmq-console-ng-1.0.0.jar &
tail -f nohup.out
RocketMQ介绍与云服务器安装的更多相关文章
- 转 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)
https://blog.csdn.net/jiangyu1013/article/details/81668671 消息中间件的作用 1. 应用解耦 2. 异步处理 比如用户注册场景,注册主流程完成 ...
- rocketmq学习(一) rocketmq介绍与安装
1.消息队列介绍 消息队列本质上来说是一个符合先进先出原则的单向队列:一方发送消息并存入消息队列尾部(生产者投递消息),一方从消息队列的头部取出消息(消费者消费消息).但对于一个成熟可靠的消息队列来说 ...
- RocketMQ介绍与实践
一.RocketMQ介绍 1.相关术语名词 1. NameSrv:是一个几乎无状态节点,可集群部署,节点之间无任何信息同步. 2. Broker:分为Master与Slave,一个 ...
- 记录云服务器安装node
今天买了台云服务器,准备玩玩,对于之前没接触过Linux的我是一头雾水,登陆后进去就是一个黑黑的终端,一点也不友好,所以特地记录一下登陆以及安装node的过程 先记录一下登陆 登陆方式一: 那就是账号 ...
- 阿里云服务器安装Docker并部署nginx、jdk、redis、mysql
阿里云服务器安装Docker并部署nginx.jdk.redis.mysql 一.安装Docker 1.安装Docker的依赖库 yum install -y yum-utils device-map ...
- RocketMQ 介绍与安装
目录 RocketMQ 介绍 MQ 介绍 MQ 作用 MQ 缺点 MQ 常见产品 RocketMQ 简介 RocketMQ 架构 RocketMQ 安装 RocketMQ 介绍 MQ 介绍 定义: M ...
- RocketMQ 介绍与基本使用
介绍 RocketMQ是阿里巴巴自研的第三代分布式消息中间件,是阿里系下开源的一款分布式.队列模型的消息中间件,原名Metaq,3.0 版本名称改为RocketMQ,是阿里参照kafka设计思想使用J ...
- 腾讯云服务器安装宝塔面板快速配置LNMP/LAMP网站系统
我们在选择购买腾讯云服务器之后,有部分用户肯定是用来建站用途的.毕竟云服务器的性能和功能比虚拟主机优秀很多.腾讯云服务器拥有香港.北京.广州.上海.美国等多个机房,可以安装Linux和Windows系 ...
- 大型情感剧集Selenium:1_介绍 #华为云·寻找黑马程序员#
学习selenium能做什么? 很多书籍.文章中是这么定义selenium的: Selenium 是开源的自动化测试工具,它主要是用于Web 应用程序的自动化测试,不只局限于此,同时支持所有基于web ...
随机推荐
- CentOS搭建V~P~N服务,实现虚拟专用网络
什么是V-P-N V-P-N即虚拟专用网络,它的功能是:在公用网络上建立专用网络,进行加密通讯. V-P-N网关通过对数据包的加密和数据包目标地址的转换实现远程访问.V-P-N有多种分类方式,主要是按 ...
- CSS 内边距 (padding) 实例
CSS 内边距 (padding) 实例元素的内边距在边框和内容区之间.控制该区域最简单的属性是 padding 属性. CSS padding 属性定义元素边框与元素内容之间的空白区域.CSS 内边 ...
- Webpack 2 视频教程 001 - Webpack 简介
这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的. 这个基本就是目前 ...
- 行业干货-如何逆向解决QT程序汉化中乱码问题
前言 “一款QT开发的国外软件,大概率是没有做中文支持的,所以你汉化中,不论怎么设置编码都一定是乱码.面对这个问题,你去互联网上找答案,答案却大多是复制粘贴的开发中解决乱码的文章,可是我们是要逆向中解 ...
- nginx的web缓存服务环境部署记录
web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ...
- kvm虚拟化管理平台WebVirtMgr部署-完整记录(1)
公司机房有一台2U的服务器(64G内存,32核),由于近期新增业务比较多,测试机也要新增,服务器资源十分有限.所以打算在这台2U服务器上部署kvm虚拟化,虚出多台VM出来,以应对新的测试需求.当KVM ...
- visual studio 2013的使用和单元测试
Visual Studio 2013 是一个先进的开发解决方案,各种规模的团队通过它均可设计和创建引人注目的应用程序.Visual Studio 13在新功能包括C#和VB编译器和IDE支持完全基于. ...
- 响应数据传出(springMVC)
1. SpringMVC 输出模型数据概述 提供了以下几种途径输出模型数据: ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据 ...
- Navicat连接mysql备份数据库提示:1577 – Cannot proceed because system tables used by Event Scheduler where found damaged at server start
解决办法,可以参考试试: http://www.cnblogs.com/huangcong/p/3389010.html http://blog.csdn.net/phpfenghuo/article ...
- Mysql性能优化二:索引优化
1 索引的类型 UNIQUE唯一索引 不可以出现相同的值,可以有NULL值. INDEX普通索引 允许出现相同的索引内容. PRIMARY KEY主键索引 不允许出现相同的值,且不能为NULL值,一个 ...