RocketMQ概念、環境搭建

一、概述
RocketMQ是一款分佈式、隊列模型的消息中間件,具有以下特點:

  • A、能夠保證嚴格的消息順序;
    B、提供豐富的消息拉取模式;
    C、高效的訂閱者水平擴展能力;
    D、實時的消息訂閱機制;
    E、億級消息堆積能力;
    F、Metaq1.x和2.x,3.x下以後版本名,產品名稱改爲RocketMQ

         選用理由:
            A、強調集羣無單點,可擴展,任意一點高可用,水平可擴展;
            B、海量消息堆積能力,消息堆積後,寫入低延遲;
            C、支持上萬個隊列;
            D、消息失敗重試機制;
            E、消息可查詢;
            F、開源社區活躍;
            G、成熟度(經過雙十一考驗);
    

    二、專業術語

     - Producer:消息生產者,負責生產消息,一般由業務系統負責產生消息;
    Consumer:消息消費者,負責消費消息,一般是後臺系統負責異步消費;
    Push Consumer:Consumer的一種,應用通常向Consumer對象註冊一個Listener接口,一旦受到消息,立刻回掉Listener接口方法;
    Pull Consumer:Consumer的一種,應用通常主動調用Consumer的拉消息方法從Broker拉消息,主動權應用控制;
    Producer Group:一類Producer的集合名稱,這類Producer通常發送一類消息,且發送邏輯一致;
    Consumer Group:一類Consumer的集合名稱,這類Consumer通常消費一類消息,且消費邏輯一致;
    Broker:消息中轉角色,負責存儲消息,轉發消息,一般也成爲Server,在JMS規範中稱爲Provider。
    廣播消費:一條消息被多個Consumer消費,計時這些Consumer屬於同一個Consumer Group,消息也會被Consumer Group中的每個Consumer都消費一次,廣播消費中的Consumer Group概念可以認爲在消息劃分方面無意義。
    集羣消費:一個Consumer Group中的Consumer實例平均分攤消費消息。
                      在JMS規範中,JMS point-to-point model與之類似,但是RocketMQ的集羣消費功能大等於PTP模型。因爲ROcket MQ單個Consumer Group內的消費者類似於PTP,但是一個Topic/Queue可以被多個Consumer Group消費。
    順序消息:消費消息的順序要同發送消息的順序一致,在RocketMQ中,主要指的是局部順序,即一類消息爲滿足順序性,必須Producer單線程順序發送,且發送到同一個隊列,這樣Consumer就可以按照Producer發送的順序去消費消息。
    

三、RocketMQ環境搭建

  • 雙/多master配置方式: 0、服務器環境:
    這裏寫圖片描述
    1、命令:(每個master都要修改) vim /etc/hosts
   IP:192.168.100.24 ;NAME:rocketmq-nameserver1   
   IP:192.168.100.24 ;NAME:rocketmq-master1   
   IP:192.168.100.25 ;NAME:rocketmq-nameserver2

