MQ概念溫習

2021-10-22 12:58:14 字數 1367 閱讀 8605

一.我理解的mq核心元件

mq由一般由三個核心元件組成-> producer -> comsumer -> broker。

二.元件介紹

其中生產者和消費者是比較容易理解的,乙個是生產訊息推送到佇列,乙個是接收訊息進行訊息的消費,其中消費過程可能涉及到ack(ack即訊息確認機制), 比較複雜的就是broker(中間人,感覺有點像抓包的原理,即雙向**)

broker(訊息中轉角色),負責儲存訊息,**訊息。 可以理解為訊息佇列伺服器,提供了訊息的接收、儲存、拉取和**服務。broker是rocketmq的核心,它不不能掛的,所以需要保證broker的高可用。

三.broker的組成

broker視為mq的核心,他也是乙個服務,那它自然也是有很多概念(不叫元件是因為有些確實只能作為概念)所組成,以rabbit為例,其有exchange,channel,queue

在amqp模型中,exchange是接受生產者訊息並將訊息路由到訊息佇列的關鍵元件。exchangetype和binding決定了訊息的路由規則。所以生產者想要傳送訊息,首先必須要宣告乙個exchange和該exchange對應的binding。可以通過 exchangedeclare和bindingdeclare完成。在rabbit mq中,宣告乙個exchange需要三個引數:exchangename,exchangetype和durable。exchangename是該exchange的名字,該屬性在建立binding和生產者通過publish推送訊息時需要指定。exchangetype,指exchange的型別,在rabbitmq中,有三種型別的exchange:direct ,fanout和topic,不同的exchange會表現出不同路由行為。durable是該exchange的持久化屬性,這個會在訊息持久化章節討論。宣告乙個binding需要提供乙個queuename,exchangename和bindingkey。

channel是我們與rabbitmq打交道的最重要的乙個介面,我們大部分的業務操作是在channel這個介面中完成的,包括定義queue、定義exchange、繫結queue與exchange、發布訊息等。如果每一次訪問rabbitmq都建立乙個connection,在訊息量大的時候建立tcp connection的開銷將是巨大的,效率也較低。channel是在connection內部建立的邏輯連線,如果應用程式支援多執行緒,通常每個thread建立單獨的channel進行通訊,amqp method包含了channel id幫助客戶端和message broker識別channel,所以channel之間是完全隔離的。channel作為輕量級的connection極大減少了作業系統建立tcp connection的開銷。

queue:存放message的對列,每個訊息都會被投到乙個或多個佇列。

MQ基本概念

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

MQ的基本概念

mq全稱 message queue 訊息佇列 是在訊息的傳輸過程中儲存訊息的容器。多用於分布式系統之間進 行通訊。優勢 應用解耦 系統的耦合性越高,容錯性就越低,可維護性就越低。使用 mq 使得應用間解耦,提公升容錯性和可維護性。非同步提速 提公升使用者體驗和系統吞吐量 單位時間內處理請求的數目 ...

MQ訊息佇列相關概念 MQ分類及如何選擇

1.1.1.什麼是mq mq message queue 從字面意思上看,本質是個佇列,fifo 先入先出,只不過佇列中存放的內容是message 而已,還是一種跨程序的通訊機制,用於上下游傳遞訊息。在網際網路架構中,mq 是一種非常常見的上下游 邏輯解耦 物理解耦 的訊息通訊服務。使用了 mq 之...