訊息佇列(Message Queue)基本概念

2021-07-09 23:56:46 字數 787 閱讀 6946

之前做日誌收集模組時,用到flume。另外也有的方案,整合kafaka來提公升系統可擴充套件性,其中涉及到訊息佇列當時自己並不清楚為什麼要使用訊息佇列。而在我自己提出的原始日誌採集方案中不適用訊息佇列時,有幾個基本問題:1. 日誌檔案上傳過程,有個基本的生產者-消費者問題;2. 另外系統崩潰時,資料丟失的處理問題。

今天,幾位同事再次談到訊息佇列這麼個東西,很nb的樣子,我也想弄清楚,ok,搞起。

訊息佇列(message queue,簡稱mq),從字面意思上看,本質是個佇列,fifo先入先出,只不過佇列中存放的內容是message而已。其主要用途:不同程序process/執行緒thread之間通訊。為什麼會產生訊息佇列?這個問題問的好,我大概查了一下,沒有查到最初產生訊息佇列的背景,但我猜測可能幾個原因:

不管到底是什麼原因催生了訊息佇列,總之,上面兩個猜測是其實際應用的典型場景。

切合前一部分猜測的訊息佇列產生背景,其主要解決兩個問題:

下面針對系統解耦、訊息快取兩點,來分析實際應用訊息佇列過程中,可能遇到的問題。虛擬場景:process_a通過訊息佇列mq_1向process_b傳遞訊息,幾個問題:

不要著急,閱讀了下面的簡要介紹後,水到渠成,上面幾個問題就可以解決了。 訊息佇列有如下幾個好處,這大都是由其系統解耦和訊息快取兩點擴充套件而來的:

提公升系統可擴充套件性:

其他:

訊息佇列 訊息佇列

輪詢排程 一次性分發所有訊息,保證訊息平均分配,不管消費者是否能正常消費 訊息應答 保證消費端能確實消費,不丟失 公平 乙個乙個分發所有訊息,在保證分發到的執行緒確認回覆後,才分發下個訊息給下個空閒的消費者,訊息持久化 保證佇列中的訊息不丟失,包括3要素 交換器 訊息佇列 訊息都必須宣告持久化 發布...

訊息佇列 訊息佇列 kafka

kafka是乙個分布式的基於發布 訂閱模式的訊息佇列,主要用於大資料實時處理領域。要理解kafka首先要有分布式的概念,要有訊息佇列的概念。分布式系統最大的優勢就是解耦和削峰,這種情況下,a系統生成了乙個訊息,b系統非同步獲取,那麼就需要乙個存放訊息的訊息佇列 mq 相比較傳統的訊息佇列,訊息被消費...

linux訊息佇列 Linux訊息佇列

訊息佇列,unix的通訊機制之一,可以理解為是乙個存放訊息 資料 容器。將訊息寫入訊息佇列,然後再從訊息佇列中取訊息,一般來說是先進先出的順序。可以解決兩個程序的讀寫速度不同 處理資料速度不同 系統耦合等問題,而且訊息佇列裡的訊息哪怕程序崩潰了也不會消失。最簡單的訊息記憶體的使用流程 ftok函式生...