java架构之路-(MQ专题)RocketMQ从入坑到集群详解
这次我们来说说我们的RocketMQ的安装和参数配置,先来看一下我们RocketMQ的提出和应用场景吧。
早在2009年,阿里巴巴的淘宝第一次提出了双11购物狂欢节,但是在2009年,服务器无法承受到大规模的并发,导致了大规模宕机停运,当时还是IOE的服务架构,也就是没有我们的消息队列中间件,直接由IBM的小型机、Oracle数据库、EMC存储设备来提供服务的,可想而知,我们的大并发场景,IOE是无法承受的,RocketMQ是由我们的国内的阿里巴巴在2010年开始由我们的阿里云的王坚博士组件团队,来处理我们的去IOE服务架构,也就产生了我们的RocketMQ中间件,经历了阿里巴巴内部的不断尝试和实践下,在2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目,现在已经在我们Apache软件基金会毕业了,并且成为了Apache软件基金会的顶级项目。可想而知RocketMQ还是很成熟很可靠的。
说到这也就是知道了我们的RocketMQ可以于我们的消息中间件来传递我们的消息,还有很多广泛的应用场景,比如我们的异步处理事件,分布式事务协调,对于高并发的削峰平谷处理,MQ的思想还是很出众的,下面我们来先一下RocketMQ的安装吧。
安装单机(运行环境JDK版本:1.8.0_221以上)
1.下载。rocketmq版本:rocketmq-all-4.4.0-bin-release.zip,地址 https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-bin-release.zip
2.上传的到我们的服务器并解压。$ unzip rocketmq-all-4.4.0-bin-release.zip (没有unzip命令的,yum install unzip安装一下)

3.设置环境变量,$ vim /etc/profile,下底部添加如下代码。
export ROCKETMQ_HOME=/usr/local/software/rocketmq-all-4.4.0
export PATH= $ROCKETMQ_HOME/bin:$PATH
保存,并刷新环境变量 $ source /etc/profile

4.修改一下我们的配置,现有的配置稍微有点坑,不修改配置,可能启动不成功的。切换到我们的RocketMQ目录下,$ vim bin/runbroker.sh 和我们的$ vim bin/runserver.sh

修改为256M即可
注意两个配置都要改runbroker.sh和runserver.sh,这里我只是根据我们的虚拟机大小来设置的,生产的环境可以根据配置自行设置大小。后面会说参数的作用。
4.开启服务。
启动nameserver $ nohup sh bin/mqnamesrv -n 120.27.13.177:9876 &
启动broker
不指定配置文件 $ nohup sh bin/mqbroker -n 120.27.13.177:9876 autoCreateTopicEnable=true & //极力不推荐
指定配置文件 $ nohup sh bin/mqbroker -n 120.27.13.177:9876 -c conf/broker.conf &//修改在配置文件内加入autoCreateTopicEnable=true,不然发送消息会失败。
5.测试是否成功
$ export NAMESRV_ADDR=120.27.13.177:9876测试发送端,多个可以用英文,来区别
例如$ export NAMESRV_ADDR = 120.27.13.177:9876,120.27.13.178:9876
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer 测试消费端
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
6.关闭服务
$ sh mqshutdown broker ‐‐关闭broker
$ sh mqshutdown namesrv ‐‐关闭namesrv
总结
上述安装弄了好几个小时,日,这个是官方文档地址:http://rocketmq.apache.org/docs/quick-start/,谁能按照他的说明安装成功联系我一下,反正我是没有成功
1,可能遇到内存不够用的情况,默认配置是8G的...哪来钱买那么大的服务器。
2,服务启动nohup sh bin/mqnamesrv -n 120.27.13.177:9876 & 官网说localhost,如果你有多个网卡,你就蒙圈了...
3,官网完全没告诉你指定配置文件,也没说需要配置autoCreateTopicEnable=true,没有这个你怎么创建Topic,autoCreateTopicEnable=true意思就是允许创建topic。
说到底就是官网完全就是坑爹不给力的。
安装集群(运行环境JDK版本:1.8.0_221以上)
上面走过来一路的坑,我们现在来看看集群时如何配置的吧,这里捎带说一下,尽力优先启动nameserver,然后启动broker,因为我们的每一个broker服务需要将信息注册到我们的nameserver上去的。

2.将每台服务器上的配置文件复制出来,因为我们每台服务器要启动一个主节点,一个从节点,我们开始复制命令。
$ cp broker.conf master.conf ###作为主节点配置
$ cp broker.conf slave.conf ### 从节点配置。
两台服务器都要复制。
将master.conf修改,master.conf配置如下:

slave配置如下

记得修改bin下的runserver和runbroker,要不内存又不够了。
3.启动
先分别启动两台服务器的nameserver,$ nohup sh bin/mqnamesrv &
启动broker-master
nohup sh bin/mqbroker -c conf/master.conf &
启动broker-slave
nohup sh bin/mqbroker -c conf/slave.conf &
4.查查看集群监控状态 $ sh mqadmin clusterlist -n 192.168.241.198:9876

