「訊息不迷路:為什麼我們需要 Message Queue、Message Broker 與 Event Broker?」

更新 發佈閱讀 6 分鐘

隔了兩年多沒有在部落格留下文字,這段時間因為工作異常忙碌,卻也收穫頗多。除了累積更多的專案實戰經驗外,也在日常中不斷摸索與學習,特別是在 大規模資料流處理 以及 高併發服務的開發與維護 上,都有了更深的體會。

今天想和大家聊聊我近期在系統設計上常碰到的一個重要主題 —— 事件驅動架構 (Event-Driven Architecture, EDA) 中經常被使用與討論的兩項技術:Message Queue 與 Event Broker

在提到 Message Queue 之前,我們需要先知道甚麼是「Queue」。

Queue (佇列) 是電腦科學中一個常見的資料結構,它的特性是 FIFO (First-In-First-Out,先進先出),也就是最先進入佇列的資料,會最先被取出處理。這樣的行為就像日常生活中排隊買東西一樣:先排隊的人先被服務。

在分散式系統與應用整合中,Message Queue 正是基於這樣的概念設計,用來可靠地處理訊息傳遞,讓不同服務之間能夠解耦合、平衡流量、並避免資料遺失。

raw-image

那甚麼是 Message Queue 與 Message Broker 呢?

訊息佇列(Message Queue,MQ),本質就是個佇列,具有 FIFO (First-In-First-Out) 先入先出的特性,只不過佇列中存放的內容不是物件、檔案,而是message。

其主要用途可以在不同服務、不同程序或不同執行緒之間更有效地處理資料流。

而為了讓開發者能更專注在程式邏輯的撰寫上,目前已經有許多第三方服務提供了 Message Queue 的能力,我們通常將這類服務稱為 Message Broker

換句話說,像是 訊息的儲存、重試機制、可靠傳遞 等細節,我們不需要再從零實作,因為這些 Message Broker 本身就已經內建了相應的功能。

常見的例子包括 Azure Service BusRabbitMQ 等,它們都能幫助我們快速構建穩定的訊息傳遞管道。

除此之外,這些 Message Broker 更進一步擴大以 Queue 為基礎的功能,譬如可以讓訊息被延遲傳遞(Delayed/Scheduled Message) 或是實作如在 Java 中的資料結構 PriorityQueue 的功能,可以讓訊息針對不同的優先級進行傳遞等等。

Event Broker (事件代理)

這裡我們必須了解另外一個名詞「Event Broker」。

Event Broker(事件代理)是一種 中介軟體 (Middleware),主要負責協調 事件的發布與訂閱。在事件驅動架構 (EDA) 中,Event Broker 提供基礎的訊息傳遞能力:當應用程式發佈事件時,事件會先送達 Event Broker,然後由 Event Broker 根據 訂閱規則 將事件傳遞給對應的消費者。

與 Message Broker 相比,Event Broker 除了具備基本的訊息傳遞與 Queue/Topic 支援外,還提供更進階的能力,例如:

  • 動態路由 (Dynamic Routing):支援精準、萬用字元 (wildcard)、甚至基於內容的事件過濾。
  • 事件回放 (Replay):允許消費者重新取得過去的事件。
  • 跨區域 / 多雲的事件網格 (Event Mesh)

因此,我們可以理解成:Message Broker 強調可靠傳遞,而 Event Broker 則著重在大規模的事件流處理與靈活的路由能力

常見的產品如「Solace」、「Azure Event Grid」、「Apache Kafka」等等都已經是相當成熟的工具。

那,為甚麼我們需要 Message Broker 跟 Event Broker呢?

舉例來說,在高併發的場景下,一秒鐘的 request 可能高達數十萬甚至百萬,這時候如果沒有對應的機制去處理這些流量或是同步狀態,很有可能你的服務或系統就會被打爆了,更不可能透過傳統的 Database 去處理,因為,在資料庫中,資源是固定的,例如建立時就已經決定好 CPU Core 數與記憶體容量,更不可能進行動態的水平或垂直擴展。

因此,我們需要這些 Broker 來協助處理各種高併發場景,例如 電子商務的下單流程金融交易的即時撮合,或是 IoT 裝置的大量資料上傳

