MQ(訊息佇列)系列學習 MQ基礎認識

2021-10-10 21:54:48 字數 2028 閱讀 5623

1.2 通訊模式

1.3 常用場景--主要能解決什麼問題

1.4 mq優劣勢比較

這是乙個mq的系列文章,主要由mq的基礎認識到深入了解,和針對不同業務對mq的技術選型問題。通過文章了解不同mq的各種區別,和使用mq會存在的一些問題。

入門篇:mq(訊息佇列)系列學習—mq基礎認識

基礎篇:mq(訊息佇列)系列學習—mq元件優劣勢比較

晉級篇:mq(訊息佇列)系列學習—mq如何保證訊息佇列高可用

訊息佇列中介軟體是分布式系統中重要的元件,是一種非同步的服務間通訊方式,適用於無伺服器和微服務架構。主要解決應用解耦,非同步訊息,流量削鋒等問題,實現高效能,高可用,可伸縮和最終一致性架構。目前使用較多的訊息佇列有activemq,rabbitmq,zeromq,kafka,metamq,rocketmq。

1.1.1 訊息佇列中介軟體

1.佇列

資料結構中佇列,先進先出。類似於地鐵站排隊進站

2.訊息

"訊息」是在兩台計算機間傳送的資料單位。訊息可以非常簡單,例如只包含文字字串;也可以更複雜,可能包含嵌入物件。

3.訊息佇列

訊息佇列訊息在被處理和刪除之前一直儲存在佇列上。每條訊息僅可被一位使用者處理一次。

1、點對點模式:req/rep

最基本的模式,生產者傳送一條訊息,消費者去除並消費資訊,給出響應後會從佇列中刪除該訊息,所以不能重**送,只能被乙個消費者消費。(一對一私人

2、發布/訂閱模式:pub/sub

3、推/拉模式:push/pull

也是一種比較重要的模式,無論是push端還是pull端都可以做伺服器,繫結到特定的位址等待對方訪問。

如果我們在push端繫結位址,那麼這是乙個pushserver,對應的pullclient可以鏈結到這個pushserver往外拉資料;反之,如果建立乙個pullserver,對應的pushclient就可以鏈結到pullserver並往裡面壓資料。(寄發快遞

4、路由/**模式:router/dealer

是一種典型的中間人模式,比較適用於多對多的網路當中,雙方在互相不認識的情況下達成共識並交易。模擬於:顧客—>超時<–**商。(租房中間商

1.3.1 非同步訊息/非同步處理

一般的系統中,介面都為同步呼叫。系統之間進行介面中的相互呼叫,a方法呼叫b方法(50ms),b方法中又呼叫了c方法,有可能c方法處理需要(1000ms),那麼整個流程下來就需要幾個方法的處理時間總和。如果進行非同步處理,先處理前兩個方法a、b(100ms),在業務完成後再去呼叫c方法。那麼對使用者的體驗就優化了不少,由最先的1100ms的等待至100ms的等待。

1.3.2 應用解耦

系統解耦:將不同業務**進行分模組書寫,

邏輯解耦:通過中介軟體(mq)來使業務邏輯進行分離,達到業務邏輯單獨進行處理。

訊息佇列可以消除元件件的依賴關係,解耦後不會因為某系統的異常而造成整個業務流程的失敗。

比如一般的訂票系統,使用者下單購買票據,裡面會呼叫:訂單系統–》庫存系統–》積分系統。但如果積分系統出現問題就導致訂票失敗。

如果使用mq進行邏輯解耦

(1)訂票和庫存系統處理完成後直接進行持久化處理,將訂票資訊寫入訊息佇列中,就不需要等待積分系統的處理。

(2)積分系統就監聽訊息佇列的變化,寫入了新的訂票資訊後就進行積分處理。

1.3.3 流量消峰

在mq訊息佇列中可以設定快取池,在碰見高秒殺併發的時候,流量過大導致應用掛掉。那麼我們可以直接使用mq來進行控制,到快取池中到達了一定數量後,直接將請求拋棄掉然後返回錯誤頁面。然後再將佇列中的請求資訊做後續處理

1.3.4 訊息通訊

基於mq的常用的通訊模式來設計一些業務需求。比如使用

優點

缺點

訊息佇列MQ

目錄 一 簡介 二 為什麼需要訊息佇列 mq 三 介紹 訊息佇列 message queuing 在電腦科學中,是一種程序間通訊或同一程序間不同執行緒的通訊方式。廣義上講訊息佇列是解決分布式系統中,各個功能模組間的資訊傳遞通訊方式。與檔案傳輸和rpc相比,訊息佇列具有更好的平台無關性,並能夠很好地支...

MQ訊息佇列

1.解耦 系統a將userid寫到訊息佇列中,系統c和系統d從訊息佇列中拿資料。這樣有什麼好處?系統a只負責把資料寫到佇列中,誰想要或不想要這個資料 訊息 系統a一點都不關心。即便現在系統d不想要userid這個資料了,系統b又突然想要userid這個資料了,都跟系統a無關,系統a一點 都不用改。系...

MQ訊息佇列應用

很榮幸,原來一直聽說的訊息佇列終於在前段時間用到了自己的專案中。為什麼會用到訊息佇列?毫無疑問,當然是傳輸訊息。這裡訊息一般是一串字串,當然,訊息的含義很多,可以是 hello world 可以是 你吃飯了嗎?可以是一串正式的xml報文。也可以是乙個txt檔案或者xml檔案 在用active mq的...