RabbitMQ系列隨筆——介紹及安裝

陳逸子風發表於2020-08-29

一、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實戰練習。

            

 

   

 

              

            

相關文章