鏡像下載、域名決議、時間同步請點擊 阿里云開源鏡像站
一、什么是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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494921.html
標籤:其他
