RocketMQ 介紹與安裝



RocketMQ 介紹

MQ 介紹

定義

  • MQ(Message Queue,消息隊列)是一種用來保存消息數據的隊列。

  • 隊列:數據結構的一種,特征為“先進先出”。

image

image

MQ 作用

  • 應用解耦

  • 快速的應用變更和維護

  • 流量削鋒(削峰填谷)

MQ 缺點

  • 系統可用性降低(解決:搭集群)
  • 系統復雜度提高(解決:程序員提升水平)
  • 異步消息機制(以下都有解決方案)
    • 消息時序性
    • 消息丟失
    • 消息一致性
    • 消息重復使用

MQ 常見產品

  • ActiveMQ :Java 語言實現,萬級數據吞吐量,處理速度 ms 級,主從架構,成熟度高。
  • RabbitMQ :Erlang 語言實現,萬級數據吞吐量,處理速度 us 級,主從架構。
  • RocketMQJava 語言實現,十萬級數據吞吐量,處理速度 ms 級,分布式架構,功能強大,擴展性強
  • kafka :Scala 語言實現,十萬級數據吞吐量,處理速度 ms 級,分布式架構,功能較少,應用於大數據較多。

RocketMQ 簡介

RocketMQ 是阿里開源的一款非常優秀中間件產品,脫胎於阿里的另一款隊列技術 MetaQ,后捐贈給 Apache 基金會作為一款孵化技術,僅僅經歷了一年多的時間就成為 Apache 基金會的頂級項目。並且現在已經在阿里內部被廣泛應用,且經受住了多次雙十一的這種極致場景的壓力(2017 年的雙十一,RocketMQ 流轉的消息量達到了萬億級,峰值 TPS 達到 5600 萬)。

同時,它還解決了上述提到的所有的消息隊列的缺點。

RocketMQ 架構


RocketMQ 安裝

1)安裝 JDK

2)解壓 RocketMQ 安裝包下載地址):unzip rocketmq-all-4.5.2-bin-release.zip

3)修改目錄名稱:mv rocketmq-all-4.5.2-bin-release rocketmq

4)調整 RocketMQ 的啟動內存

  • RocketMQ 的默認內存占用非常高,一般需要 4-8G 的虛擬機 JVM 參數空間,因此可以通過更改 mqbroker 和 mqnamesrv 的配置來調整內存(調整的與當前虛擬機內存匹配即可,推薦 256m-128m)。

  • RocketMQ 有兩個啟動腳本:bin 目錄下的 runbroker.sh 和 runserver.sh,編輯如下內容,然后重新啟動 broker 。

# vi runserver.sh
JAVA_OPT=”${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m”

# vi runbroker.sh
JAVA_OPT=”${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn125m
  • mqbroker 和 mqnamesrv 的內存也可以調整,這兩項配置也很重要,默認是 500m 到 1g 。具體文件配置是 mqbroker.xml 和mqnamesrv.xml(文件里面的配置信息根據自己的情況修改):
<options>
         <-Xms200m></-Xms200m>
         <-Xmx200m></-Xmx200m>
         <-XX:NewSize>50M</-XX:NewSize>
         <-XX:MaxNewSize>50M</-XX:MaxNewSize>
         <-XX:PermSize>30M</-XX:PermSize>
         <-XX:MaxPermSize>30M</-XX:MaxPermSize>
 </options>
  • 注意:mqbroker.xml 和 mqnamesrv.xml 的內存不要超過 runbroker.sh 和runserver.sh 的內存,不然會因為內存不夠導致崩潰。

**5)修改服務 IP **:

# vi conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUS
# 新增以下兩行內容,將IP地址改為本地虛擬機
# 若不增加以下內容,則MQ服務器地址將默認為公網 172.17.0.1:10911
brokerIP1 = 192.168.3.244
namesrvAddr = 192.168.3.244:9876

6)bin 目錄下啟動命名服務

# 顯式啟動命名服務(默認端口 9876)
sh mqnamesrv
# 后台啟動
nohup sh mqnamesrv &
# 可以在當前目錄的 nohup.out 中查看日志輸出

7)bin 目錄下啟動消息服務

# 顯式啟動消息服務,並指定命名服務的地址
sh mqbroker -n localhost:9876
# 后台啟動
nohup sh mqbroker -n localhost:9876 &
# 指定配置文件
sh mqbroker -n localhost:9876 -c ../conf/broker.conf
# 可以在當前目錄的 nohup.out 中查看日志輸出

8)關閉防火牆(供客戶端程序訪問):

# 暫時關閉防火牆
systemctl stop firewalld

# 永久設置防火牆狀態
systemctl enable firewalld.service  # 打開
systemctl disable firewalld.service  # 關閉

9)測試

# 配置命名服務地址
export NAMESRV_ADDR=localhost:9876
# 啟動后產生大量日志信息(該信息是測試程序中自帶的,不具有通用性)
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
# 啟動后產生大量日志信息(該信息是測試程序中自帶的,不具有通用性)
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM