一、RabbitMQ介紹
RabbitMQ是由erlang開發的AMQP(Advanced Message Queuing Protocol)的開源實作,他是高級訊息佇列協議,是應用層協議的一個開放標準,為面向訊息的中間性設計,訊息中間件主要用于組件之間的解耦,訊息的發送者無需知道訊息使用者的存在,消費者亦然,
RabbitMQ支持多種客戶端,如:.net、java、c、php等,支持ajax,在用于在分布式系統中存盤轉發訊息能起到至關重要的作用 ,并且在易用性、擴展性、高可用性等方面也表現不俗,
二、RabbitMQ作用
博主認為RabbitMQ在程式世界中主要起到以下3個至關重要的作用(不足之處望大神斧正),
1、解耦
舉個例子:假如你在網上買了一件商品(這個程序很復雜,我們這里只說部分操作),這時候系統需要通知庫存該商品減1,那么這個時候系統可能會呼叫介面處理這個程序(程序本身沒有任何問題),在這個程序中應用系統和庫存之間存在了一個較為高的耦合,顯然這種高耦合的操作對于一個訂單系統來說是不可接受的,頻繁的請求可能會導致系統效率極低甚至崩潰,這個時候MQ就能解決我們的問題,我們將訂單訊息發送給MQ服務佇列中,庫存系統只需要獲取MQ服務佇列中的訂單資訊進行處理,這個時候應用系統和庫存之間并沒有任何耦合關系,由于MQ異步處理機制可以提應用系統的效率,集群的使用可以解決訂單并發問題,
2、異步
首先我們來看一張圖(在官網獲取)
在下圖中,“ P”是我們的生產者,“ C”是我們的消費者,中間的框是一個佇列-RabbitMQ代表使用者保留的訊息緩沖區,可以看到P把訊息發送給hello這個緩沖區,C想多久處理就多久處理,

3、削峰
此削峰不是天龍八部里面的蕭峰(^_^),何為削峰,削峰你可以解讀為“流量削峰”、“削峰限流”等,如何削峰
舉個例子:我們還是以訂單系統為例,假如有一場秒殺活動(這個時候你的系統流量是少有的高峰期),原本你的系統1秒能處理10w條資料,但是在處于流量高峰的時候,系統資料遠遠不只10w條,這個時候可能造成服務器壓力過大、資料處理出現問題等,MQ恰恰可以解決該問題,前面第2點異步也介紹到MQ有一個緩沖區,我們可以利用這個緩沖區做流量削峰處理,我們只需要在業務處理板塊做好資料處理限流操作即可,那么有人又要問了如果秒殺人數超過商品人數怎么辦,同理也可以使用MQ解決問題,在MQ中我們可以對商品設定一個峰值,只要超過這個峰值,就會提示商品已搶完等資訊(這點類似搶紅包),如下圖

三、RabbitMQ安裝(客戶端)
MQ下載地址:https://www.rabbitmq.com/download.html(官網),
具體安裝程序博主在這里不在贅述,說幾點注意事項,
1、在安裝RabbitMQ之前必須先安裝Erlang,沒錯是要先安裝Erlang仔細的朋友可能已經發現,在文章的開頭我們已經說過RabbitMQ是由erlang開發,所以要先安裝Erlang環境,下載地址和MQ一樣,
2、安裝完Erlang之后安裝MQ(無腦下一步就行),
3、安裝完成之后一定要先激活并且重啟,如圖
打開上圖紅框中的應用,依次執行rabbitmq-plugins enable rabbitmq_management、net stop RabbitMQ && net start RabbitMQ命令,
4、MQ默認埠15672、默認用戶密碼均為guest,
5、如果要建立新的用戶,最好設定為Admin權限,
安裝成功之后使用http://localhost:15672打開MQ客戶端,出現下圖證明客戶端安裝成功

看到這里是不是有一種對MQ豁然開朗的感覺,
下一篇:RabbitMQ系列隨筆——.NET MQ實戰練習,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/24.html
標籤:C#
下一篇:C#學習3
