RocketMQ學(xué)習(xí)筆記(一)

  • 數(shù)據(jù)結(jié)構(gòu):先進(jìn)先出的隊(duì)列呢灶。其應(yīng)用場景主要有3個(gè)方面:
    • 應(yīng)用解耦:系統(tǒng)的耦合性越高,容錯(cuò)性就越低钉嘹。以電商應(yīng)用為例鸯乃,用戶創(chuàng)建訂單后,若耦合調(diào)用庫存系統(tǒng)跋涣、物流系統(tǒng)缨睡、支付系統(tǒng),任何一個(gè)子系統(tǒng)出了故障或者因?yàn)樯?jí)等原因暫時(shí)不可用陈辱,都會(huì)造成下單操作異常奖年,影響用戶使用體驗(yàn)。使用消息隊(duì)列解耦合沛贪,系統(tǒng)的耦合性就會(huì)大大降低了陋守。比如物流系統(tǒng)發(fā)生故障,需要幾分鐘才能修復(fù)利赋,在這段時(shí)間內(nèi)水评,物流系統(tǒng)要處理的數(shù)據(jù)被緩存到消息隊(duì)列中,而用戶的下單操作正常完成媚送。當(dāng)物流系統(tǒng)恢復(fù)后中燥,補(bǔ)充處理存在消息隊(duì)列中的訂單消息即可,終端系統(tǒng)感知不到物流系統(tǒng)發(fā)生過幾分鐘故障塘偎。
    • 流量削峰:若應(yīng)用系統(tǒng)遇到請(qǐng)求流量的瞬間猛增褪那,則有可能會(huì)被壓垮幽纷。有了消息隊(duì)列可以將大量請(qǐng)求緩存起來式塌,分散到很長一段時(shí)間處理博敬,這樣可以大大提升系統(tǒng)的穩(wěn)定性和用戶體驗(yàn)。一般情況下峰尝,為了保證系統(tǒng)的穩(wěn)定性偏窝,若系統(tǒng)負(fù)載超過閾值,則會(huì)阻止用戶請(qǐng)求武学,但這影響了用戶體驗(yàn)祭往。使用消息隊(duì)列將請(qǐng)求緩存起來,等待系統(tǒng)處理完畢后再通知用戶下單完畢火窒,這比不能下單體驗(yàn)要好硼补。處于經(jīng)濟(jì)考量目的:若業(yè)務(wù)系統(tǒng)正常時(shí)段的QPS為1000,流量最高峰是10000熏矿,為了應(yīng)對(duì)流量高峰配置高性能的服務(wù)器顯然不劃算已骇,則可以使用消息隊(duì)列對(duì)峰值流量進(jìn)行削峰。
    • 數(shù)據(jù)分發(fā):通過消息隊(duì)列可以讓數(shù)據(jù)在多個(gè)系統(tǒng)之間流通更加方便票编。數(shù)據(jù)的產(chǎn)生方不需要關(guān)心誰來使用數(shù)據(jù)褪储,只需要將數(shù)據(jù)發(fā)送到消息隊(duì)列,數(shù)據(jù)使用方直接在消息隊(duì)列中獲取數(shù)據(jù)即可慧域。
應(yīng)用解耦
流量削峰
數(shù)據(jù)分發(fā)
  • MQ的優(yōu)點(diǎn):解耦鲤竹、削峰、數(shù)據(jù)分發(fā)昔榴。
  • MQ的缺點(diǎn):
    • 系統(tǒng)可用性降低:系統(tǒng)引入的外部依賴越多辛藻,系統(tǒng)穩(wěn)定性越差吱肌。一旦MQ宕機(jī),就會(huì)對(duì)業(yè)務(wù)造成影響岩榆,如何保證MQ的高可用坟瓢?
    • 系統(tǒng)復(fù)雜度提高:MQ的加入大大增加了系統(tǒng)的復(fù)雜度勇边,以前系統(tǒng)間是同步的遠(yuǎn)程調(diào)用,現(xiàn)在是通過MQ進(jìn)行異步調(diào)用折联,如何保證消息沒有被重復(fù)消費(fèi)粒褒?怎么處理消息丟失的情況?如何保證消息傳遞的順序性诚镰?
    • 一致性問題:A系統(tǒng)處理完業(yè)務(wù)奕坟,通過MQ給B祥款、C、D三個(gè)系統(tǒng)發(fā)送消息數(shù)據(jù)月杉,若B系統(tǒng)刃跛、C系統(tǒng)處理成功,而D系統(tǒng)處理失敗苛萎,則如何保證消息數(shù)據(jù)處理的一致性桨昙?
  • 常見的MQ產(chǎn)品包括ActiveMQ、RabbitMQ腌歉、RocketMQ蛙酪、Kafka,各方面對(duì)比如下:
特性 ActiveMQ RabbitMQ RocketMQ Kafka
開發(fā)語言 Java Erlang Java Scala
單機(jī)吞吐量 萬級(jí) 萬級(jí) 10萬級(jí) 10萬級(jí)
時(shí)效性 ms級(jí) us級(jí) ms級(jí) ms級(jí)以內(nèi)
可用性 高(主從架構(gòu)) 高(主從架構(gòu)) 非常高(分布式架構(gòu)) 非常高(分布式架構(gòu))
功能特性 成熟的產(chǎn)品翘盖,有很多公司都在使用桂塞;有較多的文檔;各種協(xié)議支持較好 基于Erlang開發(fā)馍驯,所以并發(fā)能力很強(qiáng)阁危,性能極其好,延時(shí)很低泥彤,管理界面較豐富 MQ功能完備欲芹,擴(kuò)展性極佳 只支持主要的MQ功能菱父,像一些消息查詢浙宜,消息回溯等功能沒有提供粟瞬,畢竟是為大數(shù)據(jù)準(zhǔn)備的,在大數(shù)據(jù)領(lǐng)域應(yīng)用廣

Linux上搭建RocketMQ

  • 下載地址:傳送門
  • 環(huán)境要求:需要提前安裝好jdk1.8
  • 解壓壓縮包:unzip rocketmq-all-4.5.1-bin-release.zip市怎,重新命名為rocketmqmv rocketmq-all-4.5.1-bin-release rocketmq
  • 修改兩個(gè)配置文件(runbroker.sh区匠、runserver.sh)中的內(nèi)存參數(shù)驰弄,不然會(huì)啟動(dòng)失敗戚篙。
# vim runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
# vim runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

啟動(dòng)RocketMQ服務(wù)

  • 后臺(tái)啟動(dòng)NameServernohup sh bin/mqnamesrv &臣镣,實(shí)時(shí)查看啟動(dòng)日志:tail -f ~/logs/rocketmqlogs/namesrv.log
  • 后臺(tái)啟動(dòng)Brokernohup sh bin/mqbroker -n localhost:9876 &,實(shí)時(shí)查看啟動(dòng)日志:tail -f ~/logs/rocketmqlogs/broker.log

測試RocketMQ生產(chǎn)和消費(fèi)消息

  • 生產(chǎn)消息:
#設(shè)置臨時(shí)的環(huán)境變量
export NAMESRV_ADDR=localhost:9876
#使用安裝包的Demo生產(chǎn)消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
  • 消費(fèi)消息:
#設(shè)置臨時(shí)的環(huán)境變量
export NAMESRV_ADDR=localhost:9876
#消費(fèi)消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

關(guān)閉RocketMQ服務(wù)

#關(guān)閉NameServer
sh bin/mqshutdown namesrv
#關(guān)閉Broker
sh bin/mqshutdown broker