总结
这个集群也不是很顺利,搭建了一下午。切记几个问题,端口别弄重复了,文件保存路径别重复了,记得互为主备,有一个小窍门就是,你先配置一个单机,然后测试是否成功了,然后复制配置文件,然后将这些配置文件直接传到另一个服务器上,改一下名称就可以了(互为主备那个名称)。
安装可视化界面:(一路小坑已踏平)
1.下载,地址:https://github.com/apache/rocketmq-externals/tree/release-rocketmq-console-1.0.0
2.导入我们的编译器IDEA或者Eclipse,这个玩意在我们本地启动就可以的。
3.修改配置application.properties,写入我们的集群地址,多个IP用分号分隔。
rocketmq.config.namesrvAddr=114.215.144.143:9876;115.29.149.133:9876
修改pom文件将mq版本修改和我们集群的版本一致
<rocketmq.version>4.4.0</rocketmq.version>
4.不知道很多博主怎么弄的,写到这了就说可以启动了,反正我是报错了,不知道你们报错了吗?至少我单机的时候启动有一个界面是报错的。去我们的集群服务器。在conf/broker.conf文件添加brokerIP1=115.29.149.133,IP1=当前服务器的的IP地址。
5.启动走起~!

顺带说一下啊,右上角那个按钮是调整语言的,我当时没加brokerIP1时,那个什么驾驶舱页面第一个图表报错。
一路大坑带小坑的,都踏平了,弄了两天多,才弄好,官方文档.....
过去的这几天我说了RabbitMQ和RocketMQ的安装,后续我会逐步去说他们的实际操作,还有一些高级用法,感谢阅读。

最进弄了一个公众号,小菜技术,欢迎大家的加入

java架构之路-(MQ专题)RocketMQ从入坑到集群详解的更多相关文章
- java架构之路(mysql底层原理)Mysql之Explain使用详解
上篇博客,我们详细的说明了mysql的索引存储结构,也就是我们的B+tree的变种,是一个带有双向链表的B+tree.那么我今天来详细研究一下,怎么使用索引和怎么查看索引的使用情况. 我们先来简单的建 ...
- redis主从架构,分片集群详解
写在前面:这篇笔记有点长,如果你认真看完,收获会不少,如果你只是忘记了相关命令,请翻到末尾. redis的简单介绍: 一个提供多种数据类类型储存,整个系统都在内存中运行的, 定期通过异步的方式把数据刷 ...
- java架构之路-(Redis专题)SpringBoot连接Redis超简单
上次我们搭建了Redis的主从架构,哨兵架构以及我们的集群架构,但是我们一直还未投入到实战中去,这次我们用jedis和springboot两种方式来操作一下我们的redis 主从架构 如何配置我上次已 ...
- [转帖]java架构之路-(面试篇)JVM虚拟机面试大全
java架构之路-(面试篇)JVM虚拟机面试大全 https://www.cnblogs.com/cxiaocai/p/11634918.html 下文连接比较多啊,都是我过整理的博客,很多答案都 ...
- 基于Java的打包jar、war、ear包的作用与区别详解
本篇文章,小编为大家介绍,基于Java的打包jar.war.ear包的作用与区别详解.需要的朋友参考下 以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.cla ...
- java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱
java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱 redis数据库 Redis企业集群高级应用精品教程[图灵学院] Redis权威指南 利用redis + lua解决抢红包高并 ...
- “全栈2019”Java第一百一十三章:什么是回调?回调应用场景详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第一百零一章:局部内部类覆盖作用域内成员详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第三十一章:二维数组和多维数组详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
随机推荐
- 【钢琴伴奏基本形态和伴奏织体】技能 get
开头重复一句话:做编曲就是设计和声+伴奏织体. ---- --------- --------------- 分解和弦: 半分解和弦: 做法:在旋律的下方演奏一些和弦的音.就能让音乐更加的饱满,拒绝空 ...
- Win10下80端口被System占用导致Apache无法启动
Windows10下80端口被PID为4的System占用导致Apache无法启动的分析与解决方案 方法/步骤 最近更新了Windows10,总体上来说效果还是蛮不错的,然而今天在开启Apac ...
- SpringBoot2+Netty打造通俗简版RPC通信框架
2019-07-19:完成基本RPC通信! 2019-07-22:优化此框架,实现单一长连接! 2019-07-24:继续优化此框架:1.增加服务提供注解(带版本号),然后利用Spring框架的在启动 ...
- 本次作业统一标题:C语言I博客作业02
这个作业属于哪个课程 C语言程序设计1 这作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8655 我在这个课程的目标是 ...
- 详解计算机中的Byte、bit、字、字长、字节
最近突然有同事问我,关于计算机中的计量单位大B和小b的区别,以及KB到GB之间的换算问题,我当时觉得这问题简单,大B是 byte,小b是bit,但是想到他俩之间的换算时,一时有些想不起来具体是1Byt ...
- 一文掌握在Word中快速编写公式
在使用Word编写文章时,总会遇到书写数学公式的情况.使用Word的公式输入工具需要频繁地使用鼠标,因而编写公式会显得繁琐麻烦,那么有什么办法可以优雅地在Word中书写公式呢?其实Word早在Word ...
- windows离线安装sublime插件:ctags
网络上一堆安装ctags教程,可都是在线安装. 花了点时间摸索出了离线安装教程. 1. 准备好sublime 和 package control sublime我用的版本是text 2. text 3 ...
- JavaScript中For循环以及For循环嵌套实例
JavaScript中For循环实例 1.打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身. 例如:153是一个 ...
- vue 详情跳转至列表页 实现列表页缓存
甲爸爸提了一个需求,希望公众号内的商城能够像app一样,从商品详情页跳转至列表页及其他列表页时,可以实现列表页缓存(数据不刷新.位置固定到之前点的商品的位置) 本来想着scrollBehavior应该 ...
- python属性的默认值
python类的构造函数中属性可以设置默认值,实例化出来的对象如果属性使用默认值,默认值的地址是相同的. class A: def __init__(self, name = []): self.__ ...