『互联网架构』软件架构-rocketmq之部署(61)

栏目: 后端 · 发布时间: 6年前

内容简介:消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。官网:http://rocketmq.apache.org/

消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。

『互联网架构』软件架构-rocketmq之部署(61)

(一)rocketMQ

官网:http://rocketmq.apache.org/

开源的分布式消息和流处理,流处理这块原来只有kafka这样说,因为rocketMq本身做的也比较好,它也加上了kafka这句话,意思我也很强。

『互联网架构』软件架构-rocketmq之部署(61)

Github:https://github.com/apache/rocketmq/

目前最新的版本是4.5.0

『互联网架构』软件架构-rocketmq之部署(61)

Github:https://github.com/alibaba

这里已经找不到rocketMq了,因为已经捐献给apache了,之前的很多资料官方都不提供了,唯一有的就是上边rocketMq的官网。

『互联网架构』软件架构-rocketmq之部署(61)

  • 开发的动机

    在早期阶段,我们构建了基于ActiveMQ5.x(早于5.3)的分布式消息中间件。我们的跨国企业使用它进行异步通信、搜索、社交网络活动流、数据管道,甚至在其程中。随着我们的业务吞吐量增加,来自我们的消息传递集群的压力也变得紧迫。

  • 为什么开发RocketMQ

    基于我们的研究,随着队列的增加和虚拟主题的使用,ActiveMQ IO模块遇到了瓶颈。我们尽力通过节流、路由或降级来解决这个问题,但效果并不好。所以我们开始关注流行的消息传递解决方案Kafka。不幸的是,Kafka不能满足我们的要求,特别是在低延迟和高可靠性方面。在这种情况下,我们决定发明一个新的消息传递引擎来处理更广泛的用例集,从传统的pub/sub场景到大容量的实时零损失容忍事务系统。我们相信这个解决方案是有益的,所以我们希望向社区开放源代码。

『互联网架构』软件架构-rocketmq之部署(61)

  • 下载rocketmq源码

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

名称 作用
acl 权限控制
broker broker模块:c和p端消息存储逻辑
client 客户端api:produce、consumer端 接受与发送api
common 公共组件:常量、基类、数据结构
tools 运维tools:命令行 工具 模块
store 存储模块:消息、索引、commitlog存储
namesrv 服务管理模块:服务注册topic等信息存储
remoting 远程通讯模块:netty+fastjson
logappender 日志适配模块
example Demo列子
filtersrv 消息过滤器模块
srvutil 辅助模块
filter 过滤模块:消息过滤模块
distribution 部署、运维相关zip包中的代码
openmessaging 兼容openmessaging分布式消息模块

(二)rocketmq环境搭建

(一)安装虚拟机

源码:https://github.com/limingios/netFuture/tree/master/jms,可以查看,之前的文章,vagrant的介绍docker【中级】。

『互联网架构』软件架构-rocketmq之部署(61)

  • 环境

    >192.168.89.100

    >192.168.89.101

    >每台服务器1主1从,2M-2S-SYNC(两主两从同步写)

    相关安装包存储路径:/root/soft/

系统类型 IP地址 节点角色 CPU Memory Hostname
Centos7 192.168.89.100 rocketmq-master-1 1 4G redis-master-1
Centos7 192.168.89.101 rocketmq-master-2 1 4G redis-master-2
  • 下载

89.100主机

Apache: http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip

wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
yum -y install unzip
unzip rocketmq-all-4.2.0-bin-release.zip -d /root/rocketmq

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

安装JDK 新的版本要求JDK1.8以上的

192.168.89.100 和192.168.89.101都要安装

源码:jms目录下的pro.sh

#通过vi 直接复制进去也可以
#但是一定要记住增加权限
chmod 777 pro.sh
./pro.sh

『互联网架构』软件架构-rocketmq之部署(61)

# @Author: liming
# @Date:   2018-11-26 23:14:59
# @Last Modified by:   liming
# @Last Modified time: 23:15:05
# @urlblog idig8.com
# 个人公众号  编程坑太多

#!/bin/bash
SOFT_PATH=/opt/soft

if [ ! -d $SOFT_PATH ];then
mkdir $SOFT_PATH
else
echo "文件夹已经存在"
fi

yum install -y wget 
#install jdk1.8
cd $SOFT_PATH
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
tar -zxvf jdk* -C $SOFT_PATH
cd jdk*
JAVA_HOME=`pwd` 

#install maven3.2.3
cd $SOFT_PATH
wget https://archive.apache.org/dist/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz
tar -zxvf apache-maven-3.2.3-bin.tar.gz -C $SOFT_PATH
mv apache-maven-3.2.3 maven-3.2.3
cd maven*
MAVEN_HOME=`pwd`

#install git 2.8.0
cd $SOFT_PATH
yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils- MakeMaker
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.8.0.tar.gz
tar -zxvf git-2.8.0.tar.gz -C $SOFT_PATH
cd git*
./configure
make install
ln -s /usr/local/bin/git /usr/bin/git

