訊息佇列 理解隨記

2022-05-26 03:18:13 字數 1037 閱讀 7145

一直以來總能聽到訊息佇列這個詞,今天想要記錄一下我的理解,

訊息佇列(message queue):

1、理解定義:首先想起乙個內容叫做佇列(queue),這個在我頭疼的資料結構中很常見的東西,其實簡單來說就是先進先出,而訊息佇列就是要把傳輸的資料放在這個佇列中。

2、理解作用: 

(1)解耦:開發時的解耦就是降低程式之間相互的關聯關係,這裡也不例外,關聯越多,迭代越複雜,當你的關聯關係太緊密時,迭代起來就要反覆的修改同乙個檔案,浪費精力還沒有什麼提高,這個時候就可以使用訊息佇列了

當你從圖一到圖二的時候你就會發現,不用頻繁的改一段**對程式媛來說,就是一種幸福~

(2)非同步: 還拿上圖舉例,若a,b,c,d 都需50ms ,訊息佇列也是同樣50ms,同步時 不用訊息佇列就需要50*4=200ms 而非同步採用訊息佇列只需要a+訊息佇列時間 50+50=100ms 節約時間,

在高併發的情況下,我們如果還有efg...省下來的時間~~可以喝咖啡了

(3)削峰、限流:這個我認為是最好理解的...每個程式最高只能處理1000個請求,一旦一次進來10000個...圖一全部堆積,必將導致崩潰,而圖二就不一樣了

訊息佇列相當於乙個大房子,請求全部接受了,剩下的程式你自己慢慢處理去吧,大大降低了程式崩潰的風險。

3、理解缺點...

但凡程式都有bug....不要對自己太自信哈哈哈哈...訊息佇列的bug就是....

(1)高可用:像我這樣的菜鳥不太喜歡分布式...總覺得一台效能好的機器啥都能解決...然而...一旦一台系統崩潰,我也就崩潰了

(2)資料丟失:光有訊息佇列也是有問題的,就算部署了很多臺,萬一都掛了....啊哈哈哈哈哈....還是停了....資料也就丟了

4、理解用法:(這個理解不好使了,直接用人家的專業術語吧)

5、針對訊息佇列衍生了很多中介軟體,我目前遇到了rabbitmq和redis...具體選擇哪乙個就要針對專案來看了。

這位同學的對比寫的很清晰,記錄一下~ 

訊息佇列的理解

訊息佇列的主要特點是非同步處理,主要目的是減少請求響應時間和解耦。所以主要的使用場景就是將比較耗時而且不需要即時 同步 返回結果的操作作為訊息放入訊息佇列。同時由於使用了訊息佇列,只要保證訊息格式不變,訊息的傳送方和接收方並不需要彼此聯絡,也不需要受對方的影響,即解耦和。例子 假設使用者在你的軟體中...

關於訊息佇列的理解

目前常用的訊息中介軟體有activemq,rabbitmq,kafka等 之前的專案一直使用activemq,但是面試的時候人家問我訊息佇列我都說只用了通訊,不敢亂說.所以專門了解了下.這是在知乎上面看的感覺很不錯很感謝作者 假設使用者在你的軟體中註冊,服務端收到使用者的註冊請求後,它會做這些操作 ...

對於訊息佇列的理解

訊息佇列可以簡單理解為 把要傳輸的資料放在佇列中。訊息佇列中介軟體是分布式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。1.解耦 比如說某乙個系統a要與其他系統打交道 即呼叫其中的方法 如果其它系統改變或者新增系統,那麼a系統都會改變,這樣的話耦合度比較高,比較麻煩。我們a系統將產...