透過 Message Broker 或 Event Broker 的能力,我們可以將瞬間湧入的請求進行緩衝、分流與可靠傳遞,避免後端服務因流量過載而崩潰。

這些 Broker 若能與進一步 分散式系統 (如 Kubernetes, K8s) 結合,便能發揮更高的彈性與可用性。系統不僅能夠自動擴展應對高峰流量,還能在發生故障時快速恢復,整體架構因此具備了更好的 穩定性 (Stability) 與 高可用性 (High Availability)

總結來說,Message Broker 與 Event Broker 在現代分散式系統中,已經不再只是「可有可無」的輔助,而是應對 高併發事件驅動架構 (EDA)、以及 跨系統整合 的關鍵基礎建設。


留言
avatar-img
留言分享你的想法!
avatar-img
格蘭特的沙龍
14會員
18內容數
還在為不知道怎麼面試而煩惱嗎? 還在為苦無面試機會而沮喪嗎? 別擔心~讓我們一起面對! 在專題中,我將以自身經驗傳授如何撰寫履歷以及分享面試經驗。
格蘭特的沙龍的其他內容
2023/10/26
嗨!我是格蘭特,歡迎來到軟體工程師面試大哉問! 近二十家公司面試經驗大公開,本篇是系列文的第八篇。 這篇將繼續分享上一篇在遊戲橘子的面試經驗。
Thumbnail
2023/10/26
嗨!我是格蘭特,歡迎來到軟體工程師面試大哉問! 近二十家公司面試經驗大公開,本篇是系列文的第八篇。 這篇將繼續分享上一篇在遊戲橘子的面試經驗。
Thumbnail
2023/07/18
嗨!我是格蘭特,歡迎來到軟體工程師面試大哉問! 近二十家公司面試經驗大公開,本篇是系列文的第七篇。 格蘭特這次要分享的是在遊戲領域中的佼佼者,自產及代理多種知名遊戲的遊戲橘子(Gamania)。 本次機會是由 Headhunter 在 LinkedIn 主動聯繫,職位是資深後端工程師。 由於篇
Thumbnail
2023/07/18
嗨!我是格蘭特,歡迎來到軟體工程師面試大哉問! 近二十家公司面試經驗大公開,本篇是系列文的第七篇。 格蘭特這次要分享的是在遊戲領域中的佼佼者,自產及代理多種知名遊戲的遊戲橘子(Gamania)。 本次機會是由 Headhunter 在 LinkedIn 主動聯繫,職位是資深後端工程師。 由於篇
Thumbnail
2023/04/06
歡迎來到格蘭特的私房好書,本文是專題系列文的第二篇。 因工作上有些事情需要處理,讓這個專題延宕了幾個月,希望大家不要見怪 :D。 今天要與大家一同閱讀的是 Annette Simmons 所著的《你的團隊需要一個會說故事的人》。 作者:Annette Simmons (安奈特.西蒙斯) 出版社:先覺
Thumbnail
2023/04/06
歡迎來到格蘭特的私房好書,本文是專題系列文的第二篇。 因工作上有些事情需要處理,讓這個專題延宕了幾個月,希望大家不要見怪 :D。 今天要與大家一同閱讀的是 Annette Simmons 所著的《你的團隊需要一個會說故事的人》。 作者:Annette Simmons (安奈特.西蒙斯) 出版社:先覺
Thumbnail
看更多
你可能也想看
Thumbnail
嶄新的台灣獨立調香師品牌Sunkronizo ,這個名稱源自希臘語「同步」的意思。讓香氛不單純只是氣味調製,更是個人風格的展現與靈魂意志延伸的一種溝通語言。 很適合接下來年底聖誕佳節送禮的試香組,以一星期中的日子來為全系列香氛產品命名, 是品牌創立後首個推出全系列概念作品...
Thumbnail
嶄新的台灣獨立調香師品牌Sunkronizo ,這個名稱源自希臘語「同步」的意思。讓香氛不單純只是氣味調製,更是個人風格的展現與靈魂意志延伸的一種溝通語言。 很適合接下來年底聖誕佳節送禮的試香組,以一星期中的日子來為全系列香氛產品命名, 是品牌創立後首個推出全系列概念作品...
Thumbnail
根據美國電影協會(MPA)主辦的「串流服務如何推動臺灣創意經濟」論壇內容,深入探討串流平臺對臺灣影視產業的影響、數據分析、政府政策建議、內容國際化策略,以及臺灣與「韓流」的差距。文章提出 awwrated 在串流生態系中的潛在角色,強調數據、策略與自信是臺灣影視產業發展的關鍵。
Thumbnail
根據美國電影協會(MPA)主辦的「串流服務如何推動臺灣創意經濟」論壇內容,深入探討串流平臺對臺灣影視產業的影響、數據分析、政府政策建議、內容國際化策略,以及臺灣與「韓流」的差距。文章提出 awwrated 在串流生態系中的潛在角色,強調數據、策略與自信是臺灣影視產業發展的關鍵。
Thumbnail
本文探討串流平臺(VOD)如何徹底改變好萊塢和臺灣影視產業的生態。從美國電影協會(MPA)的數據報告,揭示串流服務在臺灣的驚人普及率與在地內容的消費趨勢。文章分析國際作品如何透過在地化元素開拓新市場。同時,作者也擔憂政府過度監管可能扼殺臺灣影視創新自由,以越南為鑑,呼籲以開放態度擁抱串流時代的新機遇
Thumbnail
本文探討串流平臺(VOD)如何徹底改變好萊塢和臺灣影視產業的生態。從美國電影協會(MPA)的數據報告,揭示串流服務在臺灣的驚人普及率與在地內容的消費趨勢。文章分析國際作品如何透過在地化元素開拓新市場。同時,作者也擔憂政府過度監管可能扼殺臺灣影視創新自由,以越南為鑑,呼籲以開放態度擁抱串流時代的新機遇
Thumbnail
我們在「【Message Queue - Kafka】不斷的試誤…, 用Docker來嘗試安裝Kafka」有介紹如何架設kafka, 其中我們使用環境變數來進行kafka的配置, 但除了環境變數之外, 其實還能夠用檔案配置的方式來對kafka進行配置, 如此一來我們就可以將配置檔與啟動檔完全分開,
Thumbnail
我們在「【Message Queue - Kafka】不斷的試誤…, 用Docker來嘗試安裝Kafka」有介紹如何架設kafka, 其中我們使用環境變數來進行kafka的配置, 但除了環境變數之外, 其實還能夠用檔案配置的方式來對kafka進行配置, 如此一來我們就可以將配置檔與啟動檔完全分開,
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
KSQL引擎, 串流形式的SQL? 聽了應該霧煞煞吧! 想像一下傳統的SQL, 是不是一個指令一個動作, 每發送一個指令之後就必須等到查詢/寫入…動作皆完成之後才回應, 然而在Streaming的應用上這顯然不太可行, 每分每秒都有資料流入的情境下, 資料的狀態都在變化, 假設我們一個指令一個動作,
Thumbnail
KSQL引擎, 串流形式的SQL? 聽了應該霧煞煞吧! 想像一下傳統的SQL, 是不是一個指令一個動作, 每發送一個指令之後就必須等到查詢/寫入…動作皆完成之後才回應, 然而在Streaming的應用上這顯然不太可行, 每分每秒都有資料流入的情境下, 資料的狀態都在變化, 假設我們一個指令一個動作,
Thumbnail
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
Thumbnail
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
Thumbnail
公告佈達看似簡單,但如何做好才是關鍵。 只有透過適時而有效的公告,才能確保重要訊息的及時傳達,促進員工的共識和配合 最終提升整體的運營效率,為企業持續發展注入動力!
Thumbnail
公告佈達看似簡單,但如何做好才是關鍵。 只有透過適時而有效的公告,才能確保重要訊息的及時傳達,促進員工的共識和配合 最終提升整體的運營效率,為企業持續發展注入動力!
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
有時候工作信件上的來來往往百百種,但不外乎就是約會議時間、討論內容、回應問題或是向對方提出要求,這邊就列出一些模擬的情境跟相關信件做為參考。
Thumbnail
有時候工作信件上的來來往往百百種,但不外乎就是約會議時間、討論內容、回應問題或是向對方提出要求,這邊就列出一些模擬的情境跟相關信件做為參考。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News