#追加环境变量
echo "export JAVA_HOME=${JAVA_HOME}" >> /etc/profile
echo "export PATH=$""JAVA_HOME/bin:$""PATH" >> /etc/profile
echo "export MAVEN_HOME=${MAVEN_HOME}" >> /etc/profile
echo "export PATH=$""MAVEN_HOME/bin:$""PATH" >> /etc/profile
source /etc/profile
#输出信息
echo "-----source update-----"
echo "java version"
java -version
echo "maven version"
mvn -v
echo "-----path-----"
echo "JAVA_HOME:"$JAVA_HOME
echo "MAVEN_HOME:"$MAVEN_HOME
source /etc/profile

再次更新环境变量

192.168.89.100 和192.168.89.101都要

source /etc/profile

配置host

192.168.89.100 和192.168.89.101都要

vi /etc/hosts
192.168.89.100 rocketmq1
192.168.89.101 rocketmq2

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

配置环境变量

192.168.89.100 和192.168.89.101都要

echo "export ROCKETMQ_HOME=/root/rocketmq" >> /etc/profile
echo "export PATH=$PATH::$ROCKETMQ_HOME/bin" >> /etc/profile
source /etc/profile

『互联网架构』软件架构-rocketmq之部署(61)

192.168.89.100 进行配置

cd /root/rocketmq/conf/2m-2s-sync
ll

『互联网架构』软件架构-rocketmq之部署(61)

192.168.89.100配置

源码:包中jms 里面配置好了2m-2s-sync

直接覆盖就可以了。具体配置下面会说。按照文件名

yum -y install lrzsz
rz -y

『互联网架构』软件架构-rocketmq之部署(61)

192.168.89.100创建存储&日志文件

mkdir /root/rocketmq/data
mkdir /root/rocketmq/data/store
mkdir /root/rocketmq/data/store/commitlog
mkdir /root/rocketmq/data/store/consumequeue
mkdir /root/rocketmq/data/store/index

mkdir /root/rocketmq/data/store-slave
mkdir /root/rocketmq/data/store-slave/index
mkdir /root/rocketmq/data/store-slave/commitlog
mkdir /root/rocketmq/data/store-slave/consumequeue
mkdir -p /root/rocketmq/logs
cd /root/rocketmq/conf && sed -i 's#${user.home}#/root/rocketmq#g' *.xml

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

192.168.89.100改参数

runbroker.sh,runserver.sh启动参数默认对jvm的堆内存设置比较大(不改启动不起来),如果是虚拟机非线上环境需要改下参数

cd /root/rocketmq/bin
vi runbroker.sh
vi runserver.sh
#默认大小
-Xms8g -Xmx8g -Xmn4g
改为:
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
cd /root/rocketmq/bin
vi runserver.sh

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

vi runbroker.sh

『互联网架构』软件架构-rocketmq之部署(61)

192.168.89.100复制到192.168.89.101

cd /root/
scp -r rocketmq/ root@192.168.89.101:/root/

『互联网架构』软件架构-rocketmq之部署(61)

192.168.89.100和192.168.89.101

增加权限

cd  /root/rocketmq/bin
chmod 777 *

192.168.89.100启动Nameserver服务 和 BrokerServer服务

cd /root/rocketmq/bin
sh mqnamesrv &
sh mqbroker -c /root/rocketmq/conf/2m-2s-sync/broker-a.properties &
sh mqbroker -c /root/rocketmq/conf/2m-2s-sync/broker-b-s.properties &

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

192.168.89.101启动Nameserver服务 和 BrokerServer服务

cd /root/rocketmq/bin
sh mqnamesrv &
sh mqbroker -c /root/rocketmq/conf/2m-2s-sync/broker-b.properties &
sh mqbroker -c /root/rocketmq/conf/2m-2s-sync/broker-a-s.properties &

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

测试查看集群

sh mqadmin clusterlist -n 192.168.89.100:9876

『互联网架构』软件架构-rocketmq之部署(61)

测试发送

export NAMESRV_ADDR='rocketmq1:9876;rocketmq2:9876'
#测试发送端
sh /root/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
#测试消费端
sh /root/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

『互联网架构』软件架构-rocketmq之部署(61)

『互联网架构』软件架构-rocketmq之部署(61)

服务停止

cd /root/rocketmq/bin
sh mqshutdown broker
sh mqshutdown namesrv
#或者直接jps,然后kill -9 进程ID

PS:终于安装成功了,2主2从。下一节说说细节和如何测试rocketmq。特别注意的是在broker的properties文件我都在源码上传的。但是里面有个属性一定要注意:默认不配置brokerIP1和brokerIP2时,都会根据当前网卡选择一个IP使用,当你的机器有多块网卡时,很有可能会有问题。brokerIP1一定要填写IP不要填写别名。否则 java 连接就会出现RemotingTooMuchRequestException: sendDefaultImpl call timeout;

百度未收录

>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!

>>原文链接地址:上一篇:

已是最新文章


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Software Engineering for Internet Applications

Software Engineering for Internet Applications

Eve Andersson、Philip Greenspun、Andrew Grumet / The MIT Press / 2006-03-06 / USD 35.00

After completing this self-contained course on server-based Internet applications software, students who start with only the knowledge of how to write and debug a computer program will have learned ho......一起来看看 《Software Engineering for Internet Applications》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具