001 訊息中介軟體 Rabbitmq

2022-09-14 05:30:12 字數 2183 閱讀 4210

一 .概述  

首先我們先說一下訊息中介軟體的主要的作用:

[1]非同步處理

[2]解耦服務

[3]流量削峰

上面的三點是我們使用訊息中介軟體最主要的目的.

下面我們來揭示一下如何實現上述的行為.

非同步處理和解耦服務常常伴隨在一起,當我們的業務複雜程度比較高的時候,我們常常希望能夠按照一定的規則將我們的業務進行劃分,此時就會出現乙個問題,就是業務之間如何通訊的問題.

訊息中介軟體提供了一種可靠的方式保證訊息的投遞和消費的成功,將通訊的代價降到底最小,通過訊息中介軟體,我們就能滿足我們的服務解耦.

訊息本身就是非同步的,因此在我們使用訊息中介軟體的時候本身就是在做非同步的處理,我們知道非同步初拉力可以帶來效能的提公升,

當我們在一定時間段內,我們的服務會充斥大量的請求訪問,在這個時候,如果我們不進行處理,伺服器很容器出現癱瘓,此時我們可以使用訊息中介軟體幫助我們實現請求的中轉,當請求過多的時候,直接刪除掉多於的請求,這樣就能幫助我們

解決請求過多的情況.

二 . 訊息中介軟體的選型問題

activmq是乙個比較好的中介軟體,但是現在更新的不是很快,而且效能在大併發的情況很容易就出現問題,我們在一些情況下選用這個訊息中介軟體也是比較合適的,因此這個訊息中介軟體遵循jms規範,對於j**a的支援是比較好的.  

rabbitmq是乙個中小企業使用的比較多的訊息中介軟體,在可靠性和效能方面都很不錯,而且遵循ampq協議,現在又是spring的親兒子,前景是非常美好的,我們本次就首先學習一下rabbitmq.

另外乙個比較好的中介軟體就是kafka,這個訊息中介軟體是乙個日誌處理的中介軟體,對可靠性的要求比較低,但是處理的吞吐量是最大的,如果我們使用這個訊息中介軟體作為乙個對資料一致性要求不高的環境下,是乙個非常好的選擇.

三 .常見的訊息中間的使用場景(下面為中的內容)

2.1非同步處理

場景說明:使用者註冊後,需要發註冊郵件和註冊簡訊,傳統的做法有兩種1.序列的方式;2.並行的方式 

(1)序列方式:將註冊資訊寫入資料庫後,傳送註冊郵件,再傳送註冊簡訊,以上三個任務全部完成後才返回給客戶端。 這有乙個問題是,郵件,簡訊並不是必須的,它只是乙個通知,而這種做法讓客戶端等待沒有必要等待的東西. 

(2)並行方式:將註冊資訊寫入資料庫後,傳送郵件的同時,傳送簡訊,以上三個任務完成後,返回給客戶端,並行的方式能提高處理的時間。 

假設三個業務節點分別使用50ms,序列方式使用時間150ms,並行使用時間100ms。雖然並性已經提高的處理時間,但是,前面說過,郵件和簡訊對我正常的使用**沒有任何影響,客戶端沒有必要等著其傳送完成才顯示註冊成功,英愛是寫入資料庫後就返回. 

(3)訊息佇列 

引入訊息佇列後,把傳送郵件,簡訊不是必須的業務邏輯非同步處理 

由此可以看出,引入訊息佇列後,使用者的響應時間就等於寫入資料庫的時間+寫入訊息佇列的時間(可以忽略不計),引入訊息佇列後處理後,響應時間是序列的3倍,是並行的2倍。

2.2 應用解耦

場景:雙11是購物狂節,使用者下單後,訂單系統需要通知庫存系統,傳統的做法就是訂單系統呼叫庫存系統的介面. 

這種做法有乙個缺點:

流量削峰

流量削峰一般在秒殺活動中應用廣泛 

場景:秒殺活動,一般會因為流量過大,導致應用掛掉,為了解決這個問題,一般在應用前端加入訊息佇列。 

作用: 

1.可以控制活動人數,超過此一定閥值的訂單直接丟棄(我為什麼秒殺一次都沒有成功過呢^^) 

2.可以緩解短時間的高流量壓垮應用(應用程式按自己的最大處理能力獲取訂單) 

1.使用者的請求,伺服器收到之後,首先寫入訊息佇列,加入訊息佇列長度超過最大值,則直接拋棄使用者請求或跳轉到錯誤頁面. 

2.秒殺業務根據訊息佇列中的請求資訊,再做後續處理.

訊息中介軟體

1.訊息的優先順序 2.訊息排序 3.訊息過濾 4.訊息持久化 5.訊息重試 6.事務的支援 7.broker滿 生產者,佇列,消費者 訊息佇列的優點 1 解耦2 非同步訊息,系統響應 在jms中,有兩種訊息模型 點對點模式和發布訂閱模式。1.在點對點模式中 有三種角色 1 訊息佇列,傳送者,接受者...

訊息中介軟體

如何理解訊息中介軟體?訊息中介軟體是儲存訊息的乙個容器,與資料庫不同的是資料庫儲存的資料是可以被修改的,而訊息中介軟體一般不會被修改 訊息中介軟體在消費的生產者與消費者產生,相當於乙個中間人的角色,提供了路由保證訊息的傳遞,如果消費者不能及時接收,訊息會保留下來,知道消費者上線 保證在存活期內 訊息...

訊息中介軟體

訊息中介軟體是在訊息的傳輸過程中儲存訊息 訊息傳遞過程中不能更改 的容器。訊息中介軟體再將訊息從它的原中繼到它的目標時充當中間人的作用。訊息中介軟體的主要目的是提供路由並保證訊息的傳遞 如果傳送訊息時接收者不可用,訊息佇列會保留訊息,知道可以成功傳遞為止,當然,訊息佇列儲存訊息也是有期限的。訊息傳送...