RocketMQ集群搭建

  • 集群中各個(gè)角色的介紹:
    • Producer:消息的發(fā)送者 => 發(fā)信者阔蛉。
    • Consumer:消息接收者 => 收信者状原。
    • Broker:暫存和傳輸消息 => 郵局颠区。
    • NameServer:管理Broker => 各個(gè)郵局的管理機(jī)構(gòu)。
    • Topic:區(qū)分消息的種類朋截;一個(gè)發(fā)送者可以發(fā)送消息給一個(gè)或者多個(gè)Topic部服;一個(gè)消息的接收者可以訂閱一個(gè)或者多個(gè)Topic消息廓八。
    • Message Queue:是Topic的分區(qū)剧蹂,用于并行發(fā)送和接收消息国夜。
  • RocketMQ集群特點(diǎn):
    • NameServer是一個(gè)幾乎無狀態(tài)的節(jié)點(diǎn)筹裕,可集群部署朝卒,節(jié)點(diǎn)之間無任何信息同步抗斤。
    • Broker部署相對(duì)復(fù)雜瑞眼,Broker分為Master與Slave伤疙,一個(gè)Master可以對(duì)應(yīng)多個(gè)Slave,但是一個(gè)Slave只能對(duì)應(yīng)一個(gè)Master蛙讥,Master與Slave的對(duì)應(yīng)關(guān)系通過指定相同的BrokerName旁涤,不同的BrokerId來定義拭抬,BrokerId=0表示Master造虎,非0表示Slave。Master也可以部署多個(gè)犁功。每個(gè)Broker與NameServer集群中的所有節(jié)點(diǎn)建立長連接署鸡,定時(shí)注冊(cè)Topic信息到所有NameServer时捌。
    • Producer與NameServer集群中的其中一個(gè)節(jié)點(diǎn)(隨機(jī)選擇)建立長連接奢讨,定期從NameServer獲取Topic路由信息拿诸,并向提供Topic服務(wù)的Master建立長連接亩码,且定時(shí)向Master發(fā)送心跳。Producer完全無狀態(tài),可集群部署蠢络。
    • Consumer與NameServer集群中的其中一個(gè)節(jié)點(diǎn)(隨機(jī)選擇)建立長連接啡省,定期從NameServer獲取Topic路由信息卦睹,并向提供Topic服務(wù)的Master结序、Slave建立長連接徐鹤,且定時(shí)向Master、Slave發(fā)送心跳劲赠。Consumer既可以從Master訂閱消息凛澎,也可以從Slave訂閱消息阿迈,訂閱規(guī)則由Broker配置決定苗沧。
  • 幾種集群模式:
    • 單Master模式:風(fēng)險(xiǎn)較大待逞,一旦Broker重啟或者宕機(jī)時(shí),會(huì)導(dǎo)致整個(gè)服務(wù)不可用怜庸。不建議線上環(huán)境使用割疾,可用于本地測試宏榕。
    • 多Master模式:一個(gè)集群無Slave麻昼,全是Master,例如2個(gè)Master或3個(gè)Master燕垃。
      • 優(yōu)點(diǎn):配置簡單卜壕,單個(gè)Master宕機(jī)或重啟維護(hù)對(duì)應(yīng)用無影響轴捎,在磁盤配置為RAID10時(shí)侦副,即使機(jī)器宕機(jī)不可恢復(fù)情況下尺碰,由于RAID10磁盤非城浊牛可靠题篷,消息也不會(huì)丟(異步刷盤丟失少量消息番枚,同步刷盤一條不丟)葫笼,性能最高渔欢;
      • 缺點(diǎn):單臺(tái)機(jī)器宕機(jī)期間苫幢,這臺(tái)機(jī)器上未被消費(fèi)的消息在機(jī)器恢復(fù)之前不可訂閱韩肝,消息實(shí)時(shí)性會(huì)受到影響涡相。
    • 多Master多Slave模式(異步):每個(gè)Master配置一個(gè)Slave催蝗,有多對(duì)Master-Slave丙号,HA采用異步復(fù)制方式喳魏,主備有短暫消息延遲(毫秒級(jí))刺彩。
      • 優(yōu)點(diǎn):即使磁盤損壞创倔,消息丟失的非常少,且消息實(shí)時(shí)性不會(huì)受影響念搬,同時(shí)Master宕機(jī)后朗徊,消費(fèi)者仍然可以從Slave消費(fèi)爷恳,而且此過程對(duì)應(yīng)用透明,不需要人工干預(yù)栈虚,性能同多Master模式幾乎一樣史隆;
      • 缺點(diǎn):Master宕機(jī)粘姜,磁盤損壞情況下會(huì)丟失少量消息孤紧。
    • 多Master多Slave模式(同步):每個(gè)Master配置一個(gè)Slave留储,有多對(duì)Master-Slave获讳,HA采用同步雙寫方式丐膝,即只有主備都寫成功,才向應(yīng)用返回成功浑此。
      • 優(yōu)點(diǎn):數(shù)據(jù)與服務(wù)都無單點(diǎn)故障凛俱,Master宕機(jī)情況下,消息無延遲原叮,服務(wù)可用性與數(shù)據(jù)可用性都非常高;
      • 缺點(diǎn):性能比異步復(fù)制模式略低(大約低10%左右)悦荒,發(fā)送單個(gè)消息的RT會(huì)略高,且目前版本在主節(jié)點(diǎn)宕機(jī)后身腻,備機(jī)不能自動(dòng)切換為主機(jī)。

雙主雙從集群搭建

  • 總體架構(gòu):消息高可用采用2m-2s(同步雙寫)方式愈诚。
集群架構(gòu)
  • 集群工作流程:
    • 啟動(dòng)NameServer她按,NameServer起來后監(jiān)聽端口牛隅,等待Broker、Producer酌泰、Consumer連上來媒佣,相當(dāng)于一個(gè)路由控制中心。
    • Broker啟動(dòng)陵刹,跟所有的NameServer保持長連接默伍,定時(shí)發(fā)送心跳包也糊。心跳包中包含當(dāng)前Broker信息(IP+端口等)以及存儲(chǔ)所有Topic信息钞馁。注冊(cè)成功后允悦,NameServer集群中就有Topic跟Broker的映射關(guān)系全闷。
    • 收發(fā)消息前局服,先創(chuàng)建Topic唆迁,創(chuàng)建Topic時(shí)需要指定該Topic要存儲(chǔ)在哪些Broker上妒蔚,也可以在發(fā)送消息時(shí)自動(dòng)創(chuàng)建Topic贞绵。
    • Producer發(fā)送消息母蛛,啟動(dòng)時(shí)先跟NameServer集群中的其中一臺(tái)建立長連接秫逝,并從NameServer中獲取當(dāng)前發(fā)送的Topic存在哪些Broker上刷后,輪詢從隊(duì)列列表中選擇一個(gè)隊(duì)列嘶炭,然后與隊(duì)列所在的Broker建立長連接從而向Broker發(fā)消息睡陪。
    • Consumer跟Producer類似涡拘,跟其中一臺(tái)NameServer建立長連接,獲取當(dāng)前訂閱Topic存在哪些Broker上,然后直接跟Broker建立連接通道只洒,開始消費(fèi)消息。
  • 服務(wù)器環(huán)境:
序號(hào) IP 角色 架構(gòu)模式
1 192.168.10.102 nameserver跛梗、brokerserver Master1漾岳、Slave2
2 192.168.10.103 nameserver、brokerserver Master2妇斤、Slave1
  • 修改host文件:vim /etc/hosts,然后重啟網(wǎng)卡:systemctl restart network
# nameserver
192.168.10.102 rocketmq-nameserver1
192.168.10.103 rocketmq-nameserver2
# broker
192.168.10.102 rocketmq-master1
192.168.10.102 rocketmq-slave2
192.168.10.103 rocketmq-master2
192.168.10.103 rocketmq-slave1
  • 防火墻配置:宿主機(jī)需要遠(yuǎn)程訪問虛擬機(jī)的rocketmq服務(wù)和web服務(wù)陷舅,需要開放相關(guān)的端口號(hào),簡單粗暴的方式是直接關(guān)閉防火墻。
#關(guān)閉防火墻
systemctl stop firewalld.service 
#查看防火墻的狀態(tài)
firewall-cmd --state 
#禁止 firewalld 開機(jī)啟動(dòng)
systemctl disable firewalld.service
  • 或者為了安全,只開放特定的端口號(hào),RocketMQ默認(rèn)使用3個(gè)端口:9876 践樱、1091111011寂恬。若防火墻沒有關(guān)閉,則必須開放這些端口:
    • nameserver默認(rèn)使用9876端口伊磺;
    • master默認(rèn)使用10911端口莺丑;
    • slave默認(rèn)使用11011端口仑扑。
