<form id="jrvnn"></form>

        <address id="jrvnn"><listing id="jrvnn"></listing></address>
        <form id="jrvnn"><nobr id="jrvnn"><meter id="jrvnn"></meter></nobr></form>

          <sub id="jrvnn"><listing id="jrvnn"></listing></sub>

                互聯網架構——軟件架構-rocketmq之部署

                小編:管理員 42閱讀 2022.08.02

                消息隊列作為高并發系統的核心組件之一,能夠幫助業務系統解構提升開發效率和系統穩定性。

                (一)rocketMQ

                官網:http://rocketmq.apache.org/ 開源的分布式消息和流處理,流處理這塊原來只有kafka這樣說,因為rocketMq本身做的也比較好,它也加上了kafka這句話,意思我也很強。

                Github:https://github.com/apache/rocketmq/ 目前最新的版本是4.5.0

                Github:https://github.com/alibaba 這里已經找不到rocketMq了,因為已經捐獻給apache了,之前的很多資料官方都不提供了,唯一有的就是上邊rocketMq的官網。

                • 開發的動機

                在早期階段,我們構建了基于ActiveMQ5.x(早于5.3)的分布式消息中間件。我們的跨國企業使用它進行異步通信、搜索、社交網絡活動流、數據管道,甚至在其程中。隨著我們的業務吞吐量增加,來自我們的消息傳遞集群的壓力也變得緊迫。

                • 為什么開發RocketMQ

                基于我們的研究,隨著隊列的增加和虛擬主題的使用,ActiveMQ IO模塊遇到了瓶頸。我們盡力通過節流、路由或降級來解決這個問題,但效果并不好。所以我們開始關注流行的消息傳遞解決方案Kafka。不幸的是,Kafka不能滿足我們的要求,特別是在低延遲和高可靠性方面。在這種情況下,我們決定發明一個新的消息傳遞引擎來處理更廣泛的用例集,從傳統的pub/sub場景到大容量的實時零損失容忍事務系統。我們相信這個解決方案是有益的,所以我們希望向社區開放源代碼。

                • 下載rocketmq源碼

                名稱

                作用

                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【中級】。

                • 環境

                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.zipyum -y install unzipunzip rocketmq-all-4.2.0-bin-release.zip -d /root/rocketmq
                復制

                安裝JDK 新的版本要求JDK1.8以上的 192.168.89.100 和192.168.89.101都要安裝 源碼:jms目錄下的pro.sh

                #通過vi 直接復制進去也可以#但是一定要記住增加權限chmod 777 pro.sh./pro.sh
                復制
                # @Author: liming# @Date:   2018-11-26 23:14:59# @Last Modified by:   liming# @Last Modified time: 23:15:05# @urlblog idig8.com# 個人公眾號  編程坑太多
                #!/bin/bashSOFT_PATH=/opt/soft
                if [ ! -d $SOFT_PATH ];thenmkdir $SOFT_PATHelseecho "文件夾已經存在"fi
                yum install -y wget #install jdk1.8cd $SOFT_PATHwget --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_PATHcd jdk*JAVA_HOME=`pwd` 
                #install maven3.2.3cd $SOFT_PATHwget https://archive.apache.org/dist/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gztar -zxvf apache-maven-3.2.3-bin.tar.gz -C $SOFT_PATHmv apache-maven-3.2.3 maven-3.2.3cd maven*MAVEN_HOME=`pwd`
                #install git 2.8.0cd $SOFT_PATHyum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils- MakeMakerwget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.8.0.tar.gztar -zxvf git-2.8.0.tar.gz -C $SOFT_PATHcd git*./configuremake installln -s /usr/local/bin/git /usr/bin/git
                #追加環境變量echo "export JAVA_HOME=${JAVA_HOME}" >> /etc/profileecho "export PATH=$""JAVA_HOME/bin:$""PATH" >> /etc/profileecho "export MAVEN_HOME=${MAVEN_HOME}" >> /etc/profileecho "export PATH=$""MAVEN_HOME/bin:$""PATH" >> /etc/profilesource /etc/profile#輸出信息echo "-----source update-----"echo "java version"java -versionecho "maven version"mvn -vecho "-----path-----"echo "JAVA_HOME:"$JAVA_HOMEecho "MAVEN_HOME:"$MAVEN_HOMEsource /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 rocketmq1192.168.89.101 rocketmq2
                復制

                配置環境變量 192.168.89.100 和192.168.89.101都要

                echo "export ROCKETMQ_HOME=/root/rocketmq" >> /etc/profileecho "export PATH=$PATH::$ROCKETMQ_HOME/bin" >> /etc/profilesource /etc/profile
                復制

                192.168.89.100 進行配置

                cd /root/rocketmq/conf/2m-2s-syncll
                復制

                192.168.89.100配置 源碼:包中jms 里面配置好了2m-2s-sync 直接覆蓋就可以了。具體配置下面會說。按照文件名

                yum -y install lrzszrz -y
                復制

                192.168.89.100創建存儲&日志文件

                mkdir /root/rocketmq/datamkdir /root/rocketmq/data/storemkdir /root/rocketmq/data/store/commitlogmkdir /root/rocketmq/data/store/consumequeuemkdir /root/rocketmq/data/store/index
                mkdir /root/rocketmq/data/store-slavemkdir /root/rocketmq/data/store-slave/indexmkdir /root/rocketmq/data/store-slave/commitlogmkdir /root/rocketmq/data/store-slave/consumequeuemkdir -p /root/rocketmq/logscd /root/rocketmq/conf && sed -i 's#${user.home}#/root/rocketmq#g' *.xml
                復制

                192.168.89.100改參數 runbroker.sh,runserver.sh啟動參數默認對jvm的堆內存設置比較大(不改啟動不起來),如果是虛擬機非線上環境需要改下參數

                cd /root/rocketmq/binvi runbroker.shvi runserver.sh
                復制
                #默認大小-Xms8g -Xmx8g -Xmn4g改為:JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
                復制
                cd /root/rocketmq/binvi runserver.sh
                復制
                vi runbroker.sh
                復制

                192.168.89.100復制到192.168.89.101

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

                192.168.89.100和192.168.89.101 增加權限

                cd  /root/rocketmq/binchmod 777 *
                復制

                192.168.89.100啟動Nameserver服務 和 BrokerServer服務

                cd /root/rocketmq/binsh 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 &
                復制

                192.168.89.101啟動Nameserver服務 和 BrokerServer服務

                cd /root/rocketmq/binsh 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 &
                復制

                測試查看集群

                sh mqadmin clusterlist -n 192.168.89.100:9876
                復制

                測試發送

                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
                復制

                服務停止

                cd /root/rocketmq/binsh mqshutdown brokersh mqshutdown namesrv#或者直接jps,然后kill -9 進程ID
                復制

                PS:終于安裝成功了,2主2從。下一節說說細節和如何測試rocketmq。特別注意的是在broker的properties文件我都在源碼上傳的。但是里面有個屬性一定要注意:默認不配置brokerIP1和brokerIP2時,都會根據當前網卡選擇一個IP使用,當你的機器有多塊網卡時,很有可能會有問題。brokerIP1一定要填寫IP不要填寫別名。否則java連接就會出現RemotingTooMuchRequestException: sendDefaultImpl call timeout;

                關聯標簽:
                皇宫里的共享小公主

                  <form id="jrvnn"></form>

                      <address id="jrvnn"><listing id="jrvnn"></listing></address>
                      <form id="jrvnn"><nobr id="jrvnn"><meter id="jrvnn"></meter></nobr></form>

                        <sub id="jrvnn"><listing id="jrvnn"></listing></sub>