網(wǎng)站建設(shè)賺錢嗎微信推廣怎么做
Hi~!這里是奮斗的明志,很榮幸您能閱讀我的文章,誠請評論指點,歡迎歡迎 ~~
🌱🌱個人主頁:奮斗的明志
🌱🌱所屬專欄:RabbitMQ
📚本系列文章為個人學(xué)習(xí)筆記,在這里撰寫成文一為鞏固知識,二為展示我的學(xué)習(xí)過程及理解。文筆、排版拙劣,望見諒。
Ubuntu 環(huán)境安裝
- 前言
- 一、什么是MQ(消息隊列)
- MQ多用于分布式系統(tǒng)之間進行通信
- 二、MQ的作用
- 1、異步解耦
- 2、流量削峰
- 3、消息分發(fā)
- 4、延遲通知
- 三、為什么選擇 RabbitMQ
- 1、Kafka
- 2、RocketMQ
- 3、RabbitMQ
- 四、RabbitMQ 快速上手
- 1、Ubuntu 環(huán)境安裝
- 2、安裝Erlang
- 3、查看erlang版本
- 五、安裝RabbitMQ
- 1、安裝
- 2、確認安裝結(jié)果
- 六、安裝RabbitMQ管理界面
- 七、啟動服務(wù)并訪問
- 1、通過 IP:port 訪問界面
- 2、添加管理員用戶
- 3、給用戶添加權(quán)限
- 4、通過IP:port訪問, 并使用剛才設(shè)置的用戶名和密碼登錄
- 5、通過set設(shè)置權(quán)限
- 6、添加用戶
- 7、添加虛擬機
前言
Rabbit, 兔子的意思
互聯(lián)網(wǎng)行業(yè)很多公司, 都喜歡用動物命名產(chǎn)品, 或者作為公司的logo, 吉祥物. 比如: 騰訊的企鵝, 京東的狗, 美團的袋鼠, 攜程的海豚,阿里就更多了, 螞蟻, 飛豬,天貓,菜鳥, 閑魚, 盒馬… 更是以一己之力, 組建了一個動物園…
Rabbit
也是?個公司名.MQ ( message queue )
消息隊列 的意思 ,RabbitMQ
是Rabbit
企業(yè)下的?個消息隊列產(chǎn)品.
RabbitMQ
是?個實現(xiàn)了AMQP
的消息隊列
服務(wù),是當(dāng)前主流的消息中間件之?.
AMQP
,即Advanced Message Queuing Protocol(?級消息隊列協(xié)議)
,是?個通?
的應(yīng)?層
協(xié)議,提供統(tǒng)?消息服務(wù)的協(xié)議, 為面向消息的中間件設(shè)計?;诖藚f(xié)議的客戶端與消息中間件可傳遞消息,并不受客戶端或中間件, 開發(fā)語言等條件的限制。
在互聯(lián)網(wǎng)架構(gòu)中, 會經(jīng)常使用MQ來作為消息通信服務(wù). 接下來我們看下什么是MQ
一、什么是MQ(消息隊列)
MQ( Message queue ),
從字面意思上看, 本質(zhì)是個隊列,FIFO 先?先出
,只不過隊列中存放的內(nèi)容
是消息(message)
?已. 消息可以非常簡單,比如只包含文本字符串, JSON等,也可以很復(fù)雜, 比如內(nèi)嵌對象.
在日常生活中,例如:手機、水杯…可能會進行一些排隊擺放
MQ多用于分布式系統(tǒng)之間進行通信
- 系統(tǒng)之間的調(diào)用通常有兩種方式:
- 同步通信:
直接調(diào)用對方的服務(wù), 數(shù)據(jù)從一端發(fā)出后立即就可以達到另?端
- 異步通信:
數(shù)據(jù)從?端發(fā)出后,先進入?個容器進行臨時存儲,當(dāng)達到某種條件后,再由這個容器發(fā)送給另?端.
容器的?個具體實現(xiàn)就是MQ( message queue )
RabbitMQ
就是MQ
的?種實現(xiàn)
例如:
打電話客服直接響應(yīng)
客服記錄下來,過一段時間(24小時)內(nèi)進行回復(fù)
二、MQ的作用
MQ主要工作是接收并轉(zhuǎn)發(fā)消息, 在不同的應(yīng)用場景下可以展現(xiàn)不同的作用
可以把MQ想象成一個倉庫. 采購部門進貨之后, 把零件放進倉庫里
生產(chǎn)部門從倉庫中取出零件, 并加工成產(chǎn)品.
MQ和倉庫的區(qū)別是, 倉庫里放的是物品, MQ里放的是消息
倉庫負責(zé)存儲物品,并轉(zhuǎn)發(fā)物品,MQ負責(zé)存儲和轉(zhuǎn)發(fā)消息
1、異步解耦
在業(yè)務(wù)流程中, ?些操作可能非常耗時, 但并不需要即時返回結(jié)果. 可以借助MQ
把這些操作異步化, 比如用戶注冊后發(fā)送注冊短信或郵件通知, 可以作為異步任務(wù)處理, 而不必等待這些操作完成后才告知用戶注冊成功
2、流量削峰
在訪問量劇增的情況下, 應(yīng)用仍然需要繼續(xù)發(fā)揮作用, 但是這樣的突發(fā)流量并不常見. 如果以能處理這類峰值為標(biāo)準(zhǔn)而投入資源,無疑是巨大的浪費. 使用MQ
能夠使關(guān)鍵組件支撐突發(fā)訪問壓力, 不會因為突發(fā)流量而崩潰. 比如秒殺或者促銷活動, 可以使用MQ
來控制流量, 將請求排隊, 然后系統(tǒng)根據(jù)自己的處理能力逐步處理這些請求.
例如:12306 節(jié)假日的時候進行買票(不可能在這個時候買入多臺機器)
商場人多的時候進行排隊
3、消息分發(fā)
當(dāng)多個系統(tǒng)需要對同?數(shù)據(jù)做出響應(yīng)時, 可以使用MQ
進行消息分發(fā). 比如支付成功后, 支付系統(tǒng)可以向MQ
發(fā)送消息, 其他系統(tǒng)訂閱該消息, 而無需輪詢數(shù)據(jù)庫.
4、延遲通知
在需要在特定時間后發(fā)送通知的場景中, 可以使用MQ
的延遲消息功能, 比如在電?商務(wù)平臺中,如果用戶下單后?定時間內(nèi)未?付,可以使用延遲隊列在超時后自動取消訂單
例如:會議時間提前通知
…
三、為什么選擇 RabbitMQ
?前業(yè)界有很多的MQ產(chǎn)品, 例如RabbitMQ
, RocketMQ
, ActiveMQ
, Kafka
, ZeroMQ
等, 也有直接使用Redis
充當(dāng)消息隊列的案例, 這些消息隊列, 各有側(cè)重, 也沒有好壞, 只有適合不適合, 在實際選型時, 需要結(jié)合自身需求以及MQ
產(chǎn)品特征, 綜合考慮
以下我們介紹?下當(dāng)前最主流的3種MQ產(chǎn)品
1、Kafka
Kafka?開始的目的就是用于日志收集和傳輸,追求高吞吐量, 性能卓越, 單機吞吐達到?萬級
, 在日志領(lǐng)域比較成熟
, 功能較為簡單,主要?持簡單的 MQ 功能, 如果有?志采集需求,肯定是首kafka
了。
2、RocketMQ
RocketMQ采?Java語?開發(fā), 由阿?巴巴開源, 后捐贈給了Apache.
它在設(shè)計時借鑒了Kafka,并做出了?些自己的改進, ?出于藍?勝于藍, 經(jīng)過多年雙??的洗禮, 在
可?性、可靠性以及穩(wěn)定性等??都有出?的表現(xiàn). 適合對于可靠性?較?,且并發(fā)?較?的場景, ?
如互聯(lián)??融. 但?持的客戶端語?不多, 且社區(qū)活躍度?般
3、RabbitMQ
采?Erlang語言開發(fā), MQ 功能?較完備, 且?guī)缀?持所有主流語言,開源提供的界面也非常友好
, 性能較好, 吞吐量能達到萬級
, 社區(qū)活躍度也?較高
,比較適合中小型公司, 數(shù)據(jù)量沒那么大, 且并發(fā)沒
那么高的場景.
四、RabbitMQ 快速上手
接下來我們來進行RabbitMQ
的安裝, 并進行入門程序的演示,讓大家對于RabbitMQ
有?個更加直觀的感受.
RabbitMQ
是?套開源的消息隊列服務(wù)軟件, 基于 Erlang
語言編寫, 所以安裝RabbitMQ
之前, 需要先安裝部署 Erlang
環(huán)境, 再安裝 RabbitMQ
環(huán)境.
RabbitMQ
大多部署在Linux
操作系統(tǒng)
1、Ubuntu 環(huán)境安裝
RabbitMQ
已經(jīng)包含在標(biāo)準(zhǔn)的Ubuntu
倉庫中, 然而,包含的版本通常比最新的RabbitMQ
發(fā)?版落后很多,可能提供的RabbitMQ
版本已經(jīng)不?持.RabbitMQ
團隊制作了自己的軟件包,并使Cloudsmith
進行分發(fā)
具體操作可以參考: https://www.rabbitmq.com/docs/install-debian
由于該種方法安裝比較復(fù)雜, 學(xué)習(xí)階段, 咱們使?Ubuntu
倉庫中的版本來安裝
2、安裝Erlang
RabbitMq
需要Erlang
語言的支持,在安裝rabbitMq
之前需要安裝erlang
#更新軟件包
sudo apt-get update
#安裝erlang
sudo apt-get install erlang
22 以上的版本會出現(xiàn)以下這個界面 這個時候按
Esc
鍵就行
出現(xiàn)以下界面就好了
3、查看erlang版本
root@hcss-ecs-0bb1:~# erl
Erlang/OTP 22 [erts-10.6.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [asyncthreads:1]
Eshell V10.6.4 (abort with ^G)
退出命令 halt().
Ctrl + c 也能退出
五、安裝RabbitMQ
1、安裝
#更新軟件包
sudo apt-get update
#安裝rabbitmq
sudo apt-get install rabbitmq-server
#確認安裝結(jié)果
systemctl status rabbitmq-server
這里也會出現(xiàn)紫色的,跟上面操作一樣 按 Esc 鍵
2、確認安裝結(jié)果
表示安裝成功
六、安裝RabbitMQ管理界面
默認是不安裝管理界?的
root@hcss-ecs-0bb1:~# rabbitmq-plugins enable rabbitmq_management
#啟動3個插件
七、啟動服務(wù)并訪問
1、通過 IP:port 訪問界面
http://110.41.51.65:15672/ (15672 為默認端?號, 云服務(wù)器需要開啟端?))
默認?戶名和密碼都是: guest
rabbitmq從3.3.0開始禁?使?guest/guest權(quán)限通過除localhost外的訪問, 解除方法也有
對阿里云的服務(wù)器的防火墻進行設(shè)置
2、添加管理員用戶
添加用戶 admin , 密碼: admin
# rabbitmqctl add_user ${賬號} ${密碼}
rabbitmqctl add_user admin admin
3、給用戶添加權(quán)限
#rabbitmqctl set_user_tags ${賬號} ${角?名稱}
rabbitmqctl set_user_tags admin administrator
以下角色可選
RabbitMQ
?戶角?分為Administrator
、Monitoring
、Policymaker
、Management
、Impersonator
、None
共六種角色
Administrator
超級管理員,可登陸管理控制臺(啟?management plugin的情況下),可查看所
有的信息,并且可以對?戶,策略(policy)進?操作Monitoring
監(jiān)控者,可登陸管理控制臺(啟?management plugin的情況下),同時可以查看
rabbitmq節(jié)點的相關(guān)信息(進程數(shù),內(nèi)存使?情況,磁盤使?情況等)。Policymaker
策略制定者,可登陸管理控制臺(啟?management plugin的情況下),同時可以對
policy進?管理。但?法查看節(jié)點的相關(guān)信息.Management
普通管理者,僅可登陸管理控制臺(啟?management plugin的情況下),?法看到
節(jié)點信息,也?法對策略進?管理.Impersonator
模擬者,?法登錄管理控制臺。None
其他?戶,?法登陸管理控制臺,通常就是普通的?產(chǎn)者和消費者
4、通過IP:port訪問, 并使用剛才設(shè)置的用戶名和密碼登錄
重點了解
這里的虛擬機是一個邏輯上的隔離 類似于 mysql 的database
5、通過set設(shè)置權(quán)限
6、添加用戶
添加成功
7、添加虛擬機
使用哪個用戶的設(shè)置的虛擬機,就對這個有一定的權(quán)限