#開放 nameserver 默認(rèn)端口
firewall-cmd --remove-port=9876/tcp --permanent
#開放 master 默認(rèn)端口
firewall-cmd --remove-port=10911/tcp --permanent
#開放slave默認(rèn)端口(當(dāng)前集群模式可不開啟)
firewall-cmd --remove-port=11011/tcp --permanent 
#重啟防火墻
firewall-cmd --reload
  • 環(huán)境變量配置:vim /etc/profile,修改完后執(zhí)行:source /etc/profile使得配置立即生效。
#set rocketmq
ROCKETMQ_HOME=/opt/module/rocketmq
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
  • 創(chuàng)建消息存儲(chǔ)路徑:
#服務(wù)器1:192.168.10.102
mkdir /opt/module/rocketmq/store
mkdir /opt/module/rocketmq/store/broker-a
mkdir /opt/module/rocketmq/store/broker-a/commitlog
mkdir /opt/module/rocketmq/store/broker-a/consumequeue
mkdir /opt/module/rocketmq/store/broker-a/index
mkdir /opt/module/rocketmq/store/broker-b-s
mkdir /opt/module/rocketmq/store/broker-b-s/commitlog
mkdir /opt/module/rocketmq/store/broker-b-s/consumequeue
mkdir /opt/module/rocketmq/store/broker-b-s/index

#服務(wù)器2:192.168.10.103
mkdir /opt/module/rocketmq/store
mkdir /opt/module/rocketmq/store/broker-b
mkdir /opt/module/rocketmq/store/broker-b/commitlog
mkdir /opt/module/rocketmq/store/broker-b/consumequeue
mkdir /opt/module/rocketmq/store/broker-b/index
mkdir /opt/module/rocketmq/store/broker-a-s
mkdir /opt/module/rocketmq/store/broker-a-s/commitlog
mkdir /opt/module/rocketmq/store/broker-a-s/consumequeue
mkdir /opt/module/rocketmq/store/broker-a-s/index
  • 修改配置文件前先關(guān)閉RocketMQ服務(wù):
  • 修改Master1配置文件(服務(wù)器ip:192.168.10.102):vim /opt/module/rocketmq/conf/2m-2s-sync/broker-a.properties
#暴露的外網(wǎng)IP,必須暴露
brokerIP1=192.168.10.102
brokerIP2=192.168.10.102
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字芥映,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master刽严,大于0 表示 Slave
brokerId=0
#nameServer地址管削,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic撑螺,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic含思,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組甘晤,建議線下開啟含潘,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間线婚,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條遏弱,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/opt/module/rocketmq/store/broker-a
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/opt/module/rocketmq/store/broker-a/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/opt/module/rocketmq/store/broker-a/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/opt/module/rocketmq/store/broker-a/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/opt/module/rocketmq/store/broker-a/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/opt/module/rocketmq/store/broker-a/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
  • 修改Slave2配置文件(服務(wù)器ip:192.168.10.102):vim /opt/module/rocketmq/conf/2m-2s-sync/broker-b-s.properties
#暴露的外網(wǎng)IP
brokerIP1=192.168.10.102
brokerIP2=192.168.10.102
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master塞弊,>0 表示 Slave
brokerId=1
#nameServer地址漱逸,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic游沿,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic饰抒,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組诀黍,建議線下開啟袋坑,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=11011
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間眯勾,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條枣宫,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/opt/module/rocketmq/store/broker-b-s
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/opt/module/rocketmq/store/broker-b-s/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/opt/module/rocketmq/store/broker-b-s/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/opt/module/rocketmq/store/broker-b-s/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/opt/module/rocketmq/store/broker-b-s/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/opt/module/rocketmq/store/broker-b-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
  • 修改Master2配置文件(服務(wù)器ip:192.168.10.103):vim /opt/module/rocketmq/conf/2m-2s-sync/broker-b.properties
#暴露的外網(wǎng)IP
brokerIP1=192.168.10.103
brokerIP2=192.168.10.103
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master吃环,>0 表示 Slave
brokerId=0
#nameServer地址镶柱,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發(fā)送消息時(shí)蜈漓,自動(dòng)創(chuàng)建服務(wù)器不存在的topic聘芜,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟追城,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組范咨,建議線下開啟故觅,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間渠啊,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條输吏,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/opt/module/rocketmq/store/broker-b
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/opt/module/rocketmq/store/broker-b/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/opt/module/rocketmq/store/broker-b/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/opt/module/rocketmq/store/broker-b/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/opt/module/rocketmq/store/broker-b/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/opt/module/rocketmq/store/broker-b/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
  • 修改Slave1配置文件(服務(wù)器ip:192.168.10.103):vim /opt/module/rocketmq/conf/2m-2s-sync/broker-a-s.properties
#暴露的外網(wǎng)IP
brokerIP1=192.168.10.103
brokerIP2=192.168.10.103
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master替蛉,>0 表示 Slave
brokerId=1
#nameServer地址贯溅,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發(fā)送消息時(shí)拄氯,自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic它浅,建議線下開啟译柏,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟姐霍,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=11011
#刪除文件時(shí)間點(diǎn)鄙麦,默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條镊折,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/opt/module/rocketmq/store/broker-a-s
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/opt/module/rocketmq/store/broker-a-s/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/opt/module/rocketmq/store/broker-a-s/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/opt/module/rocketmq/store/broker-a-s/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/opt/module/rocketmq/store/broker-a-s/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/opt/module/rocketmq/store/broker-a-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
  • 啟動(dòng)集群服務(wù):
#分別在兩臺(tái)主機(jī)上啟動(dòng)NameServe集群:
nohup sh bin/mqnamesrv &

#啟動(dòng)Broker集群
#啟動(dòng) Master1 節(jié)點(diǎn)(服務(wù)器ip:192.168.10.102):
nohup sh bin/mqbroker -c /opt/module/rocketmq/conf/2m-2s-sync/broker-a.properties &
#啟動(dòng) Slave2 節(jié)點(diǎn)(服務(wù)器ip:192.168.10.102):
nohup sh bin/mqbroker -c /opt/module/rocketmq/conf/2m-2s-sync/broker-b-s.properties &
#啟動(dòng) Master2 節(jié)點(diǎn)(服務(wù)器ip:192.168.10.103):
nohup sh bin/mqbroker -c /opt/module/rocketmq/conf/2m-2s-sync/broker-b.properties &
#啟動(dòng) Slave1 節(jié)點(diǎn)(服務(wù)器ip:192.168.10.103):
nohup sh bin/mqbroker -c /opt/module/rocketmq/conf/2m-2s-sync/broker-a-s.properties &
jps查看服務(wù)器1啟動(dòng)進(jìn)程
jps查看服務(wù)器2啟動(dòng)進(jìn)程
  • 查看日志:
# 查看nameServer日志
tail -500f ~/logs/rocketmqlogs/namesrv.log
# 查看broker日志
tail -500f ~/logs/rocketmqlogs/broker.log
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胯府,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恨胚,更是在濱河造成了極大的恐慌骂因,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃泡,死亡現(xiàn)場離奇詭異侣签,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)急迂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹦肴,“玉大人僚碎,你說我怎么就攤上這事∫趸希” “怎么了勺阐?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長矛双。 經(jīng)常有香客問我渊抽,道長,這世上最難降的妖魔是什么议忽? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任懒闷,我火速辦了婚禮,結(jié)果婚禮上栈幸,老公的妹妹穿的比我還像新娘愤估。我一直安慰自己,他們只是感情好速址,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布玩焰。 她就那樣靜靜地躺著,像睡著了一般芍锚。 火紅的嫁衣襯著肌膚如雪昔园。 梳的紋絲不亂的頭發(fā)上蔓榄,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音默刚,去河邊找鬼甥郑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛羡棵,可吹牛的內(nèi)容都是我干的壹若。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼皂冰,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼店展!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秃流,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤赂蕴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后舶胀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體概说,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年嚣伐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糖赔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轩端,死狀恐怖放典,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情基茵,我是刑警寧澤奋构,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站拱层,受9級(jí)特大地震影響弥臼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜根灯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一径缅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烙肺,春花似錦芥驳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至怎栽,卻和暖如春丽猬,著一層夾襖步出監(jiān)牢的瞬間宿饱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工脚祟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谬以,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓由桌,卻偏偏與公主長得像为黎,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子行您,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容