2、命令:service network restart
3、命令:tar -zxvf alibaba-rocketmq-3.4.2.6.tar.gz -C /usr/local/
4、創建軟連接,命令:ln -s alibaba-rocketmq-3.4.2.6 rocketmq
5、創建存儲路勁,命令:mkdir /usr/local/rocketmq/store
命令:mkdir /usr/local/rocketmq/store/commitlog
命令:mkdir /usr/local/rocketmq/store/consumequeue
命令:mkdir /usr/local/rocketmq/store/index
6、修改RocketMQ配置文件,命令:vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
內容如下:

   #所屬集羣名字 
   brokerClusterName=rocketmq-cluster
   #broker名字,注意此處不同的配置文件填寫的不一樣  
   brokerName=broker-a
   #0表示Master,>0表示Slave 
   brokerId=0
   #nameServer地址,分號分割  
   namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
   #在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數  
   defaultTopicQueueNums=4
   #是否允許Broker自動創建Topic,建議線下開啓,線上關閉  
   autoCreateTopicEnable=true
   #是否允許Broker自動創建訂閱組,建議線下開啓,線上關閉 
   autoCreateSubscritionGroup=true
   #Broker對外服務的監聽端口  
   listentPort=10911
   #刪除文件時間點,默認凌晨4點  
   deleteWhen=04
   #文件保留時間,默認48小時  
   fileReservedTime=120
   #commitLog每個文件的大小默認1G  
   mapedFileSizeCommitLog=1073741824
   #ConsumeQueue每個文件默認存30w條,根據業務情況調整
   ConsumeQueue=300000
   #destroyMapedFileIntervalFocibly=120000
   #redeleteHangedFileInterval=120000
   #檢查物理文件磁盤空間 
   diskMaxUsedSpaceRatio=88
   #存儲路徑  
   storePathRootDir=/usr/local/rocketmq/store
   #commitLog存儲路徑  
   storePathCommitLog=/usr/local/rocketmq/store/commitlog
   #消費隊列存儲路徑存儲路徑  
   storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
   #消息索引存儲路徑  
   storePathIndex=/usr/local/rocketmq/store/index
   #checkpoint文件存儲路徑  
   storeCheckpoint=/usr/local/rocketmq/store/checkpoint
   #abort文件存儲路徑  
   abortFile=/usr/local/rocketmq/store/abort
   #限制的消息大小  
   maxMessageSize=65536
   #flushConsumeQueueLeastages=2
   #flushCommitLogThoroughInterval=10000
   #flushConsumeQueueThoroughInterval=60000
   #Broker的角色
   #-ASYNC_MASTER以不復制Master
   #-SYNC_mATER 同步雙寫Master
   brokerRole=ASYNC_MASTER
   #磁盤方式
   #-ASYNC_FLUSH異步刷盤
   #-SYNC_FLUSH同步刷盤 flushDiskType=ASYNC_FLUSH
   #checkTransactionMessageEnable=false
   #發消息線程數量
   #sendMessagethreadPoolNums=128
   #拉消息線程池數量

(重複上面內容修改操作)

vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties

7、修改日誌配置文件【兩臺機器】,命令:mkdir -p /usr/local/rocketmq/logs
命令:cd/usr/local/rocketmq/conf && sed-i's#${usr.home}#/usr/local/rocketmq#g'*.xml

8、修改啓動腳本參數【兩臺機器】

vim /usr/local/rocketmq/bin/runbroker.sh

修改內容:
JAVA_OPT=”${JAVA_OPT} -server -Xmx1g -Xmn512m -XX:PermSize=128m


vim /usr/local/rocketmq/bin/runserver.sh

修改內容:
JAVA_OPT=”${JAVA_OPT} -server -Xmx1g -Xmn512m -XX:PermSize=128m

9、啓動 NameServer【兩天機器】,命令:cd/usr/local/rocket/bin nohup sh mqnamesrv &

10、啓動Broker Server A 【192.168.100.24】
命令:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
命令:netstat -ntlp
命令:jps
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

11、啓動BrokerServer B 【192.168.100.25】
命令:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
命令:netstat -ntlp
命令:jps
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
12、解壓Tomcat,命令:tar -zxvf apache-tomcat-7.029.tar.gz -C /usr/local
13、進入tomcat,命令:cd apache-tomcat-7.0.29/webapps/ ,上傳rocketmq-console控制檯war包
14、命令:mikdir /usr/local/rocketmq-console
15、解壓rocketmq-console.war到rocketmq-console文件夾中,命令:unzip rocketmq-console.war -d rocketmq-console
16、進入rocketmq-console中的web-inf的class文件,命令:cd rocketmq-console/ ,命令:cd WEB-INF,命令:cd class/
17、修改配置文件,命令:vim config.properties
配置完成,可以啓動
18、啓動tomcat,命令:/usr/local/apache-tomcat-7.0.29/bin/startup.sh
19|、查看啓動結果,命令:jps
20、查看tomcat日誌,命令:tail -f -n 500 /usr/local/apache-tomcat-7.0.29/logs/catalina.out

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章