鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 一、什麼是MQ? 消息隊列(Message Queue,簡稱MQ),從字面意思上看,本質是個隊列,FIFO先入先出,只不過隊列中存放的內容是message而已。 其主要用途:不同進程Process/線程Thread之間通信。 隊列是一種先進先出的 ...
鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站
一、什麼是MQ?
消息隊列(Message Queue,簡稱MQ),從字面意思上看,本質是個隊列,FIFO先入先出,只不過隊列中存放的內容是message而已。
其主要用途:不同進程Process/線程Thread之間通信。
隊列是一種先進先出的結構:FIFO
把要傳輸的數據放在隊列中。
把數據放到消息隊列叫生產者
從消息隊列取出消息叫做消費者
二、什麼是RabbitMQ?
RabbitMQ是一套開源(MPL)的消息隊列服務軟體,是由 LShift 提供的一個 Advanced Message Queuing Protocol (AMQP) 的開源實現,由以高性能、健壯以及可伸縮性出名的 Erlang 寫成。
RabbitMQ的特性
- 可伸縮性:集群服務
- 消息持久化:從記憶體持久化消息到硬碟,再從硬碟載入到記憶體
三、使用RabbitMQ的好處
解耦
系統A在代碼中直接調用系統B和系統C的代碼,如果將來D系統接入,系統A還需要修改代碼,過於麻煩!
系統A可以生成一個id,然後系統B需要這個id,系統A去調用了系統B
過了段時間,系統C說也要系統A的id,那麼這時接觸系統B的引用,去講id傳給系統C
這時又來了系統D,系統D也要系統A的id,系統A又解除了系統C,去調用了系統D,反反覆復,很麻煩
系統A的負責人覺得改來改去太麻煩了,沒意思,跑路了。
過段時間,公司來了位大佬,大佬說將系統A的id,存入消息隊列,誰需要誰去拿,這樣系統A就不用來回改動了,完美解決了參數調用問題!
系統A不關心誰去調用id,只負責生產數據並存入消息隊列,其它系統即使掛了或請求超時,也跟系統A沒有任何關係
這樣就實現了系統A、B、C、D之間的解耦!
非同步
再來看看這種情況,系統A還是直接調用系統B、C、D
系統A:主要業務
系統B:簡訊業務
系統C:郵箱業務
系統D:處理後續業務
系統A下單成功後會去調用系統B,但是如果一個一個的調用,會大大的降低效率,假設每個業務執行時間100ms,那麼4個業務執行完畢就是400ms,這種就被稱為阻塞執行
那麼我們的消息隊列採用了非同步機制,當我們下單完成後,會去非同步的調用其它業務,會極大的降低系統的執行時間,提升效率!
削峰/限流
例如:雙十一大促銷,這時的流量是很大很大的,併發很高,比如每秒5000個請求,假設現在又3台機器處理,並且每台機器每秒只能處理1500次請求,那麼多出來的請求500請求,會將系統搞垮的,這時我們可以將多出來的請求放入消息隊列中
這樣即使每秒有10000個請求,也不會將系統搞垮,會在消息隊列中等待,由系統去分配請求處理
四、Linux環境下手動安裝RabbitMQ
環境準備
阿裡雲Centos7.6伺服器
lsb_release -a
在2022年5月,RabbitMQ官方發佈推文宣稱最新的版本已經不支持Centos7.x系列,但是我們可以通過下載之前支持的版本來部署!
下載RabbitMQ RPM包
RabbitMQ下載
下載成功如下
下載ErLang RPM包
這裡需要註意,下載的版本要和RabbitMQ對應,必須支持下載的ErLang版本
我們找到下載的是 3.8.13 ,支持的最低是 22.3 最高是 23.x
下載ErLange
點擊Download下載或單機wget複製下在Linux下 下載
使用FileZilla上傳至阿裡雲伺服器
阿裡雲伺服器在 /usr/local 下新建 rabbitmq 文件夾
上傳完成
安裝ErLang
# 解壓erlang文件
rpm -Uvh erlang-23.2.7-2.el7.x86_64.rpm
#安裝erlang
yum install -y erlang
查看erlang版本
erl -v
安裝並啟動RabbitMQ
在安裝RabbitMQ之前要安裝一個插件
yum install -y socat
解壓並安裝RabbitMQ
# 解壓
rpm -Uvh rabbitmq-server-3.8.13-1.el8.noarch.rpm
# 安裝
yum install -y rabbitmq-server
啟動RabbitMQ服務
# 啟動服務
systemctl start rabbitmq-server
# 查看當前的運行狀態
systemctl status rabbitmq-server
# 重啟服務
systemctl restart rabbitmq-server
# 停止服務
systemctl stop rabbitmq-server
可以看到,啟動成功!
五、手動安裝RabbitMQWeb管理界面和授權
安裝並啟動RabbitMQ管理插件
# 安裝RabbitMQWeb管理插件
rabbitmq-plugins enable rabbitmq_management
# 安裝完成後重啟rabbitmq服務
systemctl restart rabbitmq-server
啟動成功,預設Web頁面占用埠為 15672,我們去阿裡雲伺服器控制台開放此埠
測試訪問
瀏覽器輸入 http://您的ip地址:15672
出現如下界面
預設登錄賬號密碼 guest guest 登錄測試
這個意思是我們只能通過本地來登錄guest 賬戶
下麵給出解決方案
添加賬戶
# 添加一個用戶
rabbitmqctl add_user admin admin
# 將用戶設置為admin許可權
rabbitmqctl set_user_tags admin administrator
再次測試訪問
訪問成功,手動安裝成功!
六、Linux環境下Docker安裝RabbitMQ
安裝Docker
先查看本機是否存在Docker,刪除舊版本Docker
查看docker 版本
docker version
沒有docker,我們執行以下命令,刪除殘餘文件
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
進入Linux根目錄,安裝Docker
# 安裝yum-utils包(提供yum-config-manager 實用程式)並設置穩定的存儲庫。
yum install -y yum-utils
# 安裝阿裡雲配置
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝Docker 最新引擎
yum install docker-ce docker-ce-cli containerd.io
輸入y確認即可!
配置阿裡雲加速鏡像
打開阿裡雲控制台,彈性計算 --> 容器與鏡像服務
打開之後選擇 鏡像工具 --> 鏡像加速器,複製內容即可
進入Linux伺服器根據步驟配置鏡像加速器
# 創建docker文件夾
sudo mkdir -p /etc/docker
# 打開文件並配置內容
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pfjide5p.mirror.aliyuncs.com"]
}
EOF
# 重啟服務
sudo systemctl daemon-reload
# 啟動docker
sudo systemctl restart docker
新建文件夾
配置內容,並重啟服務
根據步驟一步步創建即可!
安裝並啟動RabbitMQ
# 獲取鏡像,這個是帶著web頁面的
docker pull rabbitmq:management
# 運行 rabbitmq 並映射埠 設置預設賬戶密碼admin
docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management
測試RabbitMQ
瀏覽器輸入 http://您的ip地址:15672 並輸入admin admin
出現如下界面
至此,在Docker內安裝RabbitMQ完成!
本文轉自:https://blog.csdn.net/weixin_45526437/article/details/124797746