提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔
前言
消息中間件-RabbitMq集群搭建及鏡像隊(duì)列 (高可用性、一臺(tái)宕機(jī)自動(dòng)切換另一臺(tái)) ,鏡像隊(duì)列是基于普通的集群模式的
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、RabbitMq是什么?
RabbitMQ是實(shí)現(xiàn)了高級(jí)消息隊(duì)列協(xié)議(AMQP)的開(kāi)源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務(wù)器是用Erlang語(yǔ)言編寫的,而集群和故障轉(zhuǎn)移是構(gòu)建在開(kāi)放電信平臺(tái)框架上的。所有主要的編程語(yǔ)言均有與代理接口通訊的客戶端庫(kù)。
RabbitMQ三大優(yōu)勢(shì):
1.解耦:
若不使用MQ,當(dāng)分布式系統(tǒng)中的一個(gè)系統(tǒng)給多個(gè)子系統(tǒng)提供數(shù)據(jù)時(shí),當(dāng)下游的子系統(tǒng)發(fā)生更改,Publisher也需要做出對(duì)應(yīng)的更改。系統(tǒng)耦合性較高。
使用RabbitMQ以后,我們只需要讓Publisher將消息發(fā)送到中間件即可,而并不需要關(guān)心誰(shuí)去接收這條消息。
2.異步:
以系統(tǒng)多級(jí)調(diào)用為例:
下單成功(訂單系統(tǒng))–發(fā)送短信(短信系統(tǒng))–xxx(下游子系統(tǒng))
若發(fā)送短信和其下游的子系統(tǒng)并沒(méi)有關(guān)聯(lián),那么我們可以在下單成功以后,將消息存儲(chǔ)到RabbitMQ中,讓短信系統(tǒng)和下游子系統(tǒng)異步執(zhí)行??s短系統(tǒng)總的運(yùn)行時(shí)間。
3.削峰填谷:
若請(qǐng)求瞬間增多,來(lái)了5000個(gè)請(qǐng)求,而A系統(tǒng)無(wú)法一秒鐘處理5000個(gè)請(qǐng)求,我們可以將這5000個(gè)請(qǐng)求存儲(chǔ)到MQ中,然后每秒從MQ中取出1000個(gè)消息進(jìn)行消費(fèi)。
削峰填谷的原理:
其實(shí)就是利用Consumer的限流機(jī)制:
首先確認(rèn)ack機(jī)制為手動(dòng)簽收。(在手動(dòng)簽收前sleep1s即可)
其次listener-container配置屬性perfetch=1000也就是說(shuō)一次消費(fèi)1000條消息。
二、RabbitMq集群搭建步驟
1.環(huán)境說(shuō)明
操作系統(tǒng):Windows Server 2012
Erlang版本:21.3
RabbitMQ版本:3.7.14
三臺(tái)服務(wù)器rabbitMq組成的集群
192.168.85.100 scck2svr04
192.168.85.101 scck2db04
192.168.85.102 scck2svr03
2.RabbitMQ 安裝
先安裝 otp_win64_21.3.exe
再安裝 rabbitmq-server-3.7.14.exe
設(shè)置環(huán)境變量,具體操作步驟為:
我的電腦 -> 屬性 -> 高級(jí)系統(tǒng)設(shè)置 -> 環(huán)境變量
安裝成功之后,我們?cè)诘谝慌_(tái)主服務(wù)器上搜索 .erlang.cookie
復(fù)制出一個(gè) .erlang.cookie 文件到另外兩臺(tái)服務(wù)器上進(jìn)行覆蓋,注意,要覆蓋另外兩臺(tái)服務(wù)器的兩個(gè)目錄下都要覆蓋,覆蓋完之后重啟另外兩臺(tái)服務(wù)器,重啟完成之后我們需要啟動(dòng) RabbitMQ 并加入集群,首先我們啟動(dòng)第一臺(tái)服務(wù)器,執(zhí)行以下命令:
rabbitmq-service stop
rabbitmq-service start
rabbitmqctl start_app
第一臺(tái)服務(wù)器的 RabbitMQ 服務(wù)器啟動(dòng)之后我們可以執(zhí)行一下命令安裝可視化操作界面:
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt(1883)
rabbitmq-plugins enable rabbitmq_web_mqtt(15675)
插件安裝完成之后我們可以通過(guò)瀏覽器訪問(wèn)服務(wù)器的 15672 端口訪問(wèn)可視化頁(yè)面:
3.RabbitMQ 集群搭建
第一臺(tái)服務(wù)器已經(jīng)裝好了,那么接下來(lái)開(kāi)始裝第二臺(tái)并加入集群,安裝第二臺(tái)與第一臺(tái)執(zhí)行同樣的命令:
rabbitmq-service stop
rabbitmq-service start
rabbitmqctl start_app
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_web_mqtt
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@scck2svr04
rabbitmqctl start_app
第三臺(tái)服務(wù)器的操作和第二臺(tái)也是一樣,執(zhí)行完以下命令:
rabbitmq-service stop
rabbitmq-service start
rabbitmqctl start_app
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_web_mqtt
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@scck2svr04
rabbitmqctl start_app
執(zhí)行完命令之后我們重新刷新可視化頁(yè)面就發(fā)現(xiàn)集群中出現(xiàn)了3臺(tái)服務(wù)器了:
4.RabbitMQ鏡像隊(duì)列
Windows RabbitMQ 鏡像隊(duì)列 (高可用性、一臺(tái)宕機(jī)自動(dòng)切換另一臺(tái))
鏡像隊(duì)列是通過(guò)RabbitMQ 的配置策略(policy)來(lái)實(shí)現(xiàn)的:
鏡像隊(duì)列提供了三種模式:
? all:全部的節(jié)點(diǎn)隊(duì)列都做鏡像;
? exactly:指定鏡像隊(duì)列的節(jié)點(diǎn)最高鏡像數(shù)量;
? nodes:只為指定具體節(jié)點(diǎn)配置鏡像隊(duì)列;
鏡像創(chuàng)建完成 如下圖:
鏡像創(chuàng)建完畢后 隊(duì)列 如下圖:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-427492.html
總結(jié)
記錄點(diǎn)點(diǎn)滴滴文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-427492.html
到了這里,關(guān)于三臺(tái)Windows服務(wù)器搭建RabbitMq集群及鏡像隊(duì)列的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!