一.下载
1.进入官网:RocketMQ已经托管给Apache,所以官网是在apache:官网,
上面显示的是最新发布版本
2.下载历史版本
如果需要历史版本,则点击【Getting Started】按钮进入,然后左边菜单选择download,就可以看到历史版本:
3.下载
我们下载4.4.0版本,
其中,Source是源码,可以下载源码进行打包安装;
Binary是二进制,我们直接下载这个类型。
二.安装配置
参考官方文档 :https://github.com/apache/rocketmq/tree/master/docs/cn
2.1 jdk配置
rocketMq是java语言开发的,运行需要jdk,具体步骤这里不重复了。
2.2 部署模式选择
rocketMq集群模式有多种,
- 1 单Master模式: 不建议线上使用,一旦宕机,或导致整个服务不可用;测试环境可使用此模式;
- 2 多Master模式: 多个master,有较高可用性,配置简单。但是由于没有slave,单个master宕机时,此master上的消息不可订阅消费;
- 3 多Master多Slave模式-异步复制: 每个master搭配一个slave,有多对master-slave,可用性进一步提高;master和slave之间使用异步复制,有较高的性能;但是由于同步有一定延迟,当master宕机时,会有小部分消息丢失;
- 4 多Master多Slave模式-同步双写: 和第3种类似,却别是master和slave之间同步复制,每当master有数据写入会同步写入到slave,因此即使master宕机也不会有消息丢失;缺点是性能比异步方式低10%左右。
多master多slave模式架构部署图如下:
-
Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。
-
Consumer:消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。
-
NameServer:NameServer是一个非常简单的Topic路由注册中心,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。
-
BrokerServer:Broker主要负责消息的存储、投递和查询以及服务高可用保证。
2.3 配置文件
上传安装包到linux服务器,解压后,文件目录如下:
说明:
- benchmark:测试mq脚本demo;
- bin :启动停止等命令目录;
- conf :集群配置文件;
- lib :依赖包;
其中conf目录打开:
三.单master模启动
从上述部署架构图中,我们得知各角色启动顺序如下:
- 启动nameServer
- 启动broker
- 创建topic
- 启动生产者producer
- 启动消费者consumer
3.1 启动NameServer
后台方式启动:
#后台启动nameserver
nohup sh bin/mqnamesrv &
#停止nameserver
sh/bin/mqshutdown namesrv
启动后,会在家目录产生log文件,比如我们使用root用户启动,那么在root目录下就会产生logs文件夹,里面有log文件:
/root/logs/rocketmqlogs
打开就会显示启动成功的日志信息:
3.2 启动broker
#后台启动broker
nohup sh bin/mqbroker -n localhost:9876 &
#停止broker
sh bin/mqshutdown broker
其中 -n 表示连接nameserver ,localhost:9876 是nameserver的地址,9876是nameserver的默认端口号。
注意错误:
可能会出现如下错误:
说明内存不足,这是因为rocketmq默认需要的内存比较大,我使用的linux服务器物理内存不够导致,因此需要调整默认jvm配置:
## nameserver的启动配置
vi bin/runserver.sh
## broker的启动配置
vi bin/runbroker.sh
比如打开runbroker.sh 会发现如下信息:
这里修改为小一点的值:
-server -Xms256m -Xmx256m -Xmn128m
runserver.sh文件也同样修改,修改后重启生效。
重新启动broker,此时/root/logs/rocketmqlogs 目录下会产生broker.log文件,有如下信息:
同时nameser.log也会出现如下日志,说明broker注册成功:
到此,nameserver和broker都启动成功了,进程如下:
本文先到这里,集群搭建放到下一篇中介绍RocketMQ系列(二)双主双从集群搭建。