「訊息不迷路:為什麼我們需要 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
格蘭特的沙龍
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
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
創業者常因資金困境而無法抓住機會,利用房產活化讓二胎房貸成為財務策略的有力夥伴。 諮詢國峯厝好貸的二胎房貸服務,讓你的房子成為你最強力的天使投資人,推動事業成長。
Thumbnail
創業者常因資金困境而無法抓住機會,利用房產活化讓二胎房貸成為財務策略的有力夥伴。 諮詢國峯厝好貸的二胎房貸服務,讓你的房子成為你最強力的天使投資人,推動事業成長。
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
有時候工作信件上的來來往往百百種,但不外乎就是約會議時間、討論內容、回應問題或是向對方提出要求,這邊就列出一些模擬的情境跟相關信件做為參考。
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News