AMQP實戰篇:消息隊列的定義及其應用場景

喜歡更多互聯網技術相關的同學,一定要關注我哦!

之前我講述了一下有關於AMQP協議的基礎知識,沒有了解過AMQP的同學,記得去看一下基礎知識先!

傳送門:


上文更多的是對於AMQP的講述,對於消息中間件RabbitMQ僅有一筆帶過,這次先來講述一下RabbitMQ:

1、什麼是消息隊列(Message Queue)?

官方解答(維基百科):是一種進程間通信或同一進程不同線程間的通信方式。消息的發送者和接收者不需要同時與消息隊列交互,消息會保存在隊列中,直到接收者取回它!

下面就是一個最簡單的消息隊列的示例,發送消息的生產者不用直接和消費者進行連接,可以將消息存儲在消息隊列裡面,等待消費者取出。

AMQP實戰篇:消息隊列的定義及其應用場景

最簡單的示例

2、消息隊列的應用場景:

(1)異步處理:當消息生產與消費的速率不一致的時候,如消息生產1000條/s,而消費10條/s,這時候,假如就需要使用消息隊列,否則根本來不及處理!

原始架構:

AMQP實戰篇:消息隊列的定義及其應用場景

使用消息隊列後:可以進行異步處理!

AMQP實戰篇:消息隊列的定義及其應用場景

(2)應用解耦:傳統的系統的架構,假如在註冊的時候,都是註冊系統,然後調用短信系統的發驗證碼功能,這樣的耦合度太高了,假如短信系統暫時繁忙,需要等幾十秒的時間,那麼用戶體驗很差。

原始架構:

AMQP實戰篇:消息隊列的定義及其應用場景

使用消息隊列後:註冊的時候,直接將註冊信息寫入消息中間價,然後返回給用戶發送成功的結果,然後短信系統再讀取消息中間件的消息,再進行發送短信!這樣用戶體驗度會好很多!

AMQP實戰篇:消息隊列的定義及其應用場景

(3)流量控制:在米粉節秒殺小米mix2s的時候,我們常常在排隊等待,為什麼我們在排隊等待呢?因為假如同一時間過多的請求湧入服務器中,很可能會崩掉,所以當我們發起秒殺請求的時候,很可能就是將請求寫入消息隊列中,加入隊列的長度超過最大數量,則直接拋出請求,否則,秒殺業務根據請求規則再做處理!

AMQP實戰篇:消息隊列的定義及其應用場景

(4)群聊通訊:

在聊天室,每個用戶發送的消息都存在中間件,然後每個用戶都可接收到其他用戶的消息!

AMQP實戰篇:消息隊列的定義及其應用場景

接下來會講解中間件rabbitMQ的幾種概念模型!有疑問的同學可以私信哦!

喜歡的同學,記得收藏、點贊、轉發、關注了哦!


分享到:


